0

很长一段时间以来,我一直在尝试将包含大型表格的 HTML 页面转换为 PHP。这些是用 CSS 设计的,可以有几页长。

我首先尝试了 DOMPDF。它工作得很好,直到文档超过一页。我没有找到任何修复工作。要么它出错,要么任何甚至部分位于第二页的元素都被集中在第 1 页的内容上。我已经尝试了最新版本和我今天签出的 SVN 副本。

我还尝试了 html2ps/pdf,它给了我写入缓存目录的“权限被拒绝”错误,即使该目录是完全可写的。系统需求测试脚本通过。服务器在 IIS 下运行 PHP 5(不是我的选择,呵呵)。

是否可以说服其中任何一个起作用,或者是否有图书馆可以做到?

来自演示/测试脚本的错误:

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(此错误重复数千次)

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

4

2 回答 2

0

这里讨论了 IIS 下的 html2pdf 的类似问题。

解决方案很简单,但很奇怪。如果这对您没有帮助,完整的错误消息和/或一些代码将帮助我帮助您。

于 2009-08-14T21:13:15.820 回答
0

我个人推荐命令行应用程序而不是任何 PHP 库。

原因:

  1. PHP 库需要更多的时间和内存(缓存)来进行转换过程。

  2. 他们只需要格式良好的 HTML 页面,否则会引发错误或警告。

  3. 不支持外部样式表。

命令行工具:

如果您在 Linux 服务器上运行脚本,那么我建议您使用命令行工具。

原因:

  1. 与 PHP 库相比,它们非常快。

  2. 支持 CSS。

  3. 接受格式不正确的 HTML。

使用哪个命令行工具?

  1. wkhtmltopdf
  2. htmltopdf
  3. html2pdf

有关更多信息,请参阅使用 PHP 将 HTML 转换为 PDF(不是 PDF 为 HTML)

于 2009-09-18T11:44:52.793 回答