iTextRendered - PDF 中的俄语字符

问题描述 投票:0回答:1

我正在使用iText2.0.8生成PDF文件。

简单来说,代码如下:

FileOutputStream fOut = new FileOutputStream(fileFullPath);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(str); //str is HTML fetched from a velocity template
renderer.layout();
renderer.createPDF(fOut);
fOut.close();

这个效果很好。然而,当我有俄语字符时,它们只是在 PDF 中显示为“空白”。我尝试将获取的 HTML 字符串转换为 UTF-8,但随后俄语字符开始显示乱码。

有人知道解决这个问题的方法吗?

character-encoding itext cyrillic
1个回答
0
投票

你需要添加带有俄语字母的字体,我在html中使用这个:

@font-face {
      font-family: 'Noto Sans';
      font-style: normal;
      font-weight: 400;
      font-display: swap;
      src: url(NotoSans-Regular.ttf);
    }
  body {
    font-family: 'Arial', 'sans-serif';
    font-family: 'Arial', 'sans-serif', 'Noto Sans';
    font-size: 16px;
  }

还有代码

   renderer.getFontResolver().addFont("NotoSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
    renderer.getFontResolver().addFont("ArialRegular.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
    renderer.getFontResolver().addFont("microsoftsansserif.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

您需要先下载字体。您可以使用网站 https://sandbox.openhtmltopdf.com/?file=hello-world.htm 进行研究

© www.soinside.com 2019 - 2024. All rights reserved.