如何防止表格内的文字移动?

时间:2019-05-08 10:10:45

标签: java forms itext7

在iText 7中,您可以创建acro表单,如https://itextpdf.com/en/resources/books/itext-7-jump-start-tutorial-java/chapter-4-making-pdf-interactive中所述。

您还可以为该字段提供一个值,该值可以由用户编辑。

但是,当您执行此操作时,一旦用户输入该字段,文本就会移位。 当用户完成编辑后,文本不会移回其原始位置。

PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
Document document = new Document(pdfDoc);
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
document.add(new Paragraph("Form").setTextAlignment(TextAlignment.CENTER).setFontSize(16));
document.add(new Paragraph("Full Name").setFontSize(12));

Rectangle rect = new Rectangle(99, 753.5F, 425, 15);
// I provide a default value of 
PdfTextFormField nameField = PdfTextFormField.createText(pdfDoc, rect, "name", "My default name");
form.addField(nameField);


// I draw some shapes to make the problem more obvious.
float offset = 65;
rect.setX(rect.getX() - offset);
rect.setWidth(rect.getWidth() + offset);
new PdfCanvas(pdfDoc.getLastPage())
    .rectangle(rect)
    .setStrokeColor(ColorConstants.BLACK)
    .setLineWidth(0.5F)
    .moveTo(rect.getX(), rect.getY() + 4)
    .lineTo(rect.getX() + rect.getWidth(), rect.getY() + 4)
    .stroke();

pdfDoc.close();

Desktop.getDesktop().open(new File(DEST));

enter image description here 在上图中,您可以看到文本排列整齐。

enter image description here 在上图中,用户已开始编辑该字段。它不再整齐地对齐

enter image description here 在上图中,用户已完成编辑。文本没有恢复到原来的位置。

在此示例中,效果很小。 但是,根据领域的规模,这可能会非常戏剧化。 尤其是在表中可能会令人不快。

有解决方案吗?

0 个答案:

没有答案