final String NBSP = new String("\u00a0");
contentStream.showText("Konichua!" + NBSP);
这会引发以下异常:
java.lang.IllegalArgumentException:U + 00A0('nbspace')不是 以此字体提供Courier编码:WinAnsiEncoding
我已经尝试了所有可用的3种字体; TimesNewRoman,Courier& Helvitica与所有3个导致相同的例外。
但是当您查看apcahe pdfBox的源代码中的 WIN_ANSI_ENCODING_TABLE 时,
{040, "space"},
{0243, "sterling"},
.
.
// adding some additional mappings as defined in Appendix D of the pdf spec
{0240, "space"},
{0255, "hyphen"}
我们可以看到下面的非中断空间已定义。
DEC OCT HEX BIN Symbol Description
160 240 A0 10100000 Non-breaking space
在pdf规范document中 引用如下:
SPACE字符在MacRomanEncoding中也应编码为312,在WinAnsiEncoding中编码为240 。此重复代码应表示不间断的空间;它的排版方式应与(U + 003A)SPACE相同。
用例:
通过使用NBSP添加填充来增加标头txt列的宽度,以便在标题列上调用string.trim()
时不会删除它。
答案 0 :(得分:0)
"它的排版方式应与(U + 003A)SPACE"相同。
所以它没有nbs / nbspace。通过致电PDType0Font.load(document, new File("..."))
获取您的字体。
顺便说一句,在字符串上调用new String()
并不是一个好主意。