2016-09-24 15 views
1

私はjavaとiText 7を使ってPDFを生成しています。iText 7 itextpdf.kernel.PdfException

私はPDFテンプレートを作成しました。動的にするために、このテンプレート内にいくつかのデータモデルがあります。

初めてこのテンプレートを使用してPDFを生成したとき、正常に動作しました。しかし、2回目に、テンプレート内のデータ値を変更してから再度生成すると、エラーが発生しました。

 
2016-09-24 18:35:17,589|http-bio-8080-exec-20|INFO|CustomerControllercom.itextpdf.kernel.PdfException: pdf.inderect.object.belong.to.other.pdf.document.Copy.object.to.current.pdf.document 
com.itextpdf.kernel.PdfException: pdf.inderect.object.belong.to.other.pdf.document.Copy.object.to.current.pdf.document 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:184) 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:174) 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:176) 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:176) 
    at com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) 
    at com.itextpdf.kernel.pdf.PdfWriter.writeToBody(PdfWriter.java:315) 
    at com.itextpdf.kernel.pdf.PdfWriter.flushObject(PdfWriter.java:232) 
    at com.itextpdf.kernel.pdf.PdfDocument.flushObject(PdfDocument.java:1257) 
    at com.itextpdf.kernel.pdf.PdfObject.flush(PdfObject.java:147) 
    at com.itextpdf.kernel.pdf.PdfObject.flush(PdfObject.java:124) 
    at com.itextpdf.kernel.pdf.PdfObjectWrapper.flush(PdfObjectWrapper.java:97) 
    at com.itextpdf.kernel.pdf.PdfPage.flush(PdfPage.java:410) 
    at com.itextpdf.kernel.pdf.PdfPage.flush(PdfPage.java:367) 
    at com.itextpdf.kernel.pdf.PdfDocument.close(PdfDocument.java:720) 
    at com.itextpdf.layout.Document.close(Document.java:115) 
+0

iText 7バージョン私が使用しているバージョン:7.0.0 – VincentGeng

+0

おそらく、あなたのコードが正しくありません。 – mkl

+1

あなたのコードを教えてください。 –

答えて

0

私はコードを隔離してエラーを引き起こし、PdfFontのすべての使用法をコメントアウトして、うまくいきました。

中国語のブログをチェックしたところ、このPDFをもう一度印刷したいときに、このエラーが原因であると思われます(私の場合はPdfFontのような)いくつかのドキュメントオブジェクトをリリースしませんでした。 http://blog.csdn.net/fu250/article/details/52604900

誰かがさらに詳細な回答をすることができたら大変感謝します。

public final PdfFont regular; パブリック最終Pdfフォント太字;

public InvoiceRecieptServiceImpl()throws IOException { this.regular = PdfFontFactory.createFont(FontConstants.HELVETICA); this.bold = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD); }

+1

あなたのコードはまだ表示されていません。私は中国語を理解していないし、Googleの翻訳は役に立たない。おそらく、異なるターゲット文書に対して同じ 'PdfFont'インスタンスを使用しますか?私はそれに対して助言をするだろう。 – mkl