【发布时间】:2018-03-10 06:10:14
【问题描述】:
我在调用 PDField 的 setValue 方法并尝试设置包含特殊字符的值时遇到问题。
field.setValue("TEST-BY (TEST)")
详细来说,如果我的值包含 U+00A0 等字符,我将收到以下异常:
原因:java.lang.IllegalArgumentException: U+00A0 不是 可用此字体的编码:WinAnsiEncoding
可以在此处找到完整的 stracktrace:Stacktrace
我目前已将 PDType1Font.TIMES_ROMAN 设置为字体。为了解决这个问题,我也尝试了其他可用的字体。同样的问题仍然存在。
我在这个答案https://stackoverflow.com/a/22274334/7434590 中找到了以下建议,但由于我们使用 setValue 而不是任何可以操作字节的方法 showText/drawText,我不能使用这种方法,因为 setValue 只接受字符串作为参数。
注意:我不能用其他字符替换字符来解决这个问题,我必须能够在 setValue 方法中设置字体字符支持的任何类型。
【问题讨论】:
-
你有不使用
WinAnsiEncoding的字体吗?您链接的问题与您的问题无关。这是关于使用错误的编码。您的问题是关于您坚持使用该字体中不存在的字符。更改字符或更改字体。 -
您使用哪个 PDFBox 版本?
-
我使用的版本是2.0.7
标签: java pdf unicode pdfbox utf