【发布时间】:2021-12-23 07:32:39
【问题描述】:
我的公司每周都会打印产品标签。我有一个 PHP 脚本,它使用 FPDI 生成一些 PDF 以发送到我们的印刷店。加起来大约有 500 页。一旦在 Acrobat 中打开,它们需要很长时间才能进行假脱机。 Acrobat 报告说,随着进度条的移动,每个页面都被“展平”了。
我们正在尝试简化流程以减少假脱机时间,因此我一直在尝试找到一种以编程方式展平文件的方法,但一直难以找到与目标相关的网络结果。
我发现的大部分内容似乎都与单页拼合有关。当我尝试遵循这些方法时,我最终会得到一个单页文件,其中所有其他页面相互重叠。
convert -density 300x300 -colorspace RGB file.pdf -quality 100 -flatten fileFlat.pdf
如果有人能帮助我指出正确的方向来模仿 Acrobat 正在做的事情,将不胜感激。
【问题讨论】:
-
我不熟悉这种扁平化过程,但我的第一个想法是避免尝试模仿 Acrobat 的做法,而只是创建一堆较小的 PDF。即,为每个标签创建一个 PDF,这样您就有 500 个单页文件。如果这个过程是自动化的,那么有多少并不重要。
-
嘿@AlexHowansky - 谢谢,但我不确定我们如何在印刷店结束时自动化流程。您有自动化 Acrobat 打印的经验吗?这些是大格式文件(Tabloid 11“x17”),我们需要N对1打印,所以我认为除了Acrobat之外没有任何其他方式可以打印
-
“您有自动化 Acrobat 打印的经验吗?” 好吧,不是使用 Acrobat,而是使用 postscript。我想也许你可以在你身边使用 FPDI 来预展平你的输入模板或你的结果输出。 setasign.com/products/setapdf-core/demos/flatten-annotations
-
我假设当您打印到不支持 PDF 的打印机时会发生这种“扁平化”。我的猜测是您的输入 PDF 文件包含透明度,而您(或您的打印店?)正在打印到 PostScript 打印机。 PostScript 不支持透明度。所以 Acrobat 只做它所能做的,把页面变成位图。是的,这很慢,结果很大。它还解释了为什么使用 Ghostscript 执行相同操作(pfimage 设备)时,您的文件从 86MB 变为 737 MB。如果可以的话,我建议去掉输入中的透明度。
-
正如@KenS 已经猜到的那样,我也猜想这是与透明度处理有关的问题。默认情况下,FPDI 将“组”条目添加到 XObject 字典以保持导入页面的透明度不变。如果您知道您正在使用没有透明度组的文档,您可以尝试将 false 传递给importPage() 的 $groupXObject 参数。你可以试试这个吗?
标签: php pdf ghostscript imagick fpdi