使用PHP将HTML + CSS转换为PDF?



14 Answers

看看wkhtmltopdf 。 它是开源的,基于webkit和免费。

我们here写了一个小教程。

编辑(2017):

如果今天要建造一些东西,我就不会再走这条路了。
但会改用http://pdfkit.org/
可能剥离它的所有nodejs依赖关系,以在浏览器中运行。

Question

好的,我现在正在用这个砖头撞墙。

我有一个在Firefox 3和IE 7中呈现良好的HTML(不是XHTML)文档。它使用相当基本的CSS来设置它的样式,并且在HTML中呈现良好。

我现在正在将它转换为PDF。 我努力了:

  • DOMPDF :它有很多表格问题。 我分解了我的大型嵌套表,并且它有所帮助(在它耗尽高达128M的内存然后死去之前 - 这是我在php.ini中对内存的限制),但它使得表格变得非常混乱,似乎并没有得到图片。 这些表只是基本的东西,有些边框样式可以在不同的点添加一些线条;
  • HTML2PDF和HTML2PS :我其实有更好的运气。 它呈现了一些图像(所有图像都是谷歌图表网址),表格格式更好,但它似乎有一些复杂性问题,我还没有弄清楚,并且一直伴随着未知的node_type()错误。 不知道该从哪里出发; 和
  • Htmldoc :这对于基本的HTML似乎工作得很好,但几乎不支持CSS,所以你必须用HTML做所有事情(我没有意识到它仍然是2001年在Htmldoc-land中),所以对我来说是没用的。

我尝试了一个名为Html2Pdf Pilot的Windows应用程序,它实际上做了一个相当不错的工作,但我需要的东西至少在Linux上运行,理想情况下通过Web服务器上的PHP按需运行。

我真的不敢相信我会陷入困境。 我错过了什么吗?







精细的渲染并不意味着什么。 它是否验证?

无论输入有多糟糕,所有浏览器都尽可能在屏幕上显示某些内容。 当然,他们不会做同样的事情。 如果你想和FireFox一样的渲染,你可以使用它的渲染引擎。 有它的pdf生成器。 虽然这是一项非常多的工作。




我推荐TCPDF或DOMPDF,是这样的顺序




结帐TCPDF 。 它具有一些HTML到PDF的功能,可能足以满足您的需求。 它也是免费的!




不是PHP ,而是一个Java ,它执行以下任务:

Flying Saucer采用XML或XHTML并将CSS 2.1兼容的样式表应用于其中,以渲染为PDF

它可以从PHP通过system()或类似的调用使用。 尽管它需要input XML格式良好。




最初在开篇中提到的HTML2PDF和HTML2PS正在谈论2009年的一个包裹,这个包裹现在已经断开

但是有一个更好的HTML2PDF

它基于TCPDF,尽管它部分用法语。

您可以在页面上重复使用表格页眉或页脚,并具有页码和总页数。 看看它的例子 。 我已经使用了三年多,并推荐它。




好消息! Snappy

Snappy是一个非常简单的开源PHP5库,允许从url或html页面生成缩略图,快照或PDF。 而且......它使用了优秀的基于webkit的wkhtmltopdf

请享用! ^ _ ^




这个问题已经很老了,但没有看到任何人提到CutyCapt所以我会:)

CutyCapt

CutyCapt是一个小型的跨平台命令行工具,用于捕获WebKit将网页呈现为各种矢量和位图格式,包括SVG,PDF,PS,PNG,JPEG,TIFF,GIF和BMP




那么如果你想找到一个完美的XHTML + CSS到PDF转换器库,忘记它。 这远非可能。 因为它就像找到一个完美的浏览器(XHTML + CSS渲染引擎)。 我们有吗? IE还是FF?

我在DOMPDF方面取得了一些成功。 问题是你必须修改你的HTML + CSS代码才能使用图书馆的工作方式。 除此之外,我有很好的结果。

见下文:

原始HTML

将HTML转换为PDF




尝试抓住最新的每晚dompdf构建 - 我使用的是一个较老的版本,这是一个可怕的资源猪,并永远采取我的PDF格式。 从here抓住一晚之后。

它只需要几秒钟就可以生成PDF,而且它与PrinceXML / Docraptor一样可以很好地渲染。 似乎他们自从我上次使用它以来已经认真优化了dompdf代码!




我不认为一个PHP类将是用CSS呈现xHtml页面的最佳选择。

当新的css规则出来时会发生什么? (很快css 3.0 ...)

显而易见,呈现html页面的最佳方式是浏览器。 Firefox 3.0可以本地“打印”为pdf格式,torisugary开发了一个扩展(命令行打印)来使用它。 在这里你会找到它。

无论如何,仍然有许多问题runninr firefox 只是作为一个PDF转换器...

目前,我认为wkhtmltopdf是最好的(这是Safari浏览器使用的),快速,快速,真棒。 是的,开源,以及... wkhtmltopdf




我正在使用fpdf来使用php生成pdf文件。 到目前为止,它对我来说工作很好,可以生成简单的输出。




你为什么不尝试mPDF 2.0版 ? 我用它来创建PDF文档。 它工作正常。

与此同时,mPDF版本为5.7,与HTML2PS / HTML2PDF相比,它得到了积极维护

但请记住,文档确实很难处理。 例如,看看这个页面: https://mpdf.github.io/https://mpdf.github.io/

基于html到pdf的非常基本的任务可以通过这个库来完成,但是更复杂的任务需要一些时间来阅读和理解文档。




HTML to PDF转换是否真的需要使用PHP在服务器端进行?

我刚刚遇到了jsPDF ,这是一个使用HTML5 / JavaScript的客户端解决方案。 麻省理工学院许可的代码也在GitHub上






Related