首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTextSharp pdfStamper.GetPdfLayers() KeyNotFoundException

iTextSharp pdfStamper.GetPdfLayers() KeyNotFoundException
EN

Stack Overflow用户
提问于 2017-02-21 15:26:52
回答 1查看 456关注 0票数 0

一些背景:我正在使用iTextSharp预填充Adobe字段,并显示/隐藏相关层。PDF是在InDesign中创建的,并以Adobe (Interactive)和Acrobat层的形式导出。

当试图使用{stamper}.GetPdfLayers()访问层时,我被抛出了一个.GetPdfLayers。

复制该问题的源:

代码语言:javascript
复制
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源代码,并将此错误跟踪到"src\core\iTextSharp\text\pdf“源路径中PdfStamperImp.cs第1802行的AddOrder函数。

第1808行出现了特定的错误,其中一个不存在的键用于查询字典:

代码语言:javascript
复制
layer = ocgmap[obj.ToString()];

最简单的修复方法是将这一行修改为以下内容:

代码语言:javascript
复制
layer = (ocgmap.ContainsKey(obj.ToString())) ? ocgmap[obj.ToString()] : null;

重新构建源之后,PDF层就会被返回,而不会出现错误。我希望这对任何遇到错误的人都有帮助。

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

EN

回答 1

Stack Overflow用户

发布于 2017-02-21 16:10:10

抱歉,不是真正的问题。问题解决了。会像J.Steen的笔记那样做一个GIT拉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42371423

复制
相关文章

相似问题

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