2016-09-25 4 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

関連する問題