我正在从此链接运行MultiLineField示例:
http://developers.itextpdf.com/examples/form-examples-itext5/multiline-fields
但是,我无法看到任何允许人们输入文字的多行输入框。
如何创建多行输入框(类似于HTML Textarea)?
更新
这是我现在的代码。我无法在PDF表单中输入任何值。
public void createPdf_multilines(String filename) throws DocumentException, IOException {
PdfReader reader = new PdfReader(createForm());
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
AcroFields form = stamper.getAcroFields();
form.setField("text", "A B C D E F\nG H I J K L M N\nO P Q R S T U\r\nV W X Y Z\n\nAlphabet street");
stamper.setFormFlattening(true);
stamper.close();
}
public byte[] createForm() throws DocumentException, IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, baos);
document.open();
Rectangle rect = new Rectangle(36, 770, 144, 806);
TextField tf = new TextField(writer, rect, "text");
tf.setOptions(TextField.MULTILINE);
tf.setBorderColor(BaseColor.BLUE);
tf.setBorderWidth(2);
writer.addAnnotation(tf.getTextField());
document.close();
return baos.toByteArray();
}
答案 0 :(得分:3)
这会创建一个文本字段,当文本不适合文本区域的宽度时,它将包装文本:
Rectangle rect = new Rectangle(36, 770, 144, 806);
TextField tf = new TextField(writer, rect, "text");
tf.setOptions(TextField.MULTILINE);
tf.setBorderColor(BaseColor.BLUE);
tf.setText("A B C D E F\nG H I J K L M N\nO P Q R S T U\r\nV W X Y Z\n\nAlphabet street");
tf.setBorderWidth(2);
writer.addAnnotation(tf.getTextField());
我添加了边框宽度和边框颜色,以便您清楚地看到页面上的字段。也许这就是你的问题:也许这个领域在那里,但你只是没有看到它。
请注意,您不应期望人们能够在HTML中尽可能调整字段大小。在PDF中,所有字段都有固定坐标(在本例中为36, 770
和144, 806
)。您不应期望PDF表单的行为与HTML表单的行为相同。