2015-09-08 46 views
0

我想使用iTextsharp加載表單PDF。當我嘗試使用Acofield爲該PDF中的字段元素設置值時,我得到「無效的投射異常」。 「將IDictionary對象類型轉換爲數組時出錯」。iTextsharp:AcroFields - 無法轉換'iTextSharp.text.pdf.PdfDictionary'類型的對象來鍵入'iTextSharp.text.pdf.PdfArray'

我們使用iTextSharp的5 *版本

錯誤堆棧跟蹤:

無法轉換類型 'iTextSharp.text.pdf.PdfDictionary' 對象鍵入 'iTextSharp.text.pdf.PdfArray' 。

at iTextSharp.text.pdf.AcroFields.Fill() 
    at iTextSharp.text.pdf.AcroFields..ctor(PdfReader reader, PdfWriter writer) 
    at iTextSharp.text.pdf.PdfStamperImp.GetAcroFields() 
    at iTextSharp.text.pdf.PdfStamper.get_AcroFields() 
    at generate_PDF.WebForm1.generate_PDF() in c:\Users\Documents\Visual Studio 2013\Projects\generate_PDF\generate_PDF\PDF.aspx.cs:line 159 
    at generate_PDF.WebForm1.BtnPrint_Click(Object sender, EventArgs e) in c:\Users\465816\Documents\Visual Studio 2013\Projects\generate_PDF\generate_PDF\PDF.aspx.cs:line 32 
    at System.Web.UI.WebControls.Button.OnClick(EventArgs e) 
    at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 
    at System. 

請在下面的鏈接中找到表格。

https://drive.google.com/file/d/0B3W8aJry8ZMERnJubHpMdVk5SmM/view?usp=sharing

但是,同樣的代碼工作的其他PDF格式。 請讓我知道得到這個錯誤的原因,這是由於PDF的原因?或任何其他問題。

+1

你可以分享表格嗎?這聽起來好像在表格中有錯誤... –

+1

你能分享表格嗎?這聽起來好像有一個錯誤... –

+0

嗨布魯諾,請檢查下面的鏈接參考。 [https://drive.google.com/open?id=0B3W8aJry8ZMERnJubHpMdVk5SmM] – Manikandan

回答

1

該例外的原因是您的示例PDF中的AcroForm PDF表單描述無效。


在PDF的AcroForm交互式表單字典(對象200)的字段的值鍵是一個字典對象(對象201):

201 0 obj 
<< 
/T(ŸJ˜OPZ?h&7·Œ]VŸÄþ) 
/Kids[ 190 0 R 191 0 R 192 0 R] 
>> 
endobj 
200 0 obj 
<< 
/DR 194 0 R 
/XFA[(uÕêÒãÊ\0224) 195 0 R(fÈáÕçÏ) 196 0 R(qÂâÃâÉ\0124) 197 0 R(aÆûÒýÍ\012") 198 0 R(uÈüÇïÅ\034=O) 199 0 R] 
/Fields 201 0 R 
/NeedAppearances true 
>> 
endobj 

但是說明書ISO 32000-1明確指定

字段數組(必需)對文檔的根字段(字段層次結構中沒有祖先的字段)的引用數組。

(表218 - 條目在交互形式字典)

所以該值必須是一個數組。

請詢問文件的來源以提供有效的PDF。

相關問題