iTextPDFを使用して、一部のテキスト入力からデータを取得するPDFを生成しています。iTextPDF - 生成された2番目のPDFファイルが最初に生成されたPDFファイルのテキストを表示
アプリケーションを実行して最初のPDFを作成すると、期待どおりに生成されます。
次に、いくつかの値を変更して別の値を生成します。これが問題の発生場所です。最初のPDFに表示される最後のエントリは、2番目に生成されたPDFの最初のエントリの上に印刷されます。
なぜこのようなことが起こっているのかよくわからないのですか?バッファーか何かに保存されていますか?ここで
は、PDFを生成するためのコードです:
public class ExportTicket implements Action{
PdfPCell titleCell = new PdfPCell();
PdfPCell contentCell = new PdfPCell();
public String performAction(HttpServletRequest request) throws PewException {
// CREATING DOCUMENT (ITEXTPDF)
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("Ticket_" + ticketNo + ".pdf"));
// Fonts
Font headingFont = new Font(Font.FontFamily.UNDEFINED, 10, Font.BOLD, BaseColor.BLACK);
// Open Document to Write
document.open();
// Table Creation
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(200);
table.setWidths(new int[]{ 5, 10 });
table.setHorizontalAlignment(Element.ALIGN_LEFT);
// Add Ticket Number
contentCell.addElement(new Chunk("Ticket Number: " + ticketNo, headingFont));
contentCell.setColspan(2);
table.addCell(contentCell);
// Add table to Document & Close Document
document.add(table)
document.close();
}
}
、第1は最初のファイルの生成を表示する2つ目は、第二のファイルの生成を表示し、出力用の添付画像を参照してください最初に生成PDFチケット番号のファイル:20170034 チケット番号のための第2の生成されたPDFファイル:20170035
はい、私は 'ExportTicket'クラスが再利用されていることを考えると、' contentCell'以来そのセルに追加されたコンテンツが蓄積されます。適合コードについては私の答えを見てください。 –