2015-11-02 8 views
0

У меня есть ниже кодiTextSharp PDF Read Error

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 равно нулю вместо строки. Проверьте значение null в pdfPath.

+0

нет пути к пути – techspider

0

Путь из 4 PDF-файлов может быть недействительным, а это значит, что там нет файла PDF.

+0

Это привело бы к другой трассировке стека. – mkl