【问题标题】:PHP flatten PDF form after filling fields with fpdm WITHOUT PDFtk使用 fpdm 填充字段后 PHP 展平 PDF 表单而不使用 PDFtk
【发布时间】:2021-01-01 01:15:45
【问题描述】:

我已经看到很多问题都是相同的,但大多数解决方案仍然以安装 PDFtk 结束,或者他们不需要 flatten 功能。可惜不适合我。


问题

使用fpdm,我创建了一个自动填充的 PDF 表单。

问题是,如果在浏览器 PDF 查看器(在所有测试的浏览器上)中打开并打印 PDF,复选框中的值不会显示。由于将由用户下载此 PDF,因此无论在哪个程序中查看 PDF,这些值都应该可见。

所以我的想法是展平 PDF,但 fpdm 需要 PDFtk 来展平无法安装在服务器上的 PDF。

由于我们使用的是 TYPO3 CMS,我想避免添加完整的框架(例如 zend-framework)。

我曾尝试使用 graphicsMagick 将 PDF 展平,但首先质量非常差,其次使用 PHP 的以下命令缺少两个页面之一:

shell_exec('gm -flatten form.pdf form.pdf')

我只需要更改 gm 命令吗?如果是,怎么会?

如果 GM 不起作用,是否有人知道扁平化 PDF 表单的开源/免费解决方案?

提前感谢您的帮助。


更新

我找到了一个用 graphicsMagick 拼合 PDF 的命令,它看起来比我上次尝试的要好很多:

shell_exec('gm convert -density 300 ' . $tmpFile . ' +adjoin -append -flatten ' . $PDFFile);

它仍然不完美,因为字体更改为扁平化之前使用的字体,但也许我也会找到解决方案。但与我上次的尝试相反,没有丢失任何页面。

然而,我仍然想知道 PDFtk 是否是唯一一个免费的 PHP 兼容工具来填充和展平 PDF 表单(忽略最终依赖于 PDFtk 的所有工具)?

【问题讨论】:

  • 我一直在使用 pdftk 来展平 pdf 文件,它很容易工作,使用 pdftk 中的展平选项 (pdflabs.com/docs/pdftk-man-page/#dest-output-flatten)。要填写表格,您需要生成 fdf 文件并使用该文件填写表格。在stackoverflow.com/a/63047502/6051682 上查看我的类似答案
  • 如前所述,我们无法在我们的服务器上安装 pdftk,所以这绝对不是解决方案。特别是因为我已经在标题“NO PDFtk”中说明了这一点。因此,请停止提出提问者不想要的建议。

标签: php pdf


【解决方案1】:

我们偶然发现了pdftocairo,而不是使用graphicsMagick 来展平pdf。然后,以下命令将 pdf 展平,而不更改字体和对梳状字段的支持(graphicsMagick 和 GhostScript 都不支持):

shell_exec("pdftocairo -pdf $tmpFile $PDFFile");

因此,如果有人需要在 Ubuntu 18.04 服务器上拼合 PDF,则可以在其上安装与 PDFtk 不同的 PDFtk,而无需额外的软件包,并且可以满足我的需要。它还具有更多与 PDF 相关的功能,可能与 PDFtk 相媲美。

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2014-10-24
    • 2013-09-16
    • 2014-09-02
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多