使用PHP将HTML + CSS转换为PDF?
我有一个在Firefox 3和IE 7中呈现良好的HTML(不是XHTML)文档。它使用相当基本的CSS来设计它,并且在HTML中渲染得很好。
我现在正在将它转换为PDF。 我努力了:
我尝试了一款名为Html2Pdf Pilot的Windows应用程序,它实际上做了一件相当不错的工作,但我需要的东西至少在Linux上运行,理想情况下通过Web服务器上的PHP按需运行。
我错过了什么,或者我该如何解决这个问题?
重要提示:请注意,这个答案是在2009年编写的,它可能不是当今2018年最具成本效益的解决方案。浏览器和其他开源渲染器在这方面比现在好得多。
看看PrinceXML。
这绝对是最好的HTML / CSS到PDF转换器,虽然它不是免费的(但是,嘿,你的编程也可能不是免费的,所以如果它节省了你10个小时的工作,你可以免费回家(因为你也需要考虑到替代解决方案将要求您使用正确的软件设置专用服务器)
哦,是的,我提到过,这是第一个(也可能是唯一一个)完全支持ACID2的HTML2PDF解决方案吗?
PrinceXML示例
看看wkhtmltopdf
。 它是开源的,基于webkit和免费。
我们在这里写了一个小教程。
编辑(2017):
如果今天要建造一些东西,我就不会再走这条路了。
但会改用http://pdfkit.org/。
可能会剥离它的所有nodejs依赖关系,以在浏览器中运行。
经过一些调查和一般的拉动解决方案似乎是HTML2PDF。 DOMPDF在表格,边界和适度复杂的布局方面做得很糟糕,htmldoc看起来相当健壮,但几乎完全是CSS,并且我不想回到没有CSS的情况下为HTML编写程序。
HTML2PDF看起来是最有希望的,但我一直有关于node_type的空引用参数的奇怪错误。 我终于找到了解决办法。 基本上,PHP 5.1.x在任何大小的字符串上都可以正常替换(preg_replace_ *)。 PHP 5.2.1引入了一个名为pcre.backtrack_limit的php.ini配置指令。 这个配置参数的作用是限制匹配完成的字符串长度。 为什么这是介绍我不知道。 默认值被选为100,000。 为什么这么低的价值? 再次,不知道。
PHP 5.2.1针对此问题提出了一个漏洞,该漏洞几乎在两年后才开放。
有什么可怕的是,当超过限制时,替换只是默默地失败 。 至少如果提出并记录了一个错误,你会发现发生了什么事情,为什么要修改它以及如何修改它。 但不是。
所以我有一个70k的HTML文件转换为PDF。 它需要以下php.ini设置:
现在精明的读者可能已经注意到我的HTML文件小于100k。 我可以猜测出为什么我遇到这个问题的唯一原因是,html2pdf将转换为xhtml作为过程的一部分。 也许这让我感到厌倦(尽管近50%的膨胀似乎很奇怪)。 无论如何,上述工作。
现在,html2pdf是一个资源管理器。 我的70k文件大约需要5分钟,至少需要500-600M的RAM才能创建35页的PDF文件。 不幸的是,由于实时下载不够快,存储器使用率使内存使用率达到1000比1(对于70k文件,内存使用量为600M),这是非常荒谬的。
不幸的是,这是我所想到的最好的。
链接地址: http://www.djcxy.com/p/297.html