首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullReferenceException in ItextSharp

NullReferenceException in ItextSharp
EN

Stack Overflow用户
提问于 2015-01-16 07:07:08
回答 1查看 1.9K关注 0票数 0

当我试图解析一个PDF文件时,在itextsharp 5.0.6库中得到了以下异常

以下是PDF文件https://backup.filesanywhere.com/fs/v.aspx?v=8c726b8f5a6673b56b6d的链接

代码语言:javascript
复制
                try
                {
                    string s = null;
                    MessageBox.Show("Not-Protected");
                    PdfReader read = new PdfReader(openFileDialog1.FileName);
                    //MessageBox.Show(read.NumberOfPages.ToString());
                    for (int i = 1; i <= read.NumberOfPages; i++)
                    {
                        s = PdfTextExtractor.GetTextFromPage(read, i, new SimpleTextExtractionStrategy());
                        MessageBox.Show(s);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

System.NullReferenceException: Object reference not set to an instance of an object.
   at iTextSharp.text.pdf.PdfContentParser.ReadArray()
   at iTextSharp.text.pdf.PdfContentParser.ReadPRObject()
   at iTextSharp.text.pdf.PdfContentParser.Parse(List`1 ls)
   at iTextSharp.text.pdf.parser.PdfContentStreamProcessor.ProcessContent(Byte[] contentBytes, PdfDictionary resources)
   at iTextSharp.text.pdf.parser.PdfReaderContentParser.ProcessContent[E](Int32 pageNumber, E renderListener)
   at iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(PdfReader reader, Int32 pageNumber, ITextExtractionStrategy strategy)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-16 13:36:06

PDF的第一页的内容流在TJ操作符的数组操作数中包含一个数组开始括号'[‘。这是不允许的,因为TJ运算符的数组操作数可能只包含字符串和数字。

此外,在该数组操作数中没有匹配的数组结束括号‘],因此数组操作数本身的结束括号关闭了这个(非法)内部数组,并且数组操作数不再有结束括号。因此,iText将所有剩余的内容流解析到数组中,并在内容流的末尾运行异常。

Adobe是众所周知的,它忽略某些错误并试图修复运行中的其他错误。知道页面内容描述中不允许嵌套数组,它似乎忽略了非法的开始括号。Adobe的这种行为非常讨厌,因为它允许缺陷PDF创建软件蓬勃发展。

PS:正在讨论的线路:

代码语言:javascript
复制
[(&)110($,"#'#"0'#.\(1\(2'0',#+345467839':'#.\(1;<"'0',#;345467839':'#.\(1!=.0',#\(345467839':'+.\(1\(2'0',#+7)(5)35(5467834':'+.\(1;<"0',#;7)(5)35(5467834)[(&)110($,"#'#"0'#.\(1\(2'0',#+345467839':'#.\(1;<"'0',#;345467839':'#.\(1!=.0',#\(345467839':'+.\(1\(2'0',#+7)(5)35(5467834':'+.\(1;<"0',#;7)(5)35(5467834)(':'*!>1;<"0',#;385467837)] TJ
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27978898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档