2

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

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

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

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

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

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

4

1 回答 1

2

托尼,

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

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

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

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

希望这可以帮助。

于 2009-03-04T15:50:38.457 回答