【问题标题】:PdfSharp, GDI+ and HTML printingPdfSharp、GDI+ 和 HTML 打印
【发布时间】:2010-10-11 07:11:19
【问题描述】:

我目前有一个“PrintingWebService”,我从 AJAX 页面调用它,其中包含使用 PDF Sharp 和 PDFSharp 的 GDI+ 模式构建高度自定义的 PDF 打印输出所需的所有信息,该模式采用 DrawString 和其他基本上可以工作的命令像 GDI+ 一样,只是它们被绘制到 PDF。

然后我将 PDF 文件保存到网络服务器上的某个位置并从网络服务返回文件名,然后 AJAX 页面打开一个包含 pdf 文件的新窗口。

到目前为止,它运行良好,但是,我想要打印出我的 AJAX 页面的一部分,但我还没有想出解决方案。我有一个 TinyMCE 编辑器的 HTML 内容字符串,我想在 PDF 页面的底部显示。

我正在寻找可以用于此目的的某种工具。即使是打印到 GDI+ 的开源软件,我也可以通过获取源代码并将其翻译为使用 PdfSharp 的 GDI+(类名类似于 XGraphics,每个类在 GDI+ 名称前都有 X)来使用。

如果必须的话,我会限制 TinyMCE 可以生成的 HTML 并编写自己的渲染器,但这将是一个很大的挑战,所以我正在寻找其他解决方案。

我一直远离对打印机友好的页面方法,因为我想使用我现有的代码构建一个与现有 WinForms 打印输出几乎相同的页面。使用 PdfSharp,我能够转换除文本区域之外的所有代码(在 WinForms 版本中使用 RichTextBox 和 RTF)。

【问题讨论】:

    标签: html pdf gdi+ pdfsharp


    【解决方案1】:

    托尼,

    我个人使用 WebSupergoo 的 ABCPdf 库取得了很大的成功。您实际上可以将 HTML 直接呈现为 PDF,并且在准确性方面做得相当好。

    另一个让您灵活地将 HTML 写入 PDF 的免费软件是 iTextSharp。

    否则,我认为您必须编写一些东西来将 HTML 渲染到 GDI。

    无论哪种方式,您都可能需要考虑使用映射到的 HttpHandler,并使用您的 web.config 来生成 PDF 文件。这将允许您将 PDF 呈现为字节流,然后将其直接转储给用户(而不是必须将每个 PDF 收据保存到 Web 服务器)。它还允许您在返回收据的页面中使用 .pdf 扩展名(PurchaseReceipt.pdf 可以映射到 HttpHandler)...使其更加跨浏览器友好。如果您开始从 ASPX 页面抛出 PDF 字节流,旧版本的 Adob​​e / 浏览器将无法正确显示。

    希望这会有所帮助。

    【讨论】:

    • 谢谢,我去看看。就旧版浏览器支持而言,这是一个内部 IT 项目,因此就支持的浏览器和版本而言,我拥有更多的奢侈品。但要记住这一点。
    猜你喜欢
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多