【发布时间】:2014-07-19 20:41:48
【问题描述】:
我在使用 pdftk 和带有 True Type 字体的文本字段填写表单时遇到了困难。
- 字体文件 (.ttf) 已添加到 /Library/Fonts (OSX Mavericks)
- 表单是使用 Adobe Acrobat Pro 创建的
- 表单包括使用这些字体的普通(非表单)文本
- 表单文本字段也使用这些字体
- 可以使用 Adobe Acrobat Pro 甚至 Preview 成功填写和打印表单
但是,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 也抛出了同样的错误。
我尝试使用 Ghostscript 将字体嵌入到 PDF 中,正如这个问题 How to repair a PDF file and embed missing fonts 中所建议的那样,但无济于事。 gs 可能已嵌入字体,但它会删除表单字段,因此生成的 PDF 无法反馈到 pdftk。
非常感谢一个可行的解决方案。
【问题讨论】:
-
PdfTk 使用过时版本的 iText 来填写表格。你会认出包裹中对我名字的引用。您是否尝试过使用最新版本的 iText 填写表格?如果问题仍然存在,我们(iText Software 公司)可以看看。我们不打算看 pdftk。我们不对 pdftk 负责,也不认可它。顺便说一句:我很高兴看到我的名字出现在关于过去 5 年未升级的软件的报告中,但我对此无能为力。
-
@BrunoLowagie 我非常感谢您为 iText 所做的所有工作,但恕我直言:
pdftk是 Java 世界以外的许多人的唯一途径。因此,对于我们中的许多人来说,您使用 iText 的建议根本不可行。但是,如何为 iText 提供一个漂亮而干净的命令行工具以使其可供更广泛的受众使用呢?