使用itext将html转pdf怎么同时显示中文或图片?

用ITextRenderer生成pdf不显示中文,用XMLWorkerHelper.getInstance().parseXHtml则不显示图片, 有没有能同时解决中文和图片的方法,图片是用的base64

content是html字符串 dest是输出的pdf

ITextRenderer
try(FileOutputStream fileOutputStream = new FileOutputStream(dest)) {
  ITextRenderer renderer = new ITextRenderer();
  ITextFontResolver fontResolver = renderer.getFontResolver();
  fontResolver.addFont(FONT, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
  renderer.setDocumentFromString(content);
  renderer.layout();
  renderer.createPDF(fileOutputStream);
} catch (DocumentException e) {
    e.printStackTrace();
}
用XMLWorkerHelper
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontImp.register(FONT);
byte[] b = content.getBytes(StandardCharsets.UTF_8);
ByteArrayInputStream bais = new ByteArrayInputStream(b);
XMLWorkerHelper.getInstance().parseXHtml(writer, document, bais, StandardCharsets.UTF_8);
bais.close();
document.close();
<div class="signature-new">
      <p>${fileType}</p>
      <img src="data:${fileType};base64,${file64Str}"
           width="100px"
           height="100px"
           alt=""/>
      <p style="font-family: simsun,serif">一二三</p>
</div>
阅读 3.4k
1 个回答
✓ 已被采纳

itext对css的font大小写敏感,字体应该是SimSun 不是simsun

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题