您并没有告诉我们您是否需要手动(使用带有 GUI 的工具)或以编程方式(使用 iText)更改对齐方式的解决方案。
如果您想手动更改字段的对齐方式,只需在 Adobe Acrobat 中打开 PDF 模板(表单),然后选择更改 AcroForm 字段的选项。从左到右更改对齐方式。
如果您想以编程方式更改对齐方式,您应该告诉我们您使用的是 iText 7(您应该这样做)还是 iText 5(您可能会这样做)。
如果您使用的是 iText 7,对齐方式设置如下:
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
Map<String, PdfFormField> fields = form.getFormFields();
PdfFormField field;
field = fields.get("personal.name");
field.setJustification(PdfFormField.ALIGN_LEFT);
field.setValue("Test");
field = fields.get("personal.loginname");
field.setJustification(PdfFormField.ALIGN_CENTER);
field.setValue("Test");
field = fields.get("personal.password");
field.setJustification(PdfFormField.ALIGN_RIGHT);
field.setValue("Test");
field = fields.get("personal.reason");
field.setValue("Test");
pdfDoc.close();
另请参阅官方 iText 常见问题解答中的 How to align AcroFields?。
如果您使用的是 iText 5,对齐方式设置如下:
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields form = stamper.getAcroFields();
AcroFields.Item item;
item = form.getFieldItem("personal.name");
item.getMerged(0).put(PdfName.Q, new PdfNumber(PdfFormField.Q_LEFT));
item = form.getFieldItem("personal.loginname");
item.getMerged(0).put(PdfName.Q, new PdfNumber(PdfFormField.Q_CENTER));
item = form.getFieldItem("personal.password");
item.getMerged(0).put(PdfName.Q, new PdfNumber(PdfFormField.Q_RIGHT));
form.setField("personal.name", "Test");
form.setField("personal.loginname", "Test");
form.setField("personal.password", "Test");
form.setField("personal.reason", "Test");
stamper.close();
reader.close();
另请参阅官方 iText 常见问题解答中的 How to align AcroFields?。
如您所见,iText 7 代码更优雅,更易于理解。