0

我希望用包含特殊字符的信息填写 PDF 表单:

public class Main {
    public static void main(String[] args) throws IOException, DocumentException {
        PdfReader reader = new PdfReader("in.pdf");
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("out.pdf"));

        AcroFields form = stamper.getAcroFields();
        form.setField("sessionAddress", "ÕÄÖÜ õäöü šž");

        stamper.setFormFlattening(true);
        stamper.close();
        reader.close();
    }
}

out.pdf使用上面的代码,我在(之后的部分)中看到了以下结果Aadress:

在此处输入图像描述

现在,如果我将所有特殊字符指定为 unicode 代码:

form.setField("sessionAddress", "\u00D5\u00C4\u00D6\u00DC \u00F5\u00E4\u00F6\u00FC \u0161\u017E");

在此处输入图像描述

我究竟做错了什么?

据我所知,字符串代表一个字符序列。Java代码中上述两个字符串的内容不应该相等吗?

我有一个充满 UTF-8 编码数据的数据库。我怎样才能让它像 Java 应用程序的其余部分一样直接与 iTextPdf 一起工作(数据库、Java 代码、API 请求/响应和前端 JavaScript 代码都包含这样的字符串,除了 iTextPdf 之外的一切都有效)。

如果有什么重要的,上面代码的java文件保存为UTF-8。我正在使用 IntelliJmain在 gradle 项目中运行该方法。iTextPdf 版本 5.5.13。爪哇 11。

4

0 回答 0