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

iText不呈现中文/韩文字符

漆雕奇逸
2023-03-14

我有一个中文/韩文字符的超文本标记语言字符串。我想使用iText将超文本标记语言转换为PDF。我读到我们需要将FONT嵌入到PDF中,以使Unicode字符显示在PDF上。

当我尝试嵌入wts11时。ttf(带有编码标识_H)或STSong Light(带有编码Unigb-UCS2-H),我只能看到汉字,但看不到韩文字符。我试着用arialuni。ttf(带有编码标识),但仍然只能看到汉字,不能看到韩语。

有人能告诉我确切的字体是什么吗。或者如果我错过了什么。

下面是代码片段:

Document document = new Document();
Paragraph paragraph=new Paragraph();
PdfWriter.getInstance(document, baos);
document.open();
BaseFont bff = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
Font f = new Font(bff);

// FontFactory.registerDirectories(); 
// Font f = FontFactory.getFont("Arial Unicode MS", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

document.add(new Paragraph());
HTMLWorker htmlWorker = new HTMLWorker(document);

List<Element> objects=htmlWorker.parseToList(new StringReader(message),null);
paragraph.setFont(f);
for (Element elem : objects) {
    paragraph.add(elem);
}
document.add(paragraph);

共有2个答案

柴声
2023-03-14
  1. dowload Malgun-Gothic-Bold29380。ttf字体

Font fontbold=FontFactory。getFont(“assets/fonts/Malgun-Gothic-Bold_29380.ttf”,BaseFont.IDENTITY_H,BaseFont.EMBEDDED,12);

况承福
2023-03-14

如果升级到使用XMLWorker,有不同的方法可以解决这个问题。

我重用了官方示例中的代码,更具体地说,是ParseHtmlAsian示例中的代码,并对用作本示例源代码的HTML进行了如下修改:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <p><span style="font-size:12.0pt; font-family:MS Mincho">長空</span>
    <span style="font-size:12.0pt; font-family:Times New Roman,serif">(Broken Sword),</span>
    <span style="font-size:12.0pt; font-family:MS Mincho">秦王殘劍</span>
    <span style="font-size:12.0pt; font-family:Times New Roman,serif">(Flying Snow),</span>
    <span style="font-size:12.0pt; font-family:MS Mincho">飛雪</span>
    <span style="font-size:12.0pt; font-family:Times New Roman,serif">(Moon), </span>
    <span style="font-size:12.0pt; font-family:MS Mincho">如月</span>
    <span style="font-size:12.0pt; font-family:Times New Roman,serif">(the King), and</span>
    <span style="font-size:12.0pt; font-family:MS Mincho">秦王</span>
    <span style="font-size:12.0pt; font-family:Times New Roman,serif">(Sky).</span></p>
    <p style="font-size: 12.0pt; font-family:Batang">빈집</p>
    <p>Test</p>
    </body>
</html>

结果是这样的:

如您所见,所有文本都正确呈现,因此请不要传播错误消息,例如“iText未呈现中文/韩文字符”;-)

请将此答案转发给您的管理层,以便您的CTO了解,在旧的iText版本上投入时间比购买使用新的iText版本的许可证更昂贵。

 类似资料:
  • 我无法让ggplot2在轴中正确渲染朝鲜语和中文字符,如下所示: 顶部的项目是韩语,而底部的第五个项目包含汉字。 您可以使用以下代码复制“绘图”: 我意识到我应该有地理信息来实际显示数据,但我想我会尽可能少。这个问题仍然存在于全面的情节中,包括地理信息、尺度和主题设置等... 以下是我的会议信息:

  • 在jasper reports一节中,pdf问题中有一个jasper report字符编码。 jasper报告中无法解决该问题,因为它似乎是一个itext问题(使用itext v.5.5.4) 示例代码: 可在mm3下载字体。ttf公司 将错误渲染为: 它应该呈现为(在浏览器中使用相同的ttf) 只是出于好奇发生了什么事?(看起来像是某些字符,带虚线的圆圈应该向后移动,但这不会发生)。 这是<代码

  • 我正在使用iText生成一些PDF,这些PDF有一些中文字符(简体中文-GB2312),但是我无法用这些字符生成PDF。 谁能告诉我哪里错了? 我尝试使用各种创作形式,但没有成功: 有人能帮我吗? 添加问题,这是我当前的测试代码:

  • 我需要用正则表达式提取单词中''之前和''之前的韩文字母。 458 138->提取“”和“” 1600->提取“” 我有[^\X00-\X7F]+(?=)[^\X00-\X7F]+(?=)。但这并不是对所有人都有效

  • 问题内容: 我希望能够将中文,日文和韩文书写的字符识别为一般组和细分语言。原因如下: 将CJK视为一般团体: 我正在制作一个垂直脚本蒙古语。为此,我需要将文本行旋转90度,因为字形是水平存储在字体中的。但是,对于CJK语言,我需要再次将它们旋转回去,以使它们以正确的方向书写,而只是沿线叠放在一起。 将CJK区分为特定的语言: 我也在制作蒙古文字典,当用户输入CJK字符进行查找时,我想自动识别该语言

  • 我已经从RN0.54升级到了0.57,而我的应用程序由于使用了React原生元素而几乎崩溃了。 我在组件上使用了它们的错误功能,这些功能基本上使您能够为错误消息设置样式并设置错误消息。非常方便,但是升级已经打破了这些,现在我遇到了这个错误: 因此,我删除了代码,错误也消失了,但是当我运行这段代码时,仍然收到问题: