当前位置: 首页 > 知识库问答 >
问题:

不显示iText Java的代理汉字

慎望
2023-03-14

使用iText 5.5.11从maven回购https://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.11

public class test {
    public static void main(String[] args) throws DocumentException, IOException {

        final String text = "BMP: \u6d4b \u8bd5  Surrogate: \uD841\uDF0E \uD841\uDF31 \uD859\uDC02";

        BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font font = new Font(baseFont, 6.8f);

        Document doc = new Document();
        PdfWriter.getInstance(doc, new FileOutputStream("out.pdf"));
        doc.open();

        Paragraph p = new Paragraph();

        p.add(new Phrase(text, font));

        doc.add(p);

        doc.close();
    }
}

基本多语言平面中的非代理字符在生成的pdf上呈现,但代理字符不呈现。

编辑:也尝试使用编码为“UniGB-UCS2-H”的字体“STSong Light”(如本书中的示例)。结果相同-缺少代理字符。

Edit2:让它与"SimSun-ExtB"字体一起工作

共有1个答案

墨宜人
2023-03-14

这通常表示所使用的字体(在本例中为Arial)没有字符的字形。

 类似资料:
  • 第一次在JAVA项目上使用FreeMarker,在配置汉字时使用堆栈。 看到了一些对FreeMarker.Properties进行更改的示例请求,但我没有这个文件。我只是导入。jar文件并使用它。 请告诉我该怎么做才能让它显示汉字。

  • 我的编程任务要求我在客户端和服务器之间创建一个代理。我的客户端通过代理向服务器发出请求,然后代理将其转发并将服务器的响应返回给客户端。 以下是我采取的步骤: 1) 从客户端获取请求并将请求数据存储到字节数组中 2) 使用缓冲读取器读取字节数组 3) 从host:header字段获取主机名,并使用它创建一个serverSocket 4) 将请求数据转发到serverSocket outputstre

  • 我试图用opengl在Qt中显示纹理,但当我运行时它就是不显示纹理。 我做了一些研究,发现我需要将纹理的高度和宽度设为2的幂。我的纹理现在是(1024x1024)。 我还添加了很多glTexParameterf,可以解决我的问题,但仍然没有运气。 EDIT1:是不是我的质地太大了? EDIT2:glBindTexture(GL_TEXTURE_2D,m_textureID);放置在glBindTe

  • 有问题显示纹理在我的3D框在LWJGL使用光滑。早些时候我犯了一个错误: BasicShader类: BasicVertex.vs basicfragment.fs

  • 问题内容: 我正在尝试使用Java文件从数据库中检索一些UTF-8 uni编码汉字。当我这样做时,字符将作为问号返回。 但是,当我显示数据库中的字符(使用)时,这些字符将正常显示。当我在包含汉字的Java文件中打印字符串时,它们也会正常打印。 我在Eclipse中遇到了这个问题:运行程序时,字符被打印为问号。但是,当我以UTF-8格式保存Java文件时,此问题已解决。 当前在终端中运行“ loca

  • 我正在用最新的appcompat支持库实现Lollipop风格的导航抽屉,但问题是汉堡包图标从未显示。仅显示后退图标。 这是我的活动代码 这是我的样式文件 布局文件 在这两种情况下,只有返回箭头显示,我读了很多帖子,但似乎没有什么不同。任何帮助都将不胜感激。