iTextSharpexception:找不到PDF标题签名

我正在使用iTextSharp来阅读PDF文档的内容:

  PdfReader reader = new PdfReader(pdfPath); using (StringWriter output = new StringWriter()) { for (int i = 1; i <= reader.NumberOfPages; i++) output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy())); reader.Close(); pdfText = output.ToString(); } 

99%的时间它工作得很好。 但是,有一个PDF文件有时会抛出此exception:

找不到PDF标题签名。 StackTrace:在iTextSharp.text.pdf.PRTokeniser.CheckPdfHeader()at iTextSharp.text.pdf.PdfReader.ReadPdf()at iTextSharp.text.pdf.PdfReader..ctor(String filename,Byte [] ownerPassword)at Reader.PDF .DownloadPdf(String url)在C:\ Documents \ Visual Studio中

令人讨厌的是我不能总是重现错误。 有时它有效,有时则不然。 有谁遇到过这个问题?

经过一些研究,我发现这个问题与PDF生成过程中文件被破坏有关,或者与文档中不符合iTextSharp中实现的PDF标准的对象有关的错误。 它似乎只有在您从磁盘中读取PDF文件时才会发生。

我还没有找到问题的完整解决方案,但只有一个解决方法。 我所做的是使用PdfReader itextsharp对象读取PDF文档,看看在正常操作中读取文件之前是否发生错误或exception。

所以运行与此类似的东西:

 private bool IsValidPdf(string filepath) { bool Ret = true; PdfReader reader = null; try { reader = new PdfReader(filepath); } catch { Ret = false; } return Ret; }