iText获取字段中的字符数

时间:2014-07-15 09:41:21

标签: java itext

我试图找出哪些格式的出生日期应该是使用iText的PDF中的空白字段,

我可以用一个值标记该字段,但然后需要知道出生​​日期必须是什么。

我想如果我离开了字段的长度,那么我就知道格式应该如何,因为格式可以是:

YYYYMMDDNNNN(14位数)

YYYYMMDD(10位数)

YYMMDD(8位数)

该字段具有固定的位数,如果我用太多数字标记该字段,则字段外的数字将消失。

如何找到空字段的长度?

我如何盖章:

private void stampValuesOnFields()
{
  try
  {
    PdfReader reader = new PdfReader(System.getProperty("com.sun.aas.instanceRoot") + "/PDF/Templates/org.pdf");
    String path = System.getProperty("com.sun.aas.instanceRoot") + "/PDF/Generated PDF/" + "new.pdf";
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(path));

    stamper.getAcroFields().setField("field", "19321029");
  }catch(Exception e)
  {}
}

以下是我尝试填写的pdf文件,但我希望它适用于其他格式为生日的其他pdf文件:

http://www.korkortsportalen.se/upload/dokument/blanketter/foretag/tstrk1031_lakarintyg_diabetes.pdf (“Sökandenspersonnummer”下的字段)

1 个答案:

答案 0 :(得分:1)

你很幸运。您的字段定义了/MaxLen,这意味着您可以找到字段的最大长度。在下面的屏幕截图中,您可以看到字段Falt__41的字段/注释字典的属性(可用于添加Sökandenspersonnummer):

enter image description here

如您所见,此字段最多可包含12个字符。此外,/Ff(字段标志)值为29360128或二进制值:1110000000000000000000000。这意味着以下标志处于活动状态:不拼写检查不滚动梳子。无论您输入什么,梳子标志都会使字符均匀分布在可用宽度上。在这种情况下,每个字符将占可用宽度的1/12。

现在如何检索/MaxLen值?在我的书中或多或少地解释了这一点,但我正在从记忆中写下以下几行:

AcroFields form = reader.getAcroFields();
AcroFields.Item item = form.getFieldItem("Falt__41");
PdfDictionary field = item.getMerged(0);
PdfNumber maxlen = field.getAsNumber(PdfName.MAXLEN);

现在,您可以获得int的{​​{1}}值。

重要说明:并非每个字段都有maxlen值。