我正在基于模板大量生成pdf文件,而且我遇到了很快的性能问题。 我目前的情况如下:
.fdf
文件写入磁盘.pdf
我使用passthru
将原始输出提供给客户端(节省编写文件的时间),但这只是一点性能改进。对于200条记录,总操作时间约为50秒,我想以某种方式降低至少10秒。
理想的情况是在内存中运行所有这些pdf,而不是将它们中的每一个写入单独的文件,但是输出将无法完成,因为我无法将这种数据传递给外部工具,如pdftk。
另一个想法是生成一个包含所有这些行的大.fdf
个文件,但看起来不允许这样做。
我在这里遗漏了一些非常微不足道的东西吗?
我很感谢你的任何建议。
PS。我知道我可以使用像pdflib这样的好库,但我现在只考虑开放的许可库。
修改
我要弄清楚使用相同的pdf作为模板构建具有多个页面的.fdf
文件的语法,花费几个小时并且找不到任何好的文档。
答案 0 :(得分:1)
在长期面对同样的问题之后(想要基于LaTeX生成我的pdf)我终于决定转向另一种粗略但有效的技术:
我分两步生成我的pdf:首先我使用twig或smarty等模板引擎生成html。第二,我使用mpdf生成pdfs。我尝试了很多其他的html2pdf框架并最终使用了mpdf,它非常成熟并且很久以来一直在开发(频繁更新,功能丰富)。使用这种技术的好处:你可以使用css来设计你的文档(mpdf完全具有css功能) - 它带有css好处(http://www.csszengarden.com)并且非常容易生成动态表。
Mpdf解析html表并查找theader,tfooter元素,如果表的大小超过一个页面大小,则将其放在每个页面上。您还可以使用动态实体(如page nr等)定义页眉和页脚元素。
我知道,使用这种绕道似乎是一种解决方法,但说实话,没有乳胶,pdf无论什么引擎都像html一样强大和简单!
答案 1 :(得分:0)
答案 2 :(得分:0)
这对您的多页问题没有帮助,但我注意到pdftk接受-
字符表示'从标准输入读取'。
您可以通过它的stdin将.fdf
发送到pdftk进程,以避免将它们写入磁盘。