如何创建多行输入框(类似于HTML Textarea)?

时间:2016-09-25 05:32:39

标签: itext

我正在从此链接运行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();
 }

1 个答案:

答案 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, 770144, 806)。您不应期望PDF表单的行为与HTML表单的行为相同。