Asp.net 从MVC视图中的数据库渲染PDF?
我想知道在MVC3中不使用第三方组件是否可以做到这一点。(尽管我对免费组件持开放态度。)这里有几个链接,但它们似乎主要关注报告和其他声称做这类事情的代码示例,但它们似乎没有编译。我在数据库中保存和检索PDF时没有遇到任何问题,但当我将PDF作为Asp.net 从MVC视图中的数据库渲染PDF?,asp.net,asp.net-mvc,asp.net-mvc-3,pdf,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Pdf,我想知道在MVC3中不使用第三方组件是否可以做到这一点。(尽管我对免费组件持开放态度。)这里有几个链接,但它们似乎主要关注报告和其他声称做这类事情的代码示例,但它们似乎没有编译。我在数据库中保存和检索PDF时没有遇到任何问题,但当我将PDF作为文件或文件流结果返回时,会提示用户下载。更理想的方法是在浏览器中实际渲染PDF。我看过iTextSHarp,它在一定程度上起到了作用,但它不是一个完整的解决方案。例如,当且仅当客户端安装了Adobe Reader时,它才会在视图中显示PDF,否则会提示下载
文件
或文件流结果
返回时,会提示用户下载。更理想的方法是在浏览器中实际渲染PDF。我看过iTextSHarp,它在一定程度上起到了作用,但它不是一个完整的解决方案。例如,当且仅当客户端安装了Adobe Reader时,它才会在视图中显示PDF,否则会提示下载。所以从技术上讲,我主要是寻找一个PDF浏览器。有什么想法吗?是这个问题的解决方案。是这个问题的解决方案。我一直在使用iTextSharp,效果很好。我可以在单独的窗口中打开pdf,甚至在没有安装Adobe的情况下(我在我的公司中使用Foxit Reader)。实际上,在我的例子中,我根本没有使用iTextSharp
我的观点:
<a href="@Url.Action("RetreiveFile", "File", new { id = fileId })" target="_blank">
OpenPdf
</a>
public ActionResult RetreiveFile(int id)
{
ComplexClass myClass= _FileModel.GetFile(id);
byte[] img = myClass.ContentData.ToArray();
Response.AppendHeader("Content-Disposition", "inline; filename=xyz.pdf");
return File(img, "application/pdf");
}
而我的contentdata作为二进制数据存储在数据库中
无论如何,也许我误解了你的问题,但这就是我在项目中处理pdf的方式,我的浏览器从不要求我下载pdf:)
问候。我一直在使用iTextSharp,效果很好。我可以在单独的窗口中打开pdf,甚至在没有安装Adobe的情况下(我在我的公司中使用Foxit Reader)。实际上,在我的例子中,我根本没有使用iTextSharp 我的观点:
<a href="@Url.Action("RetreiveFile", "File", new { id = fileId })" target="_blank">
OpenPdf
</a>
public ActionResult RetreiveFile(int id)
{
ComplexClass myClass= _FileModel.GetFile(id);
byte[] img = myClass.ContentData.ToArray();
Response.AppendHeader("Content-Disposition", "inline; filename=xyz.pdf");
return File(img, "application/pdf");
}
而我的contentdata作为二进制数据存储在数据库中
无论如何,也许我误解了你的问题,但这就是我在项目中处理pdf的方式,我的浏览器从不要求我下载pdf:)
问候。到目前为止,似乎是最好的解决方案,尽管我还没有尝试过。它需要移植到C#,并使MVC兼容,但如果您不想在第三方组件上花费太多,这似乎是一种方法
编辑12月4日
我花了好几天的时间寻找解决办法,我想我已经找到了一个很好的解决办法。ghostscript转换器已经有很多C#包装器,为什么不推出自己的方案呢?(我最终还是这么做了)。包装纸:
如果您想要更实用的解决方案,下面有两篇关于Codeproject的精彩文章:
然而,我觉得解决方案仍然不是最优的。例如,Ghostscript转换器与文件目录一起工作,这意味着您必须在磁盘上生成PDF文件的物理副本,以便转换器使用,如果使用字节数组可以实现这一点,则效果会更好。不过,也许有办法解决这个问题
编辑12月21日
最后,为了完整性和回答实际问题:
经过进一步研究,我得出结论,目前最好的PDF查看器是神奇的库。我试过一些,对我来说这是目前为止最好的。我甚至尝试过第三方组件(),但即使这样也不如PDF.js那么一致或可靠。PDF.js的缺点是: