2017-02-22 18 views
0

Теперь я пытаюсь изменить файл PDF с ТОЛЬКО текстовым контентом. Когда я используюКак использовать шрифт в других PDF-файлах? (itext7 PDF)

TextRenderInfo.getFont() 

он возвращает мне шрифт, который на самом деле является косвенным объектом.

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

было бы выброшено в этом случае, если закрыть документ PdfDocument.

Есть ли способ позволить мне повторно использовать этот шрифт в новом PDF-файле? ИЛИ, есть ли способ редактировать текст в 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. Я постараюсь понять это! Спасибо! –

Смежные вопросы