【发布时间】:2010-11-27 02:11:30
【问题描述】:
我是一名 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 = 600memory_limit = 250M但还是不行。)
HTML 页面需要格式正确(例如,没有丢失关闭标签)
当我尝试转换简单的 HTML 文档(只有很少的 CSS 的五个或更少页面)时,所有这些都可以工作
命令行应用程序
与上述库相比,所有命令行应用程序都可以完美且非常快速地运行,但只有当我直接在控制台上运行它们时。当我尝试通过 exec() 或 system() 在 PHP 中使用它们时,它们会给我错误。
以下是我在 PHP 中运行时的命令行应用程序及其错误:
-
html2pdf (http://www.tufat.com/s_html2ps_html2pdf.htm)
html2pdf:11380): Gtk-WARNING **: 无法打开显示: :0.0
未指定协议 -
wkhtmltopdf
加载页面:10%
加载页面:33%
加载页面:100%
等待重定向
输出页面
QPainter::begin():返回 false
QPainter::begin():返回 false
QPainter::save: Painter 未激活
QPainter::scale:Painter 未激活
QPainter::setRenderHint:Painter 必须处于活动状态才能设置渲染提示
QPainter::setBrush: Painter 未激活
QPainter::pen: Painter 未激活
QPainter::setPen: Painter 未激活 htmltopdf (http://www.ultrashareware.com/html-to-pdf.htm)
所以现在我正在寻求帮助。谁能回答:
哪个 PHP 库适合我的情况?
为什么命令行应用程序会出现这些错误?
【问题讨论】:
-
报错“Gtk-WARNING **: cannot open display::0.0”是因为应用使用了windowing系统。我猜这个错误是因为应用程序在生成 PDF 后尝试打开它?
-
不,生成后无法打开pdf。但是在控制台中使用它时会打开一个小窗口。
-
因为有很多问题与这个问题相似但又不完全相同,所以我决定尝试将 HTML 到 PDF 转换器的完整列表收集到一个社区 wiki 问题stackoverflow.com/questions/3178448/…
标签: php html pdf pdf-generation