如何创建多行输入框(类似于HTMLTextarea)?
How to create a multi-line input box (similar to HTML Textarea)?
我是 运行 来自这个 link 的 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();
}
这将创建一个文本字段,当文本不适合文本区域的宽度时,该文本字段将换行:
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 表单的行为方式相同。
我是 运行 来自这个 link 的 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();
}
这将创建一个文本字段,当文本不适合文本区域的宽度时,该文本字段将换行:
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 表单的行为方式相同。