html - PdfSharp、GDI+ 和 HTML 打印

标签 html pdf gdi+ pdfsharp

我目前有一个从 AJAX 页面调用的“PrintingWebService”,其中包含使用 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)。

最佳答案

托尼,

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

另一个免费软件 iTextSharp 可以让您灵活地将 HTML 写入 PDF,我过去曾使用过它并取得了很大成功。

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

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

希望这对您有所帮助。

关于html - PdfSharp、GDI+ 和 HTML 打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611112/

相关文章:

javascript - 所需文件上传进度条

Android,使用拖放在pdf上附加电子签名

javascript - jspdf/pdfmake 创建 PDF 与将页面打印为 PDF 的好处?

javascript - 响应式菜单和使用 Javascripts 获取宽度问题

php - 表单更新用户尚未更新的字段 - PHP 查询

c++ - 如何创建实心箭头 CustomLineCap?

.net - Graphics.Save 与 Graphics.BeginContainer

c# - 对于随机图像,GDI+ 中发生一般错误

javascript - 即使使用 .on,Ajax 调用也只能使用一次

java - 无法导入 com.itextpdf.text.pdf.PdfReader