2016-04-15 28 views
0

我有一個奇怪的問題,我可以讀取所有控件,它們在pdf內的值以及賦值給它們的新值,除了一個。 pdf中有15個單選按鈕組,而代碼只讀14,跳過一個單選按鈕。這種事情發生在其他人身上嗎?使用iTextSharp在ASP.NET/C#應用程序中無法讀取PDF中的一個隨機單選按鈕

我的代碼看起來像這樣

AcroFields reader_fields = pdfReader.AcroFields; 
      foreach (DictionaryEntry de in pdfReader.AcroFields.Fields) 
      { 
       int field_type = reader_fields.GetFieldType(de.Key.ToString()); 
       string fieldTypeDesc = field_type == 2 ? "Checkbox" : field_type == 3 ? "Radiobutton" : field_type == 4 ? "Text" : field_type == 6 ? "Combo" : "Off"; 
       sbValues.Append(de.Key.ToString() + " - " + fieldTypeDesc + "<br />"); 
      } 

而且我使用iTextSharp的版本4.1.6.0

編輯

鏈接到PDF文件

Sample PDF

存在問題的單選按鈕組標題內存(短期和/或長期)

+1

如果您不共享PDF,則無法回答您的問題。 –

+0

嗨布魯諾我編輯了我原來的帖子。請看看它。謝謝 – HjD

+0

這是iTextSharp的舊版本。 –

回答

1

無論頁面放置如何,PDF中具有相同名稱的每個字段都被視爲相同字段。在你的情況下,你在頁面1和頁面2上都使用一個叫做Group12的字段。在第1頁上,這個字段對應於這個禁止/條件...和第2頁這個字段對應於Memory(short長期和/或長期)。如果您嘗試在Adobe Reader等軟件中填寫此表單,您會看到在一頁上檢查電臺時,您會從其他幾乎肯定不需要的電臺中檢查

+0

嘿克里斯, 感謝您指出。我一直試圖通過他們所在的不同形式的幫助來分別訪問它們,但不幸的是,我一直無法找到它們。你能指導我如何單獨訪問它們或更改其中一個字段的名稱,以便我可以相應地訪問它。謝謝。 – HjD

+0

你有Adobe Acrobat Professional或其他桌面出版軟件嗎?如果是這樣,我只是用它來改變並完成它。最終,您需要刪除兩個註釋中的一個,並使用新的唯一名稱創建一個新註釋。 Adobe只會讓您「重命名」其中的一個,從而讓您對此透明。如果您檢查實際的PDF,您會看到表單字段存儲在頁面流之外,因此無法區分頁面。但是,您選擇的值_happen_每頁都是唯一的,因此您可以使用它。 「是的,不,選擇1,2和3」。 –

+0

那麼最後我用acrobat閱讀器重新指定字段名稱及其可能的可接受值,以使代碼具有通用性。感謝Chris提供有用的見解。 – HjD

相關問題