表を含む PDF を作成しました。PdfPCellEvent をリッスンして、選択したセルにフィールドを作成することができました。
cell.setCellEvent( new PdfPCellEvent() {
@Override
public void cellLayout( PdfPCell pdfPCell,
Rectangle rectangle,
PdfContentByte[] canvas ) {
PdfContentByte pcb = canvas[canvas.length - 1];
PdfWriter writer = pcb.getPdfWriter();
PdfFormField field = PdfFormField.createTextField( writer, false, false, 3 );
field.setName( "quantity " + hashCode() );
field.setFieldFlags( PdfFormField.FF_EDIT );
Rectangle rect = new Rectangle( rectangle.getLeft() + 5, rectangle.getTop() - 5,
rectangle.getLeft() + rectangle.getWidth() - 5,
rectangle.getTop() - rectangle.getHeight() + 5);
field.setWidget( rect, PdfAnnotation.HIGHLIGHT_OUTLINE );
field.setFieldFlags( PdfAnnotation.FLAGS_PRINT );
writer.addAnnotation( field );
writer.flush();
}
} );
フィールドへのテキストの入力に関する限り、問題なく機能します。しかし、フィールドがフォーカスを失うと、コンテンツは消えます。フィールドに再びフォーカスを設定すると、データが再表示されます。
私の質問は、PdfFormField のテキストを印刷したままにするために何をする必要があるかということです。
ここにサンプル PDF があります: http://qr.sertal.ch/output.pdf
ご協力ありがとうございました。