2017-09-08 44 views
1

如何在iText7上获得PDF表单字段的字体大小?如何获取iText7上表单字段的字体大小?

在iText5,我能做到这一点,因为这:

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(); 

我找不到我怎么能在iText7做到这一点。我怎样才能做到这一点?

回答

0

我设法做到了。但我不确定这是否是一种直接的方式。

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

我也在努力解决这个问题。 iText 7缺乏适当的文档简直令人惊叹。 API与第5版完全不同,但iText站点上的示例仅涵盖了非常有限的特殊情况。随你。回到你的问题,我不认为'field.getDefaultAppearance()'是你真正想要的。正如名称所示,它应该是表单的* default *外观,而不是字段实际呈现的那个。 – TXV