首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pdftk在PHP中生成基于批量模板的pdf

用pdftk在PHP中生成基于批量模板的pdf
EN

Stack Overflow用户
提问于 2012-08-29 09:33:13
回答 3查看 2.2K关注 0票数 7

我正在做一个基于模板的pdf文件的批量生成,我很快就遇到了很大的性能问题。我目前的设想如下:

  1. 获取要从db填充的数据
  2. 基于单个数据行和pdf表单创建fdf
  3. .fdf文件写入磁盘
  4. 使用pdftk将pdf与fdf合并(fill_form使用flatten命令)
  5. 继续迭代行,直到生成所有的.pdf
  6. 最后将所有生成的文件合并在一起,并将单个pdf提供给客户端。

我使用passthru将原始输出提供给客户端(节省了编写文件的时间),但这只是性能上的一点改进。200张唱片的总操作时间约为50秒,我想在某种程度上减少到至少10秒。

理想的情况是在内存中操作所有这些pdfs,而不是将其中的每一个都写到单独的文件中,但是输出是不可能完成的,因为我不能像pdftk那样将这种数据传递给外部工具。另一个想法是生成一个包含所有这些行的大.fdf文件,但是看起来这是不允许的。

我是不是错过了一些很琐碎的东西?

我很感谢你的任何建议。

PS。我知道我可以使用一些好的库,如pdflib,但我现在只考虑开放的许可库。

编辑:

我想弄清楚语法,用相同的pdf作为模板构建一个包含多个页面的.fdf文件,花费了几个小时,找不到任何好的文档。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-07 05:27:18

在长期面临同样的问题(希望基于LaTeX生成pdfs )之后,我最终决定改用另一种粗糙但有效的技术:

我分两个步骤生成pdfs :首先,我使用像细枝或smarty这样的模板引擎生成html。其次,我使用mpdf来生成pdfs。我尝试了许多其他的html2pdf框架,最后使用了mpdf,它非常成熟,并且是长期开发的(频繁更新,功能丰富)。使用这种技术的好处:您可以使用css来设计您的文档(mpdf完全具有css功能),这与css好处(http://www.csszengarden.com)一起出现,并非常容易地生成动态表。

Mpdf解析html表并查找theader、tfooter元素,如果表大于一页大小,则将其放在每个页面上。此外,您还可以使用动态实体(如页、nr等)定义页眉和页脚元素。

我知道,使用这个迂回似乎是一个解决办法,但老实说,没有乳胶,pdf的引擎是一样强大和简单的html!

票数 1
EN

Stack Overflow用户

发布于 2012-09-01 18:26:54

尝试另一个不那么复杂的库,如fpdf (http://www.fpdf.org/)

我觉得它很好,很精巧。

始终找那些小的库,只做你需要他们做的事情。

图书馆越大,消耗的资源就越多。

票数 0
EN

Stack Overflow用户

发布于 2012-09-01 21:31:30

这无助于您的多页问题,但我注意到pdftk接受-字符的意思是“从标准输入中读取”。

您可以通过它的stdin将.fdf发送到pdftk进程,以避免将它们写入磁盘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12174838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档