2017-02-21 96 views
0

一點背景:我使用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

回答

0

道歉,而不是實際的問題。問題解決了。按照J Steen的說明做GIT。