我在使用pdftk
填写表单时遇到困难,文本字段使用真实字体。
但是,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
。
非常感谢工作决议。
答案 0 :(得分:12)
我使用java.lang.ArrayIndexOutOfBoundsException: 0
在Adobe Acrobat生成的PDF上填写表单时遇到同样的pdftk
错误。这个问题超级老了,但我无法在stackoverflow或其他地方找到一致的答案,所以我想我会发布我的修复。
最终为我工作的是什么:
保存
再次通过pdftk
运行PDF
我一般不熟悉编码或PDF,但是使用预览保存PDF似乎可以修复编码,或者至少可以将其放到pdftk
可以使用它的地方。祝你好运。
答案 1 :(得分:0)
这让我头痛了2天。原来,我专注于问题的错误结局。
一个不错的替代方法,不是手动的,只需要做一次即可,就是在源PDF表单的字段中输入一些文本,以您的情况为./my_form.pdf。我不知道为什么会这样,但是确实可以。这样,如果您想随时创建一个新文件,就不必麻烦了:)