读取pdf的ITextSharp异常:重建失败:字典键“”不是名称

时间:2013-11-11 15:09:46

标签: c# pdf itextsharp

我在.net(c#)项目中使用iTextSharp库收到特定pdf文件的未处理异常。我无法理解我想上传的pdf具体是什么,虽然我可以看到基本的pdf我从互联网功能下载工作。 以下部分代码:

string pdfTemplate =“url to specific pdf”;  var pdfReader = new PdfReader(pdfTemplate);

抛出异常: 重建失败:字典键Z不是名称。在文件指针224;原始消息:字典键Z不是名称。在文件指针224

拜托,有什么建议吗?我没有想法......

1 个答案:

答案 0 :(得分:9)

文档信息词典中存在错误:

%PDF-1.4
1 0 obj
<<
/Title (þÿ)
/Creator (þÿ)
/Producer (þÿ Q t   4 . 8 . 2   \( C \)   2 0 1 1   N o k i a   C o r p o r a t i o n   a n d / o r   i t s   s u b s i d i a r y \( - i e s \))
/CreationDate (D:20131111142910)Z)
>>
endobj 

CreationDate 值有两个右括号。 iText正确地假定第一个是正确的,即完成值,因此,将 Z 视为下一个条目的关键。

但是密钥必须是名称,名称以斜杠开头,但是这个名称没有斜线。的句法的错误 !!因此:

  

字典键Z不是名称。在文件指针224

PdfReader作为失败后的最后手段试图再次阅读PDF,这次首先尝试重建交叉引用。由于问题与交叉引用无关,这显然会再次失败。因此:

  

重建失败:字典键Z不是名称。在文件指针224;原始消息:字典键Z不是名称。在文件指针224

创建此语法错误可能是Qt错误(Qt 4.8.2在此处被命名为创建者)。

PS:您是否尝试在Adobe Reader中打开此文件的文档属性?这里没有任何东西出现,这肯定是由于这个问题。