2012-07-30 43 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,......根據您的實現,你可以確定當前使用的領先和字體。

希望這會幫助你。

相關問題