我正在構建一個應用程序,該應用程序允許用戶使用圖層將文本插入到PDF中。Swing和iText字體呈現之間的差異
可以使用應用程序設置PDF頁面中文本的位置,該應用程序在JPanel內使用ICEPdf呈現PDF。選擇圖層的位置和大小後,應用程序使用iText(v。5.3.2)將其呈現爲PDF。
我面臨的問題是,來自Swing的字體渲染與PDF中的最終結果略有不同。
下面是一些屏幕截圖,都使用相同的邊框內的黑體Plain字體:
渲染與Swing文本:
protected void paintComponent(Graphics g){
//for each line...
g.drawString(text, b0, b1);
//b0 and b1 are computed from the selected bounding box for the text
}
我有這樣的:
用iText呈現文本:
PdfTemplate t; //PdfTemplate is created elsewhere
ColumnText ct = new ColumnText(t);
ct.setRunDirection(PdfWriter.RUN_DIRECTION_NO_BIDI);
ct.setSpaceCharRatio(1);
ct.setSimpleColumn(new Phrase(text, font), b0, b1, b3, b4, font.getSize(), Element.ALIGN_BOTTOM);
//b0, b1, b2 and b3 are the bounding box of the text
ct.go();
我有這樣的:
所以,問題是:什麼可以做,使Swing和iText的渲染字體完全相同的方式?我可以調整Swing或iText,因此無論修改哪些代碼,我都需要爲用戶提供真正的WYSIWYG體驗。
我嘗試過使用其他字體和類型,但它們之間仍然存在一些差異。我想我錯過了一些配置。
謝謝。
你使用哪種字體?您可以嘗試在PDF中嵌入字體。你也可以檢查字符對的字距,並在任何一邊進行定製。 – StanislavL
我在兩側都使用了Helvetica平原。 Helvetica是核心字體之一,所以我不認爲我必須導入它。克寧可能是其中一個問題。你有什麼想法在Swing中如何改變它? –
你在使用itext的fontmapper嗎?你在嵌入字體嗎? – djeikyb