iTextSharp PDF读取错误

本文关键字:取错误 读取 PDF iTextSharp | 更新日期: 2023-09-27 18:20:26

我有下面的代码

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

iTextSharp PDF读取错误

最简单的原因是在这4个PDF上,pdfPath为null而不是字符串。检查pdfPath中是否存在空值。

这4个PDF的路径可能无效,这意味着那里没有PDF文件。

为了结束这个主题,我请求PDF供应商为我重新生成有问题的文件。他们确实重新生成并发送了我,我可以在不更改任何代码的情况下处理它们。PDF内容中似乎有问题,iTextSharp无法正确读取。我仍然想知道,因为他们的过程和我们的过程都没有改变。它可能是一个损坏的PDF某处。