iTextSharp pdfStamper.GetPdfLayers()KeyNotFoundException

问题描述:

一点背景:我使用iTextSharp预填充Adobe Sign字段并显示/隐藏相关图层。 PDF是在InDesign中创建的,并使用Acrobat图层作为Adobe PDF(交互式)导出。iTextSharp pdfStamper.GetPdfLayers()KeyNotFoundException

当试图使用{stamper} .GetPdfLayers()访问图层时,我得到一个KeyNotFoundException抛出异常

来源复制的问题:

string __sourceFileName = @"C:\Test\agreement.pdf"; 
string __destFileName = @"C:\Test\agreement - Updated.pdf"; 

using (FileStream outFile = new FileStream(__destFileName, FileMode.Create)) 
{ 
    PdfReader pdfReader = new PdfReader(__sourceFileName); 
    PdfStamper pdfWriter = new PdfStamper(pdfReader, outFile); 

    var __layers = pdfWriter.GetPdfLayers(); 

    pdfWriter.Close(); 
    pdfReader.Close(); 
} 

我下载了iTextSharp的来源,追查这个错误给AddOrder功能中的“SRC \核心的源路径PdfStamperImp.cs的1802线\ iTextSharp的\文\ PDF”。

layer = ocgmap[obj.ToString()]; 

以固定的最简单的方法是该单一线改变为以下::

上其中不存在一个键被用于查询字典线1808发生

特定错误

layer = (ocgmap.ContainsKey(obj.ToString())) ? ocgmap[obj.ToString()] : null; 

源重建完成后,PDF层返回时没有错误。 我希望这可以帮助任何遇到错误的人。

iTextSharp的源代码可以在GitHub上:https://github.com/itext/itextsharp

+0

当你问及回答你自己的问题时,你需要在适当的地方发布一个**问题**和一个**答案**。当您点击“提问问题”按钮时,甚至还可以选择执行此操作。请遵循网站的既定格式。 –

+0

但除此之外,保持良好的工作!为什么不提交一个拉动请求到你的错误修复的原始回购? –

+0

谢谢,一定错过了。由于我不熟悉GIT,因此将在下周做出拉取请求。 – AaronReynoldsUK

道歉,而不是实际的问题。问题解决了。按照J Steen的说明做GIT。