我有一个HTML(而不是XHTML)文档,可以在Firefox3和IE7中显示良好。它使用相当基本的CSS来设置样式,并在HTML中呈现良好的效果。

我现在正在寻找一种将其转换为PDF的方法。我尝试过:

DOMPDF:它在表格方面存在巨大问题。我分解了我的大型嵌套表,这有助于(之前它只消耗了128M的内存,然后就死了——这是我在php.ini中的内存限制),但它把表弄得一团糟,而且似乎没有图像。这些表格只是一些基本的东西,带有一些边框样式,可以在各个点添加一些线条;HTML2PDF和HTML2PS:实际上我在这方面运气更好。它呈现了一些图像(所有图像都是Google Chart URL),表格格式要好得多,但它似乎有一些复杂性问题,我还没有弄清楚,并且一直因未知的node_type()错误而死亡。不知道从这里去哪里;和Htmldoc:这在基本的HTML上似乎很好,但几乎不支持CSS,所以你必须用HTML做所有的事情(我没有意识到在Htmldoc领域还是2001年…),所以这对我来说是无用的。

我尝试了一个名为Html2Pdf Pilot的Windows应用程序,它确实做得很好,但我需要至少在Linux上运行,最好通过Web服务器上的PHP按需运行的应用程序。

我缺少什么,或者如何解决这个问题?


当前回答

Web API

如果有人总是搜索这种东西,有一个免费的网站可以让你将html代码和页面转换为pdf。还有一个(非常小的)api,允许您从url获取pdf文件。

在这里检查

其他回答

Zend的devzone上有一个关于在没有任何外部库的情况下从php生成pdf的教程(第1部分,第2部分)。我从未实现过这种解决方案,但由于它都是php,所以您可能会发现它更灵活地实现和调试。

我使用fpdf使用PHP生成PDF文件。到目前为止,制作简单的输出对我来说效果很好。

看看wkhtmltopdf。它是开源的,基于webkit和免费。

我们在这里写了一个小教程。

编辑(2017):

如果今天要建造一些东西,我就不会再走那条路了。但会使用http://pdfkit.org/相反可能会剥离它所有的nodejs依赖项,以便在浏览器中运行。

我不认为php类是用css渲染xHtml页面的最佳方法。

当一个新的css规则出现时会发生什么?(很快css 3.0…)

显然,呈现html页面的最佳方式是浏览器。Firefox 3.0可以原生地以pdf格式“打印”,torissuent开发了一个扩展(命令行打印)来使用它。

无论如何,firefox作为pdf转换器仍有许多问题。。。

目前,我认为wkhtmltopdf是最好的(这是safari浏览器使用的),速度快,速度快。是的,也是开源的。。。看一看

虽然已经提供了许多解决方案,但我建议使用以下两种:

HTM2PDF-提供了一个将HTML转换为PDF的API,还具有一个PHP SDK,这使得它非常容易在PHP中实现;它提供了欧洲、亚洲和美国的服务器位置选择PDFmyURL-提供了一个API,可以将URL和HTML转换为PDF,功能与HTM2PDF大致相同,但在负载平衡的环境下工作,并且使用时间稍长

这两个API与前面提到的所有解决方案的不同之处在于,除了使用CSS和JavaScript将HTML转换为PDF之外,它还提供PDF权限管理、水印和加密。因此,这是一个为那些想要开始跑步的人提供的一体化解决方案。

免责声明:我在Kaiomi工作,这家公司同时运营这两个网站。