2017-02-22 178 views
0

我現在試圖修改只有文本內容的PDF文件。當我使用如何在其他PDF文件中使用字體? (itext7 PDF)

TextRenderInfo.getFont() 

它返回給我一個實際上是間接對象的字體。

pdf.inderect.object.belong.to.other.pdf.document.Copy.object.to.current.pdf.document 

在關閉PdfDocument時會引發這種情況。

有沒有辦法讓我在新的PDF文件中重複使用這個Font?或者,有沒有辦法就地編輯PDF中的文本內容(不更改字體,顏色,fontSize)?

我正在使用itext7。

感謝

回答

2

首先,從錯誤消息我看,你是不是使用最新版本的iText的,這是7.0.2此刻的。所以我建議你更新你的iText版本。其次,確實可以在另一個文檔中使用字體。但要做到這一點,首先必須將相應的字體對象複製到其他文檔中(如異常消息中所述)。但應該警告您這種方法有一些限制,例如如果是字體子集,則只能使用源文檔中原始字體子集中存在的字形,並且不能使用其他字形。

PdfFont font = textRenderInfo.getFont(); // font from source document 
PdfDocument newPdfDoc = ... // new PdfDocument you want to write some text to 

// copy the font dictionary to the new document 
PdfDictionary fontCopy = font.getPdfObject().copyTo(newPdfDoc); 

// create a PdfFont instance corresponding to the font in the new document 
PdfFont newFont = PdfFontFactory.createFont(fontCopy); 

// Use newFont in newPdfDoc, e.g.: 
Document doc = new Document(newPdfDoc); 
doc.add(new Paragraph("Hello").setFont(newFont)); 
+0

感謝您的迴應,現在問題變成如何將「destPath」賦予textRenderInfo。我會試圖弄清楚它!謝謝! –

相關問題