2009-03-04 92 views
2

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

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

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

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

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

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

回答

2

托尼,

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

另一个免费的软件,可以让你将HTML编写成PDF的灵活性,我以前用过的很成功的是iTextSharp。

否则,我认为你必须编写一些东西来呈现HTML到GDI。

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

希望这会有所帮助。

+0

谢谢,我会检查出来的。 就旧的浏览器支持而言,这是一个内部项目,所以我对支持的浏览器和版本有更多的奢侈品。但它需要记住。 – 2009-03-04 17:02:37