我用谷歌搜索了这个,搜索了这个,查看了SO和其他网站(我一直试图在这个问题上阅读几个小时),但我仍然无法找到一个令人满意的解决办法似乎是一个简单,常见的编程问题。
让我设置场景:
到目前为止我尝试的每个解决方案都有一些基本问题:
我无法理解!我真的是桌面开发人员,在Windows中这是 EASY !为什么网络这么难?
我是愚蠢的,这真是一项简单的练习,还是这项基本任务真的很难?
请帮助我指出正确的方向!
感谢!!!
答案 0 :(得分:7)
您是否尝试使用content-disposition-inline添加http标头?您也可能希望将结果直接写入输出响应而不是保存它。这将确保文件实际路径不会显示为您直接将其写入响应。
例如
Response.ContentType = "application/pdf";
Response.AddHeader("Content-disposition","inline");
Response.BinaryWrite(myfilestream.ToArray());
如果myfilestream是一个内存流,或者如果你已经有一个blob的字节数组,你可以直接将它写入响应而不用toarray
答案 1 :(得分:5)
此链接可能对您有用,
http://nilangshah.wordpress.com/2007/05/28/successfully-stream-a-pdf-to-browser-through-https/
您可以通过为链接指定target =“_ blank”,在新标签页中打开pdf。博客中提到的ByteArray是来自DB的BLOB。希望这会有所帮助。
答案 2 :(得分:1)
ASP.Net有一个ReportViewer
服务器控件,可用于显示PDF文件。
有关此功能的大部分文档都是关于如何生成报告并将其导出为PDF。 MSDN真的不是很有帮助。我想每个人都依赖Adobe Reader而不是寻找替代方案?
但也可以导入并显示PDF 。此代码似乎适用于this user:
public static void RenderToPdf(ReportViewer reportViewer, Boolean forceDownload)
{
string path = (string.IsNullOrEmpty(reportViewer.LocalReport.ReportPath)) ? reportViewer.ServerReport.ReportPath : reportViewer.LocalReport.ReportPath;
RenderToPdf(reportViewer, forceDownload, System.IO.Path.GetFileNameWithoutExtension(path));
}
public static void RenderToPdf(ReportViewer reportViewer, Boolean forceDownload, string fileNameWithoutExtension)
{
HttpContext context = HttpContext.Current;
if (!context.Response.Buffer)
{
return; //can not clear the buffer, so exit
}
//define out properties
Warning[] warnings;
string mimeType, encoding, fileNameExtension;
string[] streams;
//get pdf content
Byte[] pdfContent = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
//cancel and clear the existing output!
context.Response.Clear();
context.Response.ContentType = "application/pdf";
//add a header so that the user can save the target as a downloaded file
if (forceDownload)
{
context.Response.AddHeader("Content-disposition", string.Format("attachment; filename={0}.pdf", fileNameWithoutExtension));
}
context.Response.BinaryWrite(pdfContent);
context.Response.End();
}
答案 3 :(得分:0)
这是我在ASP.NET(aspx)页面中在浏览器中打开PDF文档的方法。 在OnLoad页面中:
this.Response.Clear();
this.Response.Buffer = true;
this.Response.ContentType = "application/pdf";
this.Response.AddHeader("content-length", pdfReportStream.Length.ToString());
this.Response.BinaryWrite(pdfReportStream.ToByteArray());
this.Response.End();
答案 4 :(得分:0)
如果您正在寻找客户端pdf客户端,您可以查看PDF.js,它可以显示包含默认查看器的任何PDF(您必须转换viewer.html进入视图,如果在MVC,但它很容易)。 它是开源和活着的。我必须通过评论js中的一些行来稍微调整它以便能够在iphone(数字签名)上显示pdf注释。