我正在使用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,但随后俄语字符开始显示乱码。
有人知道解决这个问题的方法吗?
你需要添加带有俄语字母的字体,我在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 进行研究