1

我正在寻找使用 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("Привет, использую русский здесь.");

我怎样才能得到正确显示的结果?

4

1 回答 1

1

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

https://stackoverflow.com/a/163065/16591105

还要注意:不是任何浏览器都支持 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"));

希望这对某人有帮助!

于 2021-08-05T20:17:17.640 回答