2015-11-02 64 views
0

我有下面的代碼iTextSharp的PDF閱讀錯誤

using (var reader = new PdfReader(pdfPath)) 
{ 
    for (int pageIndex = 1; pageIndex <= reader.NumberOfPages; pageIndex++) 
    { 
     var text = PdfTextExtractor.GetTextFromPage(reader, pageIndex); 
     //my other logic goes here 
    } 
} 

我得到的值不能爲空在行

using (var reader = new PdfReader(pdfPath)) 

我不知道爲什麼它失敗了幾個PDF文件。我能夠讀取100個PDF文件,但只能讀取4個PDF文件,我收到了這個錯誤。

錯誤:

System.ArgumentNullException: Value cannot be null. 
Parameter name: key 
    at System.Collections.Generic.Dictionary`2.FindEntry(TKey key) 
    at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value) 
    at System.util.collections.HashSet2`1.AddAndCheck(T item) 
    at iTextSharp.text.pdf.PdfReader.PageRefs.IteratePages(PRIndirectReference rpage) 
    at iTextSharp.text.pdf.PdfReader.PageRefs.IteratePages(PRIndirectReference rpage) 
    at iTextSharp.text.pdf.PdfReader.PageRefs.IteratePages(PRIndirectReference rpage) 
    at iTextSharp.text.pdf.PdfReader.PageRefs.IteratePages(PRIndirectReference rpage) 
    at iTextSharp.text.pdf.PdfReader.PageRefs.IteratePages(PRIndirectReference rpage) 
    at iTextSharp.text.pdf.PdfReader.PageRefs.ReadPages() 
    at iTextSharp.text.pdf.PdfReader.PageRefs..ctor(PdfReader reader) 
    at iTextSharp.text.pdf.PdfReader.ReadPages() 
    at iTextSharp.text.pdf.PdfReader.ReadPdf() 
    at iTextSharp.text.pdf.PdfReader..ctor(IRandomAccessSource byteSource, Boolean partialRead, Byte[] ownerPassword, X509Certificate certificate, ICipherParameters certificateKey, Boolean closeSourceOnConstructorError) 
    at iTextSharp.text.pdf.PdfReader..ctor(String filename) 

我iTextSharp的版本是5.5.7.0

+0

你能否提供引發異常的文件名? –

+0

文件名:Bills_080415.pdf ...我有很多這樣的文件使用相同的文件命名約定使用此代碼進行處理。 – techspider

+0

我看了異常,我似乎發生在'iTextSharp.text.pdf.PdfReader.ReadPages'方法調用期間。也許文件損壞或格式不正確。 –

回答

0

只是爲了關閉這個主題,我已經要求PDF供應商爲我重新生成有問題的文件。他們重新生成併發送給我,我可以在不更改任何代碼的情況下處理它們。看起來,PDF內容中有些東西不能正確讀取iTextSharp。我仍然懷疑,因爲他們的流程和流程沒有變化。它可能是某處損壞的PDF。

0

最簡單的理由是,關於這4個PDF文件,pdfPath是空的,而不是一個字符串。檢查pdfPath中的空值。

+0

路徑中沒有null – techspider

0

4個PDF文件的路徑可能無效,也就是說,那裏沒有PDF文件。

+0

這會導致不同的堆棧跟蹤。 – mkl