如何使用 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"));
希望这对某人有所帮助!
我正在寻找使用 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"));
希望这对某人有所帮助!