【发布时间】:2010-10-05 13:51:15
【问题描述】:
我有一个 ASP.NET 网页,它是一个动态生成的报告。出于业务原因,此准确报告需要以 PDF 格式生成。最好的方法是什么?无法将所选打印机设置为 Adobe PDF。
学习从头开始以编程方式创建 PDF?有没有办法在某些浏览器控件中呈现它,然后保存输出?
【问题讨论】:
我有一个 ASP.NET 网页,它是一个动态生成的报告。出于业务原因,此准确报告需要以 PDF 格式生成。最好的方法是什么?无法将所选打印机设置为 Adobe PDF。
学习从头开始以编程方式创建 PDF?有没有办法在某些浏览器控件中呈现它,然后保存输出?
【问题讨论】:
wkhtmltopdf - 我在 Windows 中编译它,效果很好。它使用 WebKit(Safari、Chrome 等)将 HTML 页面呈现为 PDF,而且是免费的!
【讨论】:
去年我做了一个PDF的项目,刚刚学会了PDF格式,对此我很高兴。
PDF specification 是免费提供的,作为程序员,PDF 非常易于访问和理解。 PDF 是纯文本文档,可以选择压缩。每页都是一个笛卡尔平面,您可以在其上一个接一个地绘制几何形状。它是低级的,是为软件生成量身定做的。显然有高级的东西,比如字形和东西,但就像任何架构良好的技术一样,如果你愿意,你可以坚持使用抽象层。
是否做直接PDF取决于你文档的复杂程度。对于具有简单图形、文本和图像之类的基本内容(例如,发票是一个不错的选择),那么我会直接编写 PDF。您将获得良好的体验并完全掌控一切。
对于更复杂的东西,比如表格和饼图(PDF 太低级,无法直接编写),我会考虑使用某种库或工具包。
【讨论】:
您是否查看过 SQL Server 报告服务?如果您使用的是 MSSQL 2005/2008,那么您可能已经拥有报告服务,您只需要对其进行配置。您可以在那里托管您的报告,只需几行代码即可将报告作为 PDF 文件获取。
//create the web request for the report based on a URL that will define export
//format, parameter values, etc.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(reportUrl);
//send creditials if necessary
request.Credentials = new NetworkCredential(userName, password);
//response will contain the PDF file as a stream
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
这里有一个link 可能也有帮助
【讨论】:
如果报告是网格(可能是),this blog post using iTextSharp 可能会有所帮助。 iTextSharp 很好,也是我见过的最完整的 C# PDF API。
【讨论】:
如果您正在寻找开源解决方案或 $$ 解决方案,您没有提到您?
但这里有一个开源转换器:http://sourceforge.net/projects/itextsharp/ 这是相当不错的。
【讨论】:
我不知道 ABCpdf .NET 是否免费,但我听说过它的好消息。我认为它可以直接将 HTML 文件呈现为 PDF。
http://www.websupergoo.com/abcpdf-5.htm
我使用过 PDFsharp(假设您将 C# 与 ASP 结合使用)并且效果很好。据我所知,它不会呈现 HTML。
【讨论】: