读取 pdf 的 ITextSharp 异常:重建失败:字典键“”不是名称
Posted
技术标签:
【中文标题】读取 pdf 的 ITextSharp 异常:重建失败:字典键“”不是名称【英文标题】:ITextSharp exception to read pdf: Rebuild failed: Dictionary key "" is not a name 【发布时间】:2013-11-23 10:39:09 【问题描述】:我在 .net (c#) 项目中使用 iTextSharp 库收到特定 pdf 文件的未处理异常。我无法理解我想上传的 pdf 的具体内容,但我可以看到我从 Internet 下载的基本 pdf 功能有效。 以下部分代码:
string pdfTemplate ="url 到特定的 pdf"; var pdfReader = new PdfReader(pdfTemplate);
抛出异常: 重建失败:字典键 Z 不是名称。在文件指针 224;原始消息:字典键 Z 不是名称。在文件指针 224
请问有什么建议吗?我没有想法......
【问题讨论】:
【参考方案1】:文档信息字典有错误:
%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 中打开此文件的文档属性?这里没有弹出任何内容,这肯定是由于该问题。
【讨论】:
#mkl,非常感谢您的回答!非常有帮助以上是关于读取 pdf 的 ITextSharp 异常:重建失败:字典键“”不是名称的主要内容,如果未能解决你的问题,请参考以下文章
.jpg 到 .pdf 转换 - iTextSharp.text.PageSize' 在 Windows Phone 8.1 中引发异常
C# iTextSharp PDFReader 总是从 PDF 的开头读取
求助,c#如何利用iTextSharp.dll读取PDF的书签信息