2016-09-24 282 views
1

我使用java和iText 7來生成PDF。iText 7 itextpdf.kernel.PdfException

我創建了一個PDF模板,並在該模板中包含一些數據模型以使其具有動態性。

當我第一次使用這個模板來生成PDF時,它工作正常。但第二次,我試圖修改模板內的數據值,然後再次生成它引發了一個錯誤。

 
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

最可能使用itext的代碼不正確。 – mkl

+1

向我們顯示您的代碼。 –

回答

0

我孤立的代碼導致了錯誤,註釋掉了所有使用PdfFont,它工作正常。

我查了一箇中文博客,好像這個錯誤是由於沒有發佈一些文檔對象(比如PdfFont在我的情況下),當你想再次打印這個PDF時。 http://blog.csdn.net/fu250/article/details/52604900

如果有人能給出更詳細的答案,我將非常感激。

public final PdfFont regular; public final PdfFont bold;

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

+1

你還沒有顯示你的代碼。我不懂中文,谷歌翻譯沒有幫助。你是否可以爲不同的目標文檔使用相同的'PdfFont'實例。我會反對這個建議。 – mkl