Itext5 无法呈现 java 转义序列

问题描述

使用 itextpdf:5.0.6 准备 PDF。文本包含 java 转义序列(制表符:\t,换行符:\n,退格:\b,换页符:\f,回车符:\r)。

它能够呈现换行符,但将制表符 (\t) 视为单个空格。无法呈现换页,退格。需要一种在 PDF 中按预期呈现 Java 字符串的方法

使用的字体:Courier
Java 字符串 = Tab\tTab
pdf 格式的输出 = Tab Tab

Chunk chunk=new Chunk(string)
document.add(chunk)

解决方法

在这种情况下,您的期望是问题所在:Chunk 类既不承诺也不实现对这些控制字符的特殊处理,仅支持 \n 表示换行符和 {{1} } 就像空格一样处理。

如果您的代码中需要 TAB,请考虑使用 TAB 块(参见 this old answer)或第 2.2.6 节 iText in Action 中的 DrawInterface:垂直位置标记、分隔符和制表符 ,第 2 版(目前您可以免费查看整本书 here)。

因此,如果您需要一种在 PDF 中按预期呈现 Java 字符串的方法,您必须为这些控制字符解析 Java 字符串,在那里拆分字符串,并处理每个部分一种可以达到预期效果的方式。


顺便说一句,iText 5.0.6 是古老的。您应该考虑更新。