【问题标题】:iText 7 itextpdf.kernel.PdfExceptioniText 7 itextpdf.kernel.PdfException
【发布时间】:2016-09-24 10:57:32
【问题描述】:

我正在使用 java 和 iText 7 来生成 PDF。

我创建了一个 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 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:184) 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:174) 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:176) 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:176) 在 com.itextpdf.kernel.pdf.PdfOutputStream.write(PdfOutputStream.java:104) 在 com.itextpdf.kernel.pdf.PdfWriter.writeToBody(PdfWriter.java:315) 在 com.itextpdf.kernel.pdf.PdfWriter.flushObject(PdfWriter.java:232) 在 com.itextpdf.kernel.pdf.PdfDocument.flushObject(PdfDocument.java:1257) 在 com.itextpdf.kernel.pdf.PdfObject.flush(PdfObject.java:147) 在 com.itextpdf.kernel.pdf.PdfObject.flush(PdfObject.java:124) 在 com.itextpdf.kernel.pdf.PdfObjectWrapper.flush(PdfObjectWrapper.java:97) 在 com.itextpdf.kernel.pdf.PdfPage.flush(PdfPage.java:410) 在 com.itextpdf.kernel.pdf.PdfPage.flush(PdfPage.java:367) 在 com.itextpdf.kernel.pdf.PdfDocument.close(PdfDocument.java:720) 在 com.itextpdf.layout.Document.close(Document.java:115)

【问题讨论】:

  • 我正在使用的 iText 7 版本:7.0.0
  • 您使用 itext 的代码很可能不正确。
  • 向我们展示您的代码。

标签: java pdf itext itext7


【解决方案1】:

我隔离了导致错误的代码,注释掉了PdfFont的所有用法,它工作正常。

我查看了一个中文博客,似乎这个错误是由于当你想再次打印这个 PDF 时没有释放一些文档对象(比如我的例子中的 PdfFont)引起的。 http://blog.csdn.net/fu250/article/details/52604900

如果有人能给出更详细的答案,我将不胜感激。

public final PdfFont 常规; public final PdfFont 粗体;

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

【讨论】:

  • 您尚未显示您的代码。我不懂中文,谷歌翻译也没有用。您是否可能对不同的目标文档使用相同的 PdfFont 实例。我建议不要这样做。
猜你喜欢
  • 1970-01-01
  • 2017-08-12
  • 2023-02-03
  • 2023-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 2020-03-21
  • 1970-01-01
相关资源
最近更新 更多