2017-02-22 4 views
0

J'essaye maintenant de modifier un dossier de pdf avec le contenu SEULEMENT de texte. Quand j'utiliseComment utiliser la police dans d'autres fichiers PDF? (itext7 PDF)

TextRenderInfo.getFont() 

il me renvoie une police qui est en fait un objet indirect.

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

sera lancé dans ce cas lorsque vous fermez le document PDF.

Y at-il un moyen de me laisser réutiliser cette police dans un nouveau fichier PDF? OU, existe-t-il un moyen d'éditer sur place le contenu du texte au format PDF (sans changer la police, la couleur, la taille de police)?

J'utilise itext7.

Merci

Répondre

2

Tout d'abord, du message d'erreur que je vois que vous n'utilisez pas la dernière version de iText, qui est 7.0.2 pour le moment. Je vous recommande donc de mettre à jour votre version iText.

Deuxièmement, il est en effet possible d'utiliser une police dans un autre document. Mais pour ce faire, vous devez d'abord copier l'objet de police correspondant à cet autre document (comme indiqué dans le message d'exception en passant). Mais vous devriez être averti que cette approche a certaines limites, par ex. Dans le cas d'un sous-ensemble de polices, vous ne pourrez utiliser que les glyphes présents dans le sous-ensemble de polices d'origine du document source et ne pourrez pas utiliser d'autres glyphes.

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

Merci pour votre réponse, maintenant le problème se transforme en comment donner "destPath" à textRenderInfo. Je vais essayer de comprendre! Je vous remercie! –