use*_*877 4 c# pdf asp.net stream
有谁能告诉我如何将pdf流式传输到新的标签浏览器?我只是在内存上有pdf流,当我点击链接在新标签页或窗口浏览器中显示PDF时我想要.我怎么能这样做?谢谢!!!
我有这个链接:
<a id="hrefPdf" runat="server" href="#" target="_blank"><asp:Literal ID="PdfName" runat="server"></asp:Literal></a>
Run Code Online (Sandbox Code Playgroud)
在我的代码后面我在onload事件上有这个:
Stream pdf= getPdf
if (pdf != null)
{
SetLinkPDF(pdf);
}
private void SetLinkPDF(IFile pdf)
{
hrefPdf.href = "MyPDF to the Browser"
PdfName.Text = pdf.PdfName;
}
Run Code Online (Sandbox Code Playgroud)
不过,我必须处理流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>
Run Code Online (Sandbox Code Playgroud)
谢谢!!!
tim*_*ck2 12
我是从磁盘上的文件中完成的 - 从内存流中发送数据应该不会有太大的不同.除了数据本身之外,您还需要向浏览器提供两个元数据.首先,您需要提供数据的MIME类型(在您的情况下application/pdf
),然后是Content-Length标头中的数据大小(以整数形式),然后发送数据本身.
总而言之(考虑到评论以及我认为您的要求,您的标记将如下所示:
<asp:LinkButton ID="whatever" runat="server" OnClick="lnkButton_Click"
OnClientClick="aspnetForm.target='_blank';">your link text</aspnet:LinkButton>
Run Code Online (Sandbox Code Playgroud)
你的代码中的这几行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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23513 次 |
最近记录: |