pdf - 如何使用 ImageMagick 将已填写表单的 PDF 转换为 JPEG 图像并保留表单数据?

标签 pdf imagemagick jpeg ghostscript pdf-conversion

我正在尝试通过 ImageMagick (v 6.8.7-0) 将此 PDF 转换为 JPEG 图像: https://dl.dropboxusercontent.com/u/10351891/cd.pdf

我没有找到任何有效的解决方案来保留 PDF 中填充的数据。 这是尝试过的命令之一:

转换-颜色空间 CMYK -alpha 关闭 -交错无 -密度 300x300 -质量 100 cd.pdf[0] cd_image.jpg

由于 ImageMagick 使用 Ghostscript 进行转换,我也将其更新到最新版本 (v 9.10),但没有任何变化。

该命令总是打印出一些警告:

“警告:考虑‘0000000000 XXXXX n’作为免费条目”

“/BBox 的宽度或高度为零,这是不允许的。”

有人找到转换它的方法吗?

更多信息:

我使用 Mac 版 Preview 来填写表单。

在生产中,我们使用 Ubuntu 而不是 Mac OS X,并且 PDF 不是我填写的,而是发送给我们预先填写的

最佳答案

Max OS X PDF Preview 无法正确支持 AcroForms 是一个已知问题,请参阅此博客文章,其中包含一些详细信息:Script to Fix Mac OSX Preview.app Form Fill and Save .

除其他错误外,您的 PDF 表单字段缺少一条信息:外观流(一组指令,告诉查看者在未编辑字段值时应如何呈现字段值)。

如果您可以指定应使用哪个 PDF 查看器来编辑表单,则避免使用 Mac OS X 预览。如果您需要支持 Mac OS X 预览,那么您可以尝试使用任何允许填写表单的 PDF 库以编程方式重新生成此信息,或者您可以应用表单扁平化过程(将“动态”文本转换为静态)在导出为 jpeg 之前。

示例:

  • 如果您可以使用 Windows 盒子和 Adob​​e Acrobat,您可以尝试 与前面提到的脚本。
  • 如果您有权使用 Windows 盒子并购买商业版 库是一个选项,您可以尝试使用 Amyuni PDF Creator (免责声明:我在 Amyuni Technologies 工作)。用于再生 外观流,您将需要枚举表单字段, 检索它们的值,为它们设置一个空值,然后重新分配 它们是原始值。为了进行表单扁平化,您必须 将每个表单字段的注释属性设置为 false。
  • 如果您有权访问 Linux 机器并且具有 GPL 许可证的库 不是问题,您可以尝试使用 iText 创建 Java 应用程序, 方法 PdfStamper.setFormFlattening(boolean) 似乎可以满足您的需要。

关于pdf - 如何使用 ImageMagick 将已填写表单的 PDF 转换为 JPEG 图像并保留表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156293/

相关文章:

internet-explorer - pdf错误: "expected a dict object" on IE9 and IE10

pdf - PDF 线宽如何在水平和垂直维度上与 CTM 交互?

perl - 使用 LWP::UserAgent 损坏图像

PHP fatal error : Class 'Imagick' not found - Windows 7 64bit IIS PHP 5. 2

batch-file - 用于优化数千张图像的批量图像压缩工具

r - 使用 R 将 jpg 转换为灰度 csv

php - Composer 要求在安装 barryvdh/laravel-dompdf 时出错

php - 从 MySQL 生成表到 PDF(使用 PHP)

php - ImageMagick - 文本到矩形

python - 如何在图像颜色为黑色时使用 Pillow 将 PNG 转换为 JPG?