2016-09-25 40 views
0

我從這個鏈接運行MultiLineField例如:如何創建多行輸入框(類似於HTML Textarea)?

http://developers.itextpdf.com/examples/form-examples-itext5/multiline-fields

不過,我不能看到任何多行輸入框,讓人們輸入文字。

如何創建一個多行輸入框(類似於HTML Textarea)?

UPDATE

這裏是我現在的代碼。我無法在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(); 
} 

回答

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表單行爲相同。

+0

布魯諾,謝謝你的幫助!我測試了你的代碼。我能夠看到邊框,但我無法在盒裝區域輸入文字。我用我擁有的所有代碼更新了我的帖子。乾杯。 – curious1

+1

您可以使用'stamper.setFormFlattening(true)'去除所有的交互性。刪除該行,您的表單將保持一個表單。另外:您可以在創建該字段時設置文本。我會更新我的答案。 –

+0

謝謝你告訴我有關stamper.setFormFlattening(true)!它像一個魅力。再次感謝! – curious1