2012-07-30 139 views
1

我参与了一个使用iText生成PDF文件的项目。我想生成superscipt文本,并且我知道存在用于将文本块转换为上标的方法,但是,我希望根据输入来决定是否应该使用上标或者不是上标。最佳解决方案将如下所示:2<superscript>nd</superscript>生成文本“2 nd”。我可以只使用输入在iText中生成superscipt吗?

这是,或者类似这样的可能吗?

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

回答

1

如果你不能修改使用iText的代码,那么不,没有办法。 iText不会解析您在Chunk中输入的文本。

为了获得与想要实现的行为相似的行为,您需要执行HTML到PDF的转换,例如iText的伙伴XMLWorker

+0

unicode字符呢?它们是否可以插入以显示特定字符​​为上标?或者这是同样的情况吗? – 2012-07-31 15:50:10

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

希望这会帮助你。

相关问题