尝试使用Java和org.apache.pdfbox
库打印PDF页面时,出现此错误:
PDFBOX:U + 000A(' controlLF')此字体不提供Helvetica编码:WinAnsiEncoding
答案 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; ^
答案 5 :(得分:0)
有时您必须更改字体:
PDFont font = PDType0Font.load(document, new File("C:\\Users\\dw\\Desktop\\FZLTXHJW.TTF"));
用您拥有的字体替换“ FZLTXHJW.TTF”,它应该支持您的文本编码。