2013-11-22 24 views
1

我试图通过ImageMagick(v 6.8.7-0)将此PDF转换为JPEG图像:https://dl.dropboxusercontent.com/u/10351891/cd.pdf如何使用ImageMagick将填充表单的PDF转换为JPEG图像并保留表单数据?

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

convert -colorspace CMYK -alpha off -interlace none -density 300x300 -quality 100 cd.pdf[0] cd_image.jpg

由于ImageMagick的使用的Ghostscript的转换,我也将其更新到最新版本(V 9.10),但什么都没有改变。

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

"Warning: considering '0000000000 XXXXX n' as a free entry"

"/BBox has zero width or height, which is not allowed."

是否有人找到一种方法来转换呢?

的更多信息:

我用预览的Mac填写表格。

在生产中,我们使用Ubuntu不支持Mac OS X和PDF是不是我填的,但它发送给我们的预充式

回答

2

这是一个已知的问题,最大OS X PDF预览不支持AcroForms正确,看到这个博客文章,其中包含一些细节:Script to Fix Mac OSX Preview.app Form Fill and Save

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

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

例子:

  • 如果你有机会到Windows盒和Adobe Acrobat,你可以尝试用 前面提到的脚本。
  • 如果您有权访问Windows盒子并购买商业 库是一个选项,您可以试用Amyuni PDF Creator (免责声明:我为Amyuni Technologies工作)。要重新生成 外观流,您需要枚举表单字段, 检索它们的值,为它们设置一个空值,然后将它们重新分配给 原始值。为了进行表单拼合,您必须将 将每个表单字段的注释属性设置为false。
  • 如果您有可以访问的Linux箱和一个图书馆与GPL许可证是 不是一个问题,你可以尝试创建与iText的Java应用程序,该 方法 PdfStamper.setFormFlattening(boolean) 似乎做你所需要的。
+0

我用Mac预览版来填写表格。任何想法如何以编程方式重新生成信息或如何应用表单展平过程? – Panda

+0

我试图将PDF导出到PS(使用pdftops),然后回到PDF(使用ps2pdf),但没有奏效。 pdftops失败,出现以下语法错误:“字段DA字符串中的未知字体” – Panda

+1

@Panda,此文件的语法错误/警告是真实的,它有严重问题,所以最好不要与其他文件使用相同的方法 - 损坏可能是不可预知的,并且在你最不期待的时候。 *预览为Mac *? H-mm .. – user2846289

相关问题