我试图找出哪些格式的出生日期应该是使用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”下的字段)
答案 0 :(得分:1)
你很幸运。您的字段定义了/MaxLen
,这意味着您可以找到字段的最大长度。在下面的屏幕截图中,您可以看到字段Falt__41
的字段/注释字典的属性(可用于添加Sökandenspersonnummer):
如您所见,此字段最多可包含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
值。