【问题标题】:Which one is the best PDF-API for PHP? [closed]哪一个是 PHP 的最佳 PDF-API? [关闭]
【发布时间】:2010-12-11 13:07:34
【问题描述】:

其中哪一个是 PHP 的最佳 PDF-API?

【问题讨论】:

标签: php pdf pdf-generation


【解决方案1】:

我个人更愿意使用tcpdf,它是 fpdf 的增强和维护版本。

【讨论】:

  • 您没有说明原因 - 一个很大的原因是 tcpdf 中的 Unicode 支持,而 fpdf 完全缺乏。 tcpdf 也仍在积极维护中。而且,它还有一个不错的面向对象架构。智者的话:fpdf 基本上是一个被 tcpdf 取代的旧东西。
  • tcpdf 缺少字体嵌入和子集(对亚洲语言很重要)等关键功能。
  • 我刚刚查看了 tcpdf 网站,它似乎确实支持字体子集和嵌入。查看 SetFont 方法的子集参数tcpdf.org/fonts.php
  • tcpdf 在我使用 urdu unicode 字体时遇到了一些问题。
  • 如果你调用一个有 24k 行代码的单个类“体面的 OO”,你一定很厉害。查看我重构的 FPDF 版本以了解实际的 OOP:github.com/bubach/PdfBuilder
【解决方案2】:

来自mpdf 网站: “mPDF 是一个 PHP 类,它从 UTF-8 编码的 HTML 生成 PDF 文件。它基于 FPDF 和 HTML2FPDF,并具有许多增强功能。”

mpdf 在语言处理和 UTF-8 支持方面优于 FPDF。对于 CJK 支持,它不仅支持字体嵌入,还支持字体子集(因此您的 CJK PDF 不会过大)。 TCPDF 和 FPDF 对 mpdf 的 UTF-8 和字体支持没有任何影响。从 5.0 版开始,它甚至还附带了一些开源字体。

【讨论】:

    【解决方案3】:

    这只是对 fPDF 在每个库最基本功能的性能方面如何与 tcPDF 相比的快速回顾。

    速度测试

    使用 fPDF 处理 2000 个 PDF 文件需要 17.0366 秒 || 使用 tcPDF 处理 2000 个 PDF 文件需要 79.5982 秒

    文件大小检查(以字节为单位)

    788 fPDF || 1,860 tcPDF

    使用的代码尽可能相同,并且只呈现没有文本的干净 PDF 文件。这也是使用截至 2011 年 6 月 22 日的每个库的最新版本。

    【讨论】:

    • 有许多性能增强可以大大提高 TCPDF 的速度(我从创建单个文件的 1 分钟到大约 0.5 秒):tcpdf.org/performances.php
    • 那些“增强”同样适用于 FPDF,但对基准测试没有帮助。 TCPDF 大约有 24 000 行代码,而 FPDF 大约有 2400 行代码。
    • 更新到@DanSmart 的链接:tcpdf.org/docs/performances
    【解决方案4】:

    我发现 mpdf 在 html 渲染方面比 tcpdf 更好。 它可以更好地解析 css 样式并创建看起来与原始 html 非常相似的 pdf。

    mpdf 甚至支持诸如边框半径和渐变等 css 内容。

    我很惊讶为什么 mpdf 在谈到 html 到 pdf 时很少被谈论。

    在这里查看示例http://www.mpdf1.com/mpdf/index.php?page=Examples

    我发现它对于设计发票、收据和简单的打印等很有用。 然而,网站本身表示从 mpdf 生成的 pdf 的大小往往更大。

    【讨论】:

    • 链接已损坏。这可能是新链接:mpdf1.com/mpdf/index.php?page=Examples
    • 2019 年 8 月更新:参考mpdf.github.io
    • mpdf 不幸的是似乎不能很好地处理大型表格单元格。一旦内容超过一页,它就会开始按比例缩小,这对于任何有大表的项目来说都是无用的。除此之外;它易于使用、性能卓越且有据可查。
    【解决方案5】:

    试试TCPDF。我觉得它是迄今为止最好的。

    有关使用两个最流行的 pdf 生成类的详细教程:TCPDF 和 FPDF.. 请点击此链接:PHP: Easily create PDF on the fly with TCPDF and FPDF

    希望对你有帮助。

    【讨论】:

    • 在 Firefox 中有时会因连接重置而崩溃。不过还没有检查其他浏览器。
    【解决方案6】:

    我个人更喜欢将dompdf 用于简单的 PDF 页面,因为它非常快。您只需为其提供一个 HTML 源代码,它就会生成所需的页面。

    但是对于更复杂的设计,我更喜欢更经典的pdflib,它可以作为 PHP 的 pecl 使用。它可以更好地控制设计,并允许您进行更复杂的设计,例如像素完美的表单。

    【讨论】:

    • 但是使用 dompdf 的一个缺点是,如果您想一次或循环创建多个 pdf,它就不起作用。
    【解决方案7】:

    http://sourceforge.net/projects/html2ps/,如果您需要兼容 css 和 3c,是最好的。

    如果你可以在你的服务器上安装软件,我建议你使用http://wkhtmltopdf.org/

    还有一个使用 wkhtmltopdf 的 drupal 模块 :)

    PHP 需要很多资源来转换 pdf 中的 html,恕我直言,php 不是这样做的正确语言(如果您希望转换大量覆盖或大文件)

    【讨论】:

    • 我赞成 wkhtmltopdf,但尤其是当使用像使用外部转换器这样的方法时,PHP 不应归咎于速度损失。我认为从 asp.net 使用 wkhtmltopdf 或 Prince 几乎与从 PHP 一样快(尽管我使用 asp.net)。当然,PHP 没有 .net 的所有过程控制,但我敢打赌它对于大多数项目来说仍然足够快
    【解决方案8】:

    Zend 框架的Zend_Pdf 非常好。它在输出控制和复杂性方面与 pdflib 相当,并且由于它是一个纯 php 解决方案而更便携。也就是说,它比 pdflib 更慢并且使用更多内存。 Pecl 模块总是比 php 解决方案更有效。

    DOMPdf 是快速制作 pdf 的最简单方法。就像迈克说的,给它 html 并输出一个 pdf。在后台,它可以选择使用r&ospdfpdflib 作为渲染引擎。

    【讨论】:

    • Zend PDF 存在显着问题(如果您嵌入带有透明胶片的 PNG,则会出现性能问题)[framework.zend.com/issues/browse/ZF-3392].此外,Zend PDF 是用于更改 3rd 方 PDF 上的元数据的非常糟糕的工具,因为它无法处理接近完整 PDF 标准的任何内容并且它会崩溃。但是,如果您不需要这些功能,Zend PDF 可以很好地工作,并且具有良好的 UTF-8 支持。
    【解决方案9】:

    我个人从 PHP 生成 XSL:FO 并使用 Apache FOP 将其转换为 PDF。不是 PHP 原生解决方案,效率也不是很高,但即使您需要生成具有非常复杂布局的 PDF,它也能正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2011-09-26
      • 2011-08-12
      • 2016-05-22
      • 2011-10-04
      相关资源
      最近更新 更多