PDFtk的字体问题

dav*_*vur 21 pdf fonts truetype 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
Run Code Online (Sandbox Code Playgroud)

输出是:

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)
Run Code Online (Sandbox Code Playgroud)

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

我试图使用Ghostscript在PDF中嵌入字体,如本问题中所建议的如何修复PDF文件并嵌入丢失的字体.gs可能已嵌入字体,但它删除了表单字段,因此生成的PDF无法反馈pdftk.

我们将非常感谢工作决议.

Geo*_*rge 15

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

最终为我工作的是什么:

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

  4. pdftk再次运行PDF

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