我可以仅使用输入在iText中生成上标吗?

时间:2012-07-30 20:17:04

标签: java pdf itext

我参与了一个使用iText生成pdf文件的项目。我想生成superscipt文本,我知道存在将文本块转换为上标的方法,但是,我希望根据输入决定一段文本是否应该是上标。最佳解决方案是:2<superscript>nd</superscript>生成文本“2 nd ”。

这可能是这样吗?

值得注意的是,我不直接针对iText编写代码,之间有层次。这就是为什么我需要决定什么是上标而不是基于输入。

2 个答案:

答案 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,...根据您的实现,您可以确定当前使用的前导和字体。

希望这会对你有所帮助。