PDFBOX:U + 000A(' controlLF')此字体不提供Helvetica编码:WinAnsiEncoding

时间:2017-10-09 10:44:20

标签: java pdfbox

尝试使用Java和org.apache.pdfbox库打印PDF页面时,出现此错误:

  

PDFBOX:U + 000A(' controlLF')此字体不提供Helvetica编码:WinAnsiEncoding

6 个答案:

答案 0 :(得分:6)

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

[SOLUTION]用新的String替换String并删除换行符:

text = text.replace("\n", "").replace("\r", "");

答案 1 :(得分:3)

为该帖子选择的答案有效,如果您知道是\ 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

答案 2 :(得分:2)

如果您想保留换行符,即您确实希望拆分文本并在新行中显示后一部分,则只需将 \ n 替换为HTML < strong> break 标签,如下所示。

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

:)

答案 3 :(得分:1)

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

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

这很奇怪,因为检查WinAnsiEncoding中的char名称(int值160)返回了space,但是pdfbox的内部类返回了名称nbspace

对我来说,解决方案是升级到pdfbox 2.0.21。

答案 4 :(得分:0)

如果您尝试使用&#34; \ n&#34;设置换行。在一个字符串中。您可以尝试PDPageContentStream.newLineAtOffset(x,y)添加新行

BEGIN
    UPDATE Player SET FlagPayment = 1 WHERE ID = NEW.ID;
END;                                                   ^

和pdf enter image description here

答案 5 :(得分:0)

有时您必须更改字体:

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

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