我参与了一个使用iText生成pdf文件的项目。我想生成superscipt文本,我知道存在将文本块转换为上标的方法,但是,我希望根据输入决定一段文本是否应该是上标。最佳解决方案是:2<superscript>nd</superscript>
生成文本“2 nd ”。
这可能是这样吗?
值得注意的是,我不直接针对iText编写代码,之间有层次。这就是为什么我需要决定什么是上标而不是基于输入。
答案 0 :(得分:1)
如果你不能修改使用iText的代码,那么不,没有办法。 iText不会解析您在Chunk
中添加的文字。
为了获得与您想要实现的类似的行为,您需要使用iText的伴侣XMLWorker进行HTML到PDF的转换。
答案 1 :(得分:1)
当您找到<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,...根据您的实现,您可以确定当前使用的前导和字体。
希望这会对你有所帮助。