PHP 中的 HTML 表格到 PDF - DOMPDF 和 html2ps/pdf 都不起作用
很长一段时间以来,我一直在尝试将包含大型表格的 HTML 页面转换为 PHP。这些是用 CSS 设计的,可能有几页长。
我首先尝试了 DOMPDF。它的效果很好,直到文档超过一页为止。我发现所有修复都不起作用。要么出错,要么任何元素(甚至部分位于第二页)都会集中在第一页的内容上。我已经尝试了最新版本和今天查看的 SVN 副本。
我还尝试了 html2ps/pdf,它给我写入缓存目录时出现“权限被拒绝”错误,即使该目录是完全可写的。系统要求测试脚本通过。服务器在 IIS 下运行 PHP 5(不是我的选择,呵呵)。
这些中的任何一个都可以被说服工作吗?或者是否有一个库可以做到这一点?
演示/测试脚本中的错误:
警告:file_put_contents(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/7d888258e9745b3716532ea81342daaf.css.compiled) [function.file-put-contents]: 无法打开流:第 33 行 C:\Inetpub\wwwroot\JM\pdf\html2ps\css.cache.class.php 中的权限被拒绝
警告:fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps \cache/unicode.lb.classes.dat) [function.fopen]: 无法打开流: C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php 第 991 行的权限被拒绝
警告:flock() 期望参数 1 为资源,布尔值在 C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php 第 992 行给出
警告:fwrite():提供的参数不是 C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php 第 1011 行中的有效流资源
(此错误重复数千次)
<代码> 警告:fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z) [function.fopen]:无法打开流:C:\Inetpub\wwwroot\JM\pdf\html2ps\ 中的权限被拒绝pdf.fpdf.makefont.php 第 318 行
无法写入文件 C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z
For the longest time now I've been trying to convert HTML pages containing large tables to PHP. These are styled with CSS and can be several pages long.
I first tried DOMPDF. It works great, until a document is more than one page. None of the fixes I've found work. Either it errors out, or any element that would be even partially on the second page gets lumped over the content of page 1. I've tried both the latest release and the SVN copy I checked out today.
I also tried html2ps/pdf, and it gives me "permission denied" errors writing to the cache directory, even though the directory is fully writable. The system requirements test script passes. The server is running PHP 5 under IIS (not my choice heh).
Can either of these be convinced to work, or is there a library that can do it?
Errors from the demo/test scripts:
Warning: file_put_contents(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/7d888258e9745b3716532ea81342daaf.css.compiled) [function.file-put-contents]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\css.cache.class.php on line 33
Warning: fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/unicode.lb.classes.dat) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 991
Warning: flock() expects parameter 1 to be resource, boolean given in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 992
Warning: fwrite(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 1011
(this error repeats several thousand times)
Warning: fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\pdf.fpdf.makefont.php on line 318
Can't write to file C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此处讨论了 IIS 下 html2pdf 的类似问题< /a>.
解决方案非常简单,但很奇怪。如果这对您没有帮助,完整的错误消息和/或一点代码将帮助我帮助您。
A similar problem with html2pdf under IIS has been discussed here.
The solution was quite simple, yet weird. If this doesn't help you, a full error-message and / or a little bit of code would help me to help you.
我个人推荐命令行应用程序而不是任何 PHP 库。
原因:
PHP 库需要更多时间和内存(缓存)来进行转换过程。
它们仅需要格式良好的 HTML 页面,否则会引发错误或警告。
不支持外部样式表。
命令行工具:
如果您在 Linux 服务器上运行脚本,那么我建议使用命令行工具。
原因:
与 PHP 库相比,它们速度极快。
支持CSS。
接受格式不正确的 HTML。
使用哪个命令行工具?
有关更多信息,请参阅使用 PHP 将 HTML 转换为 PDF(不是 PDF 转换为 HTML)。
I personally recommend command line applications instead of any PHP libraries.
Reasons :
PHP libraries need more time and memory (cache) for conversion process.
They need well-formatted HTML pages only, otherwise throw errors or warnings.
No support for external style sheets.
Command Line Tool:
If you run your script on a Linux server then I suggest command line tools.
Reasons :
They are extremely fast compared to PHP libraries.
Support CSS.
Accept non-well-formatted HTML.
Which command line tool to use?
For more information refer to Converting HTML to PDF (not PDF to HTML) using PHP.