HTML to PDF与通过PHP以编程方式创建PDF
我有一个PHP应用程序需要生成一些PDF发票和PDF页面以及漂亮的页眉/页脚。某些Stackoverflow用户建议使用TCPDF来创建PDF文档。在我的研究,我发现了两种方法来生成PDF文件:HTML to PDF与通过PHP以编程方式创建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可能是最好的方法。
链接被破坏 – 2017-08-22 17:43:52
Zend_Pdf被放弃 - https://github.com/zendframework/ZendPdf - 他们推荐[TCPDF](https://tcpdf.org/)作为替代。 – 2017-12-03 23:12:38
我总是建议动态创建PDF,但要基于可以使用最终用户工具编辑的模板,或者 - 至少 - 不必是程序员。在你的情况下,这可能是HTML。对我而言,理想的解决方案是采用Office模板,以编程方式填充值,并在技术上尽可能将其输出到PDF。我使用tbsOOO在PHP中做了办公室模板填充部分,效果很好。
主要原因使用基于模板的方法在产生从头文档:用户能够设计模板,因为他们认为合适的,并且在设计时就需要改变,你将不再需要。 (并且它将需要更改一天。)只有当插入的数据需要以某种方式更改或扩展时,编程器才会发挥作用。这背负着巨大的工作量。
我还建议将HTML转换为PDF格式:
- 这是比较容易实现
- 这是比较容易改变布局/设计后
- 你也许可以重复使用页面的某些HTML
当我曾经创造了一个PDF生成一个网站我用html2ps然后转换后记为pdf后。
嗨,你有两个选择。您可以使用dompdf,它使您能够将文档设计为常规html文档并使用css进行设计。你可以把这个文件变成pdf。我的经历很好。我使用Zend_View渲染一个普通的html页面,并将其转化为pdf。这样你就有了一个非常灵活的模板,因为你可以在你的html生成视图中做出各种显示决定。请参阅list of css-compatability。
或者你可以使用livedocx。这也允许基于模板的方法,但更严格和无html。 A integration for Zend Framework正在进行中。
我建议编程格式。
在.net世界中,我对html转换为pdf转换器有明显的负面经历。他们似乎分为两类:
那些'解析'你的html,并试图把它变成pdf。这些通常缺少一些非常基本的功能,如样式表和对基于表格的布局的支持。
将您的html“打印”为图片并将其粘贴到pdf中的那些。这些实际上可以产生一个体面的文件。他们似乎通过将浏览器链接到引起线程问题和性能不佳的库中来工作。
我对直接的pdf apis有平庸的经验,但php似乎在这方面有一些更好的库。
对于php世界来说,这是完全不同的。像Zend_Pdf这样的编程库是吸引人的。就像我建议的那样,dompdf在html中对pdf很好。它没有链接图书馆的浏览器或类似的东西(没有人会想到这一点) – 2009-11-28 14:04:21
我有足够的经验,所有的三种方法:
创建文档以编程方式使用TCPDF(其中,尽管它是从FPDF得出,不支持UTF-8开箱即用)。虽然我是Zend Framework的忠实粉丝,但是需要注意的是,Zend_Pdf的功能集还不够丰富,因此无法使用这种方式。
让一位图形设计师创建一个模板,使用Zend_Pdf加载它,然后向其中添加额外的内容。 Zend_Pdf(1.10.2 - 1.10.7)在这种情况下工作得很好,除了尝试实例化新页面并将其添加到文档时 - 这会导致大量错误。
使用htmldoc从HTML转换为PDF。这种方法很糟糕,但主要是由于htmldoc的限制。
我还没有使用TCPDF进行HTML到PDF的转换,但是根据代码的整体质量来判断,我猜测它会做得很好。 (我真的推动TCPDF达到极限,包括在RTL字符集,中文等中渲染图形丰富的文档,并且它的表现完美无瑕)。所以,如果你决定以编程的方式来做,我会建议使用TCPDF,但是如果你有一个平面设计师的好模板,并打算只在顶部添加东西,用Zend_Pdf加载并从那里修改是一个合理的选择(尽管你仍然会实现文字换行和其他一些基本的东西)。
这是一个很好的教程,我相信它肯定会帮助你[在网站上动态创建PDF文件的教程](http://blog.geotitles.com/2011/09/tutorial-on-dynamically-creating-pdf-文件在网站/) – 2011-09-10 18:42:01
上面的链接似乎是陈旧了。 – srm 2016-11-23 22:42:54