如何使用 iText7 将 Java unicode 字符串正确转换为 PDF 字符串对象?

How to translate Java unicode string to PDF string object correctly using iText7?

我正在寻找使用 iText7 设置 PDF 注释但遇到了问题。与使用 PDF 流对象显示内容的 PDF 文档的其余部分不同 - 注释只能使用 PDF 字符串设置。

但它在 Microsoft Edge reader 模式下显示字形,如下所示:

@8-72...

我也尝试在 Opera 和 Chrome 中打开它,但得到的结果是:

Ё3,Ё»1’¼°¼22ёЁȂ21.

这是一段代码

Rectangle rect = new Rectangle((float)x1, (float)y1, (float)(x2-x1), (float)(y2-y1));
float[] floatArray = new float[] {(float)x2, (float)y1, (float)x1, (float)y1, (float)x2, (float)y2, (float)x1, (float)y2};

PdfAnnotation annotation = PdfTextMarkupAnnotation.createHighLight(rect,floatArray);
annotation.setContents(new PdfString("Привет, использую русский здесь.");

如何让结果显示正确?

经过足够的搜索,我能够回答。根据 plinth answer 我们可以设置 pdf 字符串的 UTF-16 编码,更改默认的 PDFdocEncoding。

另请注意:并非所有浏览器都支持 UTF-16 编码,因此无论如何它都是字形。

Rectangle rect = new Rectangle((float)x1, (float)y1, (float)(x2-x1), (float)(y2-y1));
float[] floatArray = new float[] {(float)x2, (float)y1, (float)x1, (float)y1, (float)x2, (float)y2, (float)x1, (float)y2};

PdfAnnotation annotation = PdfTextMarkupAnnotation.createHighLight(rect,floatArray);
annotation.setContents(new PdfString("Привет, использую русский здесь.", "UTF-16"));

希望这对某人有所帮助!