我参与了一个使用 iText 生成 pdf 文件的项目。我想生成上标文本,并且我知道存在将文本块转换为上标的方法,但是,我处于需要根据输入来决定一段文本是否应该是上标的情况。最佳解决方案类似于:2<superscript>nd</superscript>
生成文本“2 nd ”。
这是可能的吗?
值得注意的是,我并没有直接针对 iText 编写代码,它们之间是有层的。这就是为什么我需要决定什么是上标而不是基于输入。
如果您无法修改使用 iText 的代码,那么不,没有办法。iText 不会解析您放入Chunk
.
为了获得与您想要实现的行为类似的行为,您需要将 HTML 转换为 PDF,例如使用 iText 的配套XMLWorker。
当你找到一个<superscript>
标签时,你可以简单地创建一个具有正确属性的块:
public Chunk addSuperscript(String text) {
float leading = determineCurrentLeading();
Font f = determineCurrentFont();
Font supFont = new Font(f);
supFont.setSize(f.getSize() / 2f);
Chunk c = new Chunk(text, supFont);
c.setTextRise(leading / 2f);
return c;
}
然后该块将被添加到一个段落、一个 PdfPCell、... 根据您的实现,您可以确定当前使用的前导和字体。
希望这会帮助你。