0
私は、iTextを使用してmy springのmvc WebプロジェクトでPDFを作成しています。私はiText 5を初めて使っています。段落の下にテキストフィールドを追加する方法を教えてもらえますか?私の現在のコードに基づいて、テキストフィールドは段落の下に表示されません。私は段落の下に各テキストフィールドを表示したいので、PDFに質問を追加するかもしれません。iText 5段落の下にテキストフィールドを追加します。
try {
List<FormQuestionBean> questions = formBuilderBean.getQuestions();
MyHeaderAndFooter event = new MyHeaderAndFooter();
Document pdfDocument = new Document(PageSize.A4);
pdfDocument.setMargins(20, 20, 20, 30);
ByteArrayOutputStream pdfBaos = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(pdfDocument, pdfBaos);
writer.setPageEvent(event);
pdfDocument.open();
Paragraph paragraph1 = new Paragraph(FORM_NAME + " : " + formBuilderBean.getName(), HEADING);
paragraph1.setSpacingAfter(20);
pdfDocument.add(paragraph1);
for (FormQuestionBean formQuestionBean: questions) {
if (formQuestionBean.getFieldImplementation().contentEquals("Text Field")) {
Paragraph p = new Paragraph(formQuestionBean.getName());
pdfDocument.add(p);
TextField text = new TextField(writer, new Rectangle(36, 788, 559, 806), "text");
text.setBackgroundColor(BaseColor.WHITE);
PdfFormField field = text.getTextField();
writer.addAnnotation(field);
}
}
pdfDocument.close();
response.reset();
response.setHeader("Content-Length", String.valueOf(pdfBaos.size()));
response.setContentType("application/pdf");
response.setContentLength(pdfBaos.size());
String downloadName = getFormFileName(".pdf");
response.setHeader("Content-Disposition", "attachment; filename=\"" + downloadName + "\"");
OutputStream outputStream = response.getOutputStream();
pdfBaos.writeTo(outputStream);
outputStream.flush();
outputStream.close();
return true;
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
return false;
}
'PdfWriter'は、現在の垂直ページ位置*を決定するメソッド' getVerticalPosition'を持っています。あなたはこれを使うかもしれません。あるいは、汎用タグで 'Chunk'を使うこともできます。また、カスタムセルイベントでテーブルを使用することもできます。 – mkl
私は試してみます。どうもありがとう! –
*更新:テーブルとセル*を使って計算しました。 - 問題の解決策を考えている場合は、質問に編集する代わりに質問に答えてください。それをあなたのための解決策と見なさないなら、それを明確にして、あなたが嫌いな側面を指摘してください。 – mkl