java - xhtmlrenderer xhtml转pdf字体问题

标签 java html pdf fonts xhtmlrenderer

我正在使用 org.xhtmlrenderer.pdf.ITextRenderer 使用 Java 将我的 (x)html 页面转换为 pdf。

除了字体部分,我已经完成了大部分工作。

我在我的页面中使用 verdana 并且使用默认字体呈现 pdf。

我已将 verdana.ttf 添加到我的 jar 中并使用以下代码:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new StringBufferInputStream(html));      

File tmpFontFile = new File(TEMP_FOLDER + "/verdana.ttf");
      if(!tmpFontFile.exists())
      {
       tmpFontFile.createNewFile();

       InputStream fontIs = getClass().getResourceAsStream("/com/mycompany/util/font/verdana.ttf");   
       OutputStream fontOs = new FileOutputStream(tmpFontFile);

       byte buf[] = new byte[1024];
       int len;

       while((len = fontIs.read(buf)) > 0)
        fontOs.write(buf,0,len);

       fontOs.close();
       fontIs.close();
      }


      ITextRenderer renderer = new ITextRenderer();
      renderer.getFontResolver().addFont(
        tmpFontFile.getAbsolutePath(), BaseFont.IDENTITY_H ,BaseFont.EMBEDDED);
      renderer.setDocument(doc, null);

      String outputFile = TEMP_FOLDER + "/mypdf.pdf";
      OutputStream os = new FileOutputStream(outputFile);
      renderer.layout();
      renderer.createPDF(os);
      os.close();

我在这里错过了什么?

谢谢, 巴特

最佳答案

要使 xhtmlrenderer 正常工作,CSS 必须为:

字体系列:Verdana;

代替

font-family:verdana;

区分大小写。

关于java - xhtmlrenderer xhtml转pdf字体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2771623/

相关文章:

java - getActionBar() 在 actionBar 中返回 NULL

Python 3 图像 base64 不保存到 html img 标签

html - 如何使用 css 定位特定的 img

java - 用于 Java 的高级 PDF 解析器

java - 通知和等待对于同步块(synchronized block)不起作用

java - 使用Java复制文件会跳过连续两个空格的文件名

java - 有效地删除 Java 中 arraylist 中每个数组的第一个元素

html - 将图像放在列表右侧

java - 转换为PDF/A并检查Linux下的合规性

C# - 从 PDF 签名获取公钥