使用 PHP 将 HTML 转换为 PDF(不是 PDF 到 HTML) [已关闭]

2022-08-30 16:44:21

我是一名PHP开发人员,在我的一个项目中,我需要将一些HTML文档(大约30到50页)转换为PDF文档。

我的搜索发现了以下可能的解决方案。其中包括一些PHP库和一些命令行应用程序。每种方法都有自己的优点和缺点。

PHP 库:

  1. fpdf (需要更多精力来转换)
  2. tcpdf(需要更多精力来转换)
  3. html2fpdf http://html2fpdf.sourceforge.net
  4. html2pdf http://html2pdf.fr/
  5. dompdf http://code.google.com/p/dompdf/(与其他相比,效果很好)

对于每个库,我都有这样的问题:

  1. 需要很长时间(转换30个HTML页面超过五分钟)
  2. 需要太多资源(内存和时间)

    (我在php中设置了以下参数.ini:

    max_execution_time = 600
    memory_limit = 250M

    但事情仍然不起作用。

  3. 需要HTML页面格式正确(例如,没有丢失的关闭标记)

当我尝试转换简单的HTML文档(五个或更少的页面,带有很少的CSS)时,所有这些都有效。

命令行应用程序

与上述库相比,所有命令行应用程序都可以完美且非常快速地工作,但只有当我直接在控制台上运行它们时。当我尝试在PHP中将它们与或一起使用时,它们会给我错误。exec()system()

以下是命令行应用程序及其在PHP中运行时的错误:

  1. html2pdf (http://www.tufat.com/s_html2ps_html2pdf.htm)

    html2pdf:11380): Gtk-警告 **: 无法打开显示: :0.0
    未指定协议

  2. 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

  3. htmltopdf (http://www.ultrashareware.com/html-to-pdf.htm)

所以现在我正在寻求帮助。任何人都可以回答:

哪个PHP库在我的情况下工作得很好?

为什么这些错误会发生在命令行应用程序中?


答案 1

关于wkhtmltopdf

  • 这个东西的工作速度非常快,它也可以处理你扔给它的各种HTML / CSS,所以当你需要速度时,你应该认真考虑它。我们最近在公司中切换到它,我们的PDF服务得到了巨大的速度提升。

  • 至少在Linux下,它需要安装XOrg库 - 服务器通常没有它们,所以这可能是你的问题。


答案 2

试试这个:


推荐