2016-09-20 151 views
-1

我使用的.Net> iText的7iText的版本7 - document.close()關於PdfIndirectReference

在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第一次生成,但在所有後來的嘗試,我得到這個例外。

對此的任何幫助將非常感激。

在此先感謝。

+0

取而代之請表現出足夠的代碼來重現問題。 – mkl

回答

1

在Java中我有同樣的問題,因爲我使用靜態常量的字體。儘量不要使用PdfFont的靜態值。 我刪除這個

private static PdfFont font; 

,我和當地的價值觀

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

雅。與C#一樣。我終於想通了。謝謝.. –

+0

@RajatDoshi請接受Ulrich的回答。 –