2017-09-08 5 views
1

Comment puis-je obtenir la taille de police d'un champ de formulaire PDF sur iText7?Comment obtenir la taille de police du champ de formulaire sur iText7?

Sur iText5, je pouvais le faire comme ceci:

PdfReader reader = new PdfReader(SRC); 
PdfStamper stamper = new PdfStamper(reader, outputStream); 
AcroFields fields = stamper.getAcroFields(); 

AcroFields.Item item = fields.getFieldItem(FIELDNAME); 
PdfDictionary merged = item.getMerged(0); 
TextField textField = new TextField(null, null, null); 
fields.decodeGenericDictionary(merged, textField); 
float fontSize = textField.getFontSize(); 

Je ne pouvais pas trouver comment je peux le faire sur iText7. Comment puis-je faire ceci?

Répondre

0

J'ai réussi à le faire. Mais je ne suis pas sûr que ce soit un moyen simple.

try (PdfDocument readDoc = new PdfDocument(new PdfReader(SRC))) { 
    PdfAcroForm pdfAcroForm = PdfAcroForm.getAcroForm(readDoc, false); 
    PdfFormField field = pdfAcroForm.getField(FIELDNAME); 
    PdfString defaultAppearance = field.getDefaultAppearance(); // like "/MSGothic 9 Tf 0 g" 
    float fontSize; 
    if (defaultAppearance != null) { 
    String[] array = defaultAppearance.toString().split(" "); 
    if (array.length > 2) { 
     fontSize = Float.parseFloat(array[1]); 
    } 
    } 
} 
+1

Je suis également aux prises avec ce problème. Le manque de documentation appropriée pour iText 7 est simplement stupéfiant. L'API est complètement différente de la version 5 mais les exemples sur le site iText ne couvrent qu'un nombre très limité de cas particuliers. Peu importe. Pour en revenir à votre question, je ne pense pas que 'field.getDefaultAppearance()' soit ce que vous voulez vraiment. Comme son nom l'indique, il devrait être l'apparence * default * de votre formulaire, pas celle avec laquelle les champs sont réellement rendus. – TXV