代码之家  ›  专栏  ›  技术社区  ›  ibercode

PDFBOX:U+000A('ControlF')在此字体中不可用Helvetica编码:WinAnsiencecoding

  •  15
  • ibercode  · 技术社区  · 7 年前

    当尝试使用Java和 org.apache.pdfbox

    PDFBOX:U+000A('ControlF')在此字体中不可用Helvetica编码:WinAnsiencecoding

    6 回复  |  直到 7 年前
        1
  •  15
  •   glennsl Namudon'tdie    7 年前

    [问题]您试图显示的字符串包含换行符。

    [解决方案]用新字符串替换字符串并删除换行符:

    text = text.replace("\n", "").replace("\r", "");
    
        2
  •  12
  •   Stephen    5 年前

    U+2010 ('hyphentwo') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+2033 ('second') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+00A0 ('nbspace') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+FFFD ('.notdef') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+03BC ('mugreek') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+039C ('Mu') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+2212 ('minus') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+0141 ('Lslash') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+2103 ('centigrade') is not available in this font Helvetica encoding: WinAnsiEncoding
    U+25AA ('H18543') is not available in this font Helvetica encoding: WinAnsiEncoding
    

    在我的例子中,我只是选择删除未包含在字体中的任何特殊字符。我使用了本页中的解决方案:

    https://cmsdk.com/java/remove-illegal-characters-from-string-with-pdfbox.html

        3
  •  3
  •   andre    4 年前

    我也遇到了类似的问题(使用pdfbox 2.0.11),我的错误是:

    U+00A0 ('nbspace') is not available in this font Helvetica encoding: WinAnsiEncoding
    

    这很奇怪,因为检查winansioncoding的字符名(int值160)返回 space ,但pdfbox的内部类正在返回名称 nbspace .

    我的解决方案是升级到pdfbox 2.0.21。

        4
  •  2
  •   Abhinav Ganguly    5 年前

    如果您希望保留新行添加,即您确实希望文本拆分并显示在新行的后面部分,那么您可以简单地替换 \n 使用HTML 打破 标签,如下所示。

    return text.replace("\n","<br>");

    :)

        5
  •  1
  •   Giovanni Contreras    6 年前

      PDFont font =  PDType1Font.HELVETICA ; 
    
      PDDocument doc    = new PDDocument();
      PDPage page = new PDPage();
      PDPageContentStream content = new PDPageContentStream(doc, page);
      content.beginText();
      content.moveTextPositionByAmount(10, 700);
      content.setFont(font, 12);
      content.drawString("start text   ");
      content.newLineAtOffset(0, -15);
      content.drawString("text in new line  ");        
      content.endText();
      content.close();
      doc.addPage(page);
      doc.save("file.pdf");
    

    和pdf enter image description here

        6
  •  1
  •   What Dong    5 年前

    有时您必须更改字体,如:

    PDFont font = PDType0Font.load(document, new File("C:\\Users\\dw\\Desktop\\FZLTXHJW.TTF"));
    
    

    用你的字体替换“FZLTXHJW.TTF”,它应该支持你的文本编码。