gpt4 book ai didi

c# - 将 PDF 流式传输到浏览器?

转载 作者:太空狗 更新时间:2023-10-30 00:07:52 26 4
gpt4 key购买 nike

谁能告诉我如何将 pdf 流式传输到新的标签浏览器?我只有内存中的 pdf 流,当我点击链接时我想要在新选项卡或窗口浏览器中显示 PDF。我怎么能那样做?谢谢!!!

我有这个链接:

<a id="hrefPdf" runat="server" href="#" target="_blank"><asp:Literal ID="PdfName" runat="server"></asp:Literal></a>

在我后面的代码中,我在 onload 事件上有这个:

                Stream pdf= getPdf
if (pdf != null)
{
SetLinkPDF(pdf);
}

private void SetLinkPDF(IFile pdf)
{
hrefPdf.href = "MyPDF to the Browser"
PdfName.Text = pdf.PdfName;
}

我必须以某种方式处理流 pdf(IFile 包含 PDF 的名称、流、元数据等)

我能做些什么来处理这个以及当我点击时在新的浏览器上显示流?

我有另一个问题,OnClientClick="aspnetForm.target='_blank';"不工作timbck2 建议我。我必须在新窗口中打开文件(图像或 pdf ),我该怎么办?这个不行。谢谢!

Timbbck2 我的 asp 代码是:

<asp:LinkButton runat="server" ID="LinkButtonFile" OnClick="LinkButtonFile_Click" OnClientClick="aspnetForm.target = '_blank';"></asp:LinkButton>

谢谢!!!

最佳答案

我是从磁盘上的一个文件中完成的——从内存流发送数据应该没有太大的不同。除了数据本身之外,您还需要向浏览器提供两部分元数据。首先,您需要提供数据的 MIME 类型(在您的情况下为 application/pdf),然后在 Content-Length header 中提供以字节(整数)为单位的数据大小,然后发送数据本身。

所以总而言之(考虑到评论和我认为你在问什么,你的标记看起来像这样:

<asp:LinkButton ID="whatever" runat="server" OnClick="lnkButton_Click" 
OnClientClick="aspnetForm.target='_blank';">your link text</aspnet:LinkButton>

后面代码中的这几行 C# 代码应该可以解决问题(或多或少):

protected void lnkButton_Click(object sender, EventArgs e)
{
Response.ClearContent();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "inline; filename=" + docName);
Response.AddHeader("Content-Length", docSize.ToString());
Response.BinaryWrite((byte[])docStream);
Response.End();
}

关于c# - 将 PDF 流式传输到浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16193960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com