PDFtk的字体问题

时间:2014-05-30 06:46:13

标签: pdf fonts true-type-fonts pdftk

我在使用pdftk填写表单时遇到困难,文本字段使用真实字体。

  • 字体文件(.ttf)已添加到/ Library / Fonts(OSX Mavericks)
  • 表单是使用Adobe Acrobat Pro
  • 创建的
  • 表格包含使用这些字体的普通(非表格)文字
  • 表单文本字段也使用这些字体
  • 可以使用Adobe Acrobat Pro甚至预览
  • 成功填写和打印表格

但是,pdftk尝试使用以下命令填充错误时会抛出错误:

pdftk ./my_form.pdf fill_form my_data.fdf output ./the_output.pdf

输出结果为:

Unhandled Java Exception in create_output():
java.lang.ArrayIndexOutOfBoundsException: 0
   at pdftk.com.lowagie.text.pdf.DocumentFont.fillEncoding(pdftk)
   at pdftk.com.lowagie.text.pdf.DocumentFont.doType1TT(pdftk)
   at pdftk.com.lowagie.text.pdf.DocumentFont.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.AcroFields.getAppearance(pdftk)
   at pdftk.com.lowagie.text.pdf.AcroFields.setField(pdftk)
   at pdftk.com.lowagie.text.pdf.AcroFields.setFields(pdftk)

如果我将文本输入的字体更改为Helvetica,Times Roman或Courier,pdftk将成功创建PDF。奇怪的是,Arial和Georgia也犯了同样的错误。

我试图按照此问题How to repair a PDF file and embed missing fonts中的建议使用Ghostscript将字体嵌入PDF中。 gs可能嵌入了字体,但它删除了表单字段,因此生成的PDF无法反馈到pdftk

非常感谢工作决议。

2 个答案:

答案 0 :(得分:12)

我使用java.lang.ArrayIndexOutOfBoundsException: 0在Adobe Acrobat生成的PDF上填写表单时遇到同样的pdftk错误。这个问题超级老了,但我无法在stackoverflow或其他地方找到一致的答案,所以我想我会发布我的修复。

最终为我工作的是什么:

  1. 在OS X app预览中打开PDF
  2. 点击表单字段,添加文本然后删除该文本(因此实际上没有任何更改)
  3. 保存

  4. 再次通过pdftk运行PDF

  5. 我一般不熟悉编码或PDF,但是使用预览保存PDF似乎可以修复编码,或者至少可以将其放到pdftk可以使用它的地方。祝你好运。

答案 1 :(得分:0)

这让我头痛了2天。原来,我专注于问题的错误结局。

一个不错的替代方法,不是手动的,只需要做一次即可,就是在源PDF表单的字段中输入一些文本,以您的情况为./my_form.pdf。我不知道为什么会这样,但是确实可以。这样,如果您想随时创建一个新文件,就不必麻烦了:)