使用 PHP 将 HTML 转换为 PDF(不是 PDF 到 HTML) [已关闭]
我是一名PHP开发人员,在我的一个项目中,我需要将一些HTML文档(大约30到50页)转换为PDF文档。
我的搜索发现了以下可能的解决方案。其中包括一些PHP库和一些命令行应用程序。每种方法都有自己的优点和缺点。
PHP 库:
- fpdf (需要更多精力来转换)
- tcpdf(需要更多精力来转换)
- html2fpdf http://html2fpdf.sourceforge.net
- html2pdf http://html2pdf.fr/
- dompdf http://code.google.com/p/dompdf/(与其他相比,效果很好)
对于每个库,我都有这样的问题:
- 需要很长时间(转换30个HTML页面超过五分钟)
-
需要太多资源(内存和时间)
(我在php中设置了以下参数.ini:
max_execution_time = 600
memory_limit = 250M
但事情仍然不起作用。
需要HTML页面格式正确(例如,没有丢失的关闭标记)
当我尝试转换简单的HTML文档(五个或更少的页面,带有很少的CSS)时,所有这些都有效。
命令行应用程序
与上述库相比,所有命令行应用程序都可以完美且非常快速地工作,但只有当我直接在控制台上运行它们时。当我尝试在PHP中将它们与或一起使用时,它们会给我错误。exec()
system()
以下是命令行应用程序及其在PHP中运行时的错误:
-
html2pdf (http://www.tufat.com/s_html2ps_html2pdf.htm)
html2pdf:11380): Gtk-警告 **: 无法打开显示: :0.0
未指定协议 -
wkhtmltopdf
加载页面: 10%
加载页面: 33%
加载页面: 100%
等待重定向
输出页面
QPainter::begin(): 返回 false
QPainter::begin(): 返回 false
QPainter::保存: Painter 不活动
QPainter::Scale: Painter 不活动
QPainter::setRenderHint: Painter 必须处于活动状态才能设置渲染提示
QPainter::setBrush: Painter 未活动
QPainter::p en: Painter not活动
QPainter::setPen: Painter not active htmltopdf (http://www.ultrashareware.com/html-to-pdf.htm)
所以现在我正在寻求帮助。任何人都可以回答:
哪个PHP库在我的情况下工作得很好?
为什么这些错误会发生在命令行应用程序中?