-1

我使用以下代码为表单字段添加了一些值。

//------------------------------------------------ --------

PdfReader 阅读器 = 新 PdfReader(in);

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(out));

AcroFields 表单 = stamper.getAcroFields();

form.setField("txt_1", "TEST:ทดสอบ");

压模.close();

reader.close();

//------------------------------------------------ --------

问题是泰语字符在我关注该字段之前不会显示在 PDF 阅读器中。

** 我第一次打开我得到的输出文件


字段名称: 文本:


当我专注于该字段时,结果是正确的,当我点击另一个字段后,泰语字符再次消失


字段名称:文本:ทดสอบ</p>


谁能帮忙。谢谢

4

1 回答 1

1

请先阅读我对Can't get Czech characters while generate a PDF first的回答。它与捷克字符有关,但也与您的问题有关:

  1. 您通过在代码中添加非西方字符而不是使用 UNICODE 表示法来使用糟糕的编程习惯。
  2. 您需要创建一种能够书写泰语字符的字体(例如 arialuni.ttf)。

然后阅读我的书的第 8 章。更具体地说,解释图 8.3 和图 8.4 的文本。 创建包含 Unicode 字符的文本字段 在图 8.3 中,上面的文档显示了您遇到的问题。在这种情况下,我们将添加一个String带有西方文本和中文文本的字段值。显示西文,中文不显示。第二个和第三个窗口显示当您正确填写该字段时会发生什么。 填写包含 Unicode 字符的文本字段 在图 8.3 中,我们尝试添加一些韩文文本。这在第一个和第三个窗口中都失败了,但是我们在第二个、第三个和第四个窗口中解决了这个问题。

如果您没有我的书的副本,您可能会受益于尝试生成屏幕截图中显示的所有 PDF 的TextFieldFont示例。

假设您决定使用 MS Arial Unicode,您会选择将此字体添加为替换字体的解决方案:

AcroFields form = stamper.getAcroFields();
BaseFont unicode =
    BaseFont.createFont("c:/windows/fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
form.addSubstitutionFont(unicode);

当然,还有其他选择,但这是解决问题的一种方法。

于 2014-11-14T16:26:28.210 回答