我有一个 PHP 应用程序,需要生成一些带有漂亮页眉/页脚的 PDF 发票和 PDF 时间表。一些 Stackoverflow 用户建议使用 TCPDF 创建 PDF 文档。在我的研究中,我发现了两种生成 PDF 的方法:

1)以编程方式格式化 PDF,如下所示:

    $tcpdf->SetFillColor(255, 0, 0);
    $tcpdf->SetTextColor(255);
    $tcpdf->SetDrawColor(128, 0, 0);
    $tcpdf->SetLineWidth(0.3);
    $tcpdf->SetFont('', 'B');

2) 将 HTML 转换为 PDF

我如何决定应该使用哪种方法?

有帮助吗?

解决方案

我可以推荐 Zend_Pdf ,这是一种程序化方法。你的分类。

HTML抽象很不错但我不相信你拥有完整的几何绘图API的全部功能和控制。警惕像fpdf这样的库不支持开箱即用的UTF-8,并使用穷人的解析器将HTML转换为PDF。

关于您的申请,我制作了一个生成模板发票的系统。我的用户可以上传由Zend_Pdf提取的PDF模板。然后,此模板将用于生成的发票的每个页面,从而可以轻松进行自定义。

请注意,我的观众主要是能够制作这些模板的平面设计师,因此这是适当的解决方案。如果您的受众只熟悉HTML,那么将HTML转换为PDF可能是最佳方式。

其他提示

我总是建议动态创建PDF,但是基于可以使用最终用户工具编辑的模板,或者至少 - 不必是程序员。在你的情况下,那可能是HTML。对我来说,理想的解决方案是采用Office模板,以编程方式填充值,并在技术上尽可能将其输出为PDF。我使用 tbsOOO 在PHP中填写办公室模板,它运行良好。

使用基于模板的方法而不是从头开始生成文档的主要原因:用户可以根据需要设计模板,并且在设计需要更改时不需要。 (并且它需要更改一天。)只有当插入的数据需要以某种方式更改或扩展时,程序员才会发挥作用。这是你背后的巨大工作量。

您好,有两种选择。您可以使用 dompdf ,这样您就可以设计文档作为一个常规的HTML文档和它与CSS的风格。您可以将此文档转换为pdf。我的经历很好。我使用Zend_View渲染一个常规的html页面并将其转换为pdf。这样您就拥有了一个非常灵活的模板,因为您可以在生成html的视图中做出各种显示决策。

→请参阅 css-compatability列表

或者您可以使用 livedocx 。这也允许基于模板的方法,但更严格和更少html。 Zend Framework的集成即将推出。

我对这三种方法都有丰富的经验:

  1. 使用TCPDF以编程方式创建文档(尽管它是从FPDF派生的,但DOES支持开箱即用的UTF-8)。虽然我是Zend Framework的忠实粉丝,但需要注意的是Zend_Pdf在其功能集中还不够丰富,无法以这种方式使用。

  2. 让图形设计师创建模板,使用Zend_Pdf加载它,然后向其中添加其他内容。 Zend_Pdf(1.10.2 - 1.10.7)在这种情况下工作得相当好,除了试图实例化一个新页面并将其添加到文档中时 - 这引发了大量错误。

  3. 使用htmldoc从HTML转换为PDF。这种方法很糟糕,但主要是由于htmldoc的限制。

  4. 我没有使用TCPDF进行HTML到PDF的转换,但从代码的整体质量来判断,我猜它会做得很好。 (我确实将TCPDF推向极限,包括在RTL字符集,中文等中渲染图形丰富的文档,并且它已经完美地执行了)。因此,如果您决定以编程方式执行此操作,我建议您使用TCPDF,但如果您有一个来自图形设计器的漂亮模板并且打算只在顶部添加内容,则使用Zend_Pdf加载它并从中进行修改是一个合理的选择(尽管你仍然会最终实现自动换行和其他一些基本的东西。)

我还建议将 HTML 转换为 PDF:

  • 更容易实现
  • 以后更改布局/设计更容易
  • 您可能可以重用页面的一些 html

当我曾经为我使用的网站创建 PDF 生成时 html2ps 然后稍后将附记转换为pdf。

我建议使用程序化格式。

在.net世界中,我对html到pdf转换器有着明显的负面体验。它们似乎分为两类:

那些'解析'你的HTML并试图把它变成pdf的人。这些通常缺少一些非常基本的功能,如样式表和支持除基于表格的布局之外的任何东西。

将你的html'打印'成图像并将其粘贴到pdf中的那些。这些实际上可以产生一个体面的文档。它们似乎通过将浏览器链接到库中而导致线程问题和性能不佳。

我有直接pdf apis的平庸经验但是php似乎在这方面有一些明显更好的库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top