iText版本7 - document.close()给出关于PdfIndirectReference

时间:2016-09-20 14:42:58

标签: c# pdf-generation itext7

我正在使用.Net> iText 7。

pdf生成代码 - >完成所有操作后我说doc.Close()。这将抛出pdfException并显示消息“pdf.inderect.object.belong.to.other.pdf.document.Copy.object.to.current.pdf.document”

签出iText代码后,我发现 indirectReference 周围的异常内部属性名是: PdfException.PdfInderectObjectBelongToOtherPdfDocument

堆栈跟踪是:

at iText.Kernel.Pdf.PdfOutputStream.Write(PdfIndirectReference indirectReference)
   at iText.Kernel.Pdf.PdfOutputStream.Write(PdfDictionary pdfDictionary)
   at iText.Kernel.Pdf.PdfOutputStream.Write(PdfObject pdfObject)
   at iText.Kernel.Pdf.PdfOutputStream.Write(PdfDictionary pdfDictionary)
   at iText.Kernel.Pdf.PdfOutputStream.Write(PdfObject pdfObject)
   at iText.Kernel.Pdf.PdfOutputStream.Write(PdfDictionary pdfDictionary)
   at iText.Kernel.Pdf.PdfOutputStream.Write(PdfObject pdfObject)
   at iText.Kernel.Pdf.PdfWriter.WriteToBody(PdfObject pdfObj)
   at iText.Kernel.Pdf.PdfWriter.FlushObject(PdfObject pdfObject, Boolean canBeInObjStm)
   at iText.Kernel.Pdf.PdfDocument.FlushObject(PdfObject pdfObject, Boolean canBeInObjStm)
   at iText.Kernel.Pdf.PdfObject.Flush(Boolean canBeInObjStm)
   at iText.Kernel.Pdf.PdfPage.Flush(Boolean flushXObjects)
   at iText.Kernel.Pdf.PdfPage.Flush()
   at iText.Kernel.Pdf.PdfDocument.Close()
   at iText.Layout.Document.Close()

请注意:启动应用程序后,第一次生成pdf,但在以后的所有尝试中,我都会遇到此异常。

对此的任何帮助都将非常感激。

提前致谢。!!

1 个答案:

答案 0 :(得分:2)

在Java中我有同样的问题,因为我使用静态常量字体。尽量不要为PdfFont使用静态值。 我删除了这个

private static PdfFont font;

我将其替换为本地值

PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);