如何在其他PDF文件中使用字体? (itext7 PDF)

时间:2017-02-22 22:55:54

标签: pdf fonts itext7

我现在正尝试修改仅包含文本内容的PDF文件。当我使用

TextRenderInfo.getFont()

它返回一个Font,它实际上是一个间接对象。

pdf.inderect.object.belong.to.other.pdf.document.Copy.object.to.current.pdf.document 
在关闭PdfDocument时会抛出

有没有办法让我在新的PDF文件中重复使用这个字体?或者,有没有办法在PDF中就地编辑文本内容(不改变字体,颜色,fontSize)?

我正在使用itext7。

由于

1 个答案:

答案 0 :(得分: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));