PDFBOX:U+000A ('controlLF') 在此字体中不可用 Helvetica 编码:WinAnsiEncoding
PDFBOX : U+000A ('controlLF') is not available in this font Helvetica encoding: WinAnsiEncoding
尝试使用 Java 和 org.apache.pdfbox
库打印 PDF 页面时,出现此错误:
PDFBOX : U+000A ('controlLF') is not available in this font Helvetica encoding: WinAnsiEncoding
[问题] 您尝试显示的字符串包含换行符。
[解决方案] 将字符串替换为新字符串并删除换行符:
text = text.replace("\n", "").replace("\r", "");
如果您尝试在字符串中使用“\n”设置新行。你可以尝试 PDPageContentStream.newLineAtOffset(x,y) 添加一个新行
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
有时您必须更改字体,例如:
PDFont font = PDType0Font.load(document, new File("C:\Users\dw\Desktop\FZLTXHJW.TTF"));
将 "FZLTXHJW.TTF" 替换为您拥有的字体,它应该支持您的文本编码。
如果你想保留换行符,即你确实希望你的文本拆分并出现在新行的后面部分,那么你可以简单地替换 \n 带有 HTML break 标签,如下所示 .
return text.replace("\n","<br>");
:)
为此 post 选择的答案有效,替换了字符串中所有 \n 和 \r 的实例,如果您知道是 \n 或 \r 字符导致了您的问题。我发现有很多不同的字符会产生此错误。以下是我发现的示例:
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
我也 运行 遇到了类似的问题(使用 pdfbox 2.0.11),我的错误是:
U+00A0 ('nbspace') is not available in this font Helvetica encoding: WinAnsiEncoding
这很奇怪,因为检查字符名称(int 值 160)的 WinAnsiEncoding 返回 space
,但 pdfbox 的内部 类 返回名称 nbspace
。
我的解决方案是升级到 pdfbox 2.0.21。
尝试使用 Java 和 org.apache.pdfbox
库打印 PDF 页面时,出现此错误:
PDFBOX : U+000A ('controlLF') is not available in this font Helvetica encoding: WinAnsiEncoding
[问题] 您尝试显示的字符串包含换行符。
[解决方案] 将字符串替换为新字符串并删除换行符:
text = text.replace("\n", "").replace("\r", "");
如果您尝试在字符串中使用“\n”设置新行。你可以尝试 PDPageContentStream.newLineAtOffset(x,y) 添加一个新行
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
有时您必须更改字体,例如:
PDFont font = PDType0Font.load(document, new File("C:\Users\dw\Desktop\FZLTXHJW.TTF"));
将 "FZLTXHJW.TTF" 替换为您拥有的字体,它应该支持您的文本编码。
如果你想保留换行符,即你确实希望你的文本拆分并出现在新行的后面部分,那么你可以简单地替换 \n 带有 HTML break 标签,如下所示 .
return text.replace("\n","<br>");
:)
为此 post 选择的答案有效,替换了字符串中所有 \n 和 \r 的实例,如果您知道是 \n 或 \r 字符导致了您的问题。我发现有很多不同的字符会产生此错误。以下是我发现的示例:
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
我也 运行 遇到了类似的问题(使用 pdfbox 2.0.11),我的错误是:
U+00A0 ('nbspace') is not available in this font Helvetica encoding: WinAnsiEncoding
这很奇怪,因为检查字符名称(int 值 160)的 WinAnsiEncoding 返回 space
,但 pdfbox 的内部 类 返回名称 nbspace
。
我的解决方案是升级到 pdfbox 2.0.21。