【问题标题】:How to translate Java unicode string to PDF string object correctly using iText7?如何使用 iText7 正确地将 Java unicode 字符串转换为 PDF 字符串对象?
【发布时间】:2021-10-10 20:06:42
【问题描述】:

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

但它在 microsoft edge reader 模式下显示字形,如下所示:

@8-72...

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

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

这是一个代码sn-p

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

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

【问题讨论】:

    标签: java utf-8 itext7 utf-16 pdf-annotations


    【解决方案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"));
    

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多