【发布时间】:2012-08-23 21:08:02
【问题描述】:
我正在根据模板批量生成 pdf 文件,但很快就遇到了很大的性能问题。 我目前的情况如下:
- 从数据库中获取要填充的数据
- 基于单个数据行和pdf表单创建fdf
- 将
.fdf文件写入磁盘 - 使用 pdftk 将 pdf 与 fdf 合并(使用 flatten 命令的 fill_form)
- 继续遍历行,直到生成所有
.pdf's - 最后将所有生成的文件合并在一起,并将单个pdf提供给客户端
我使用passthru 将原始输出提供给客户端(节省写入文件的时间),但这只是一点性能改进。 200 条记录的总操作时间约为 50 秒,我想以某种方式缩短到至少 10 秒。
理想的情况是在内存中操作所有这些 pdf,而不是将它们中的每一个都写入单独的文件,但是由于我无法将此类数据传递给 pdftk 等外部工具,因此无法输出。
另一个想法是生成一个包含所有这些行的大 .fdf 文件,但看起来这是不允许的。
我在这里遗漏了一些非常微不足道的东西吗?
感谢您的任何建议。
PS。我知道我可以使用一些好的库,比如 pdflib,但我现在只考虑开放许可库。
编辑:
我正在弄清楚使用相同 pdf 作为模板构建具有多个页面的 .fdf 文件的语法,花了几个小时但找不到任何好的文档。
【问题讨论】:
-
你能不能用一些像 xdebug 这样的分析工具和 webgrind 看看什么事情实际上需要时间(然后你可以解决这个问题),几天前我遇到了同样的情况,正在使用 open源排队系统在我的情况下需要时间。我使用的是 dompdf,它又是开源解决方案。
-
我进行了分析,主要是花费大量时间编写单独的 pdf 文件。
-
为什么不并行运行 6 或 7 次 pdftk 转换,这样可以将您的总时间降至 10 秒的阈值。
标签: php pdf pdf-generation pdftk fdf