繁体   English   中英

替代不显示iText Java的汉字

[英]Surrogate Chinese Characters Not Displaying iText Java

使用Maven存储库中的iText 5.5.11 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”字体

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM