2016-12-18 101 views
0

我需要使用c#和iTextSharp創建一個帶有表單的pdf文件並解析該表單。所以,如果我創建例如:一個文本框,我給它一個id像text_12和其他信息我創建另一個隱藏的文本框,並給它一個ID:lbl_12_title_someInfo_moreInfo等..其中12是唯一的ID ..後來我使用c#和iTextSharp解析,但它看起來並不像這樣做..
我需要創建一個文本框和存儲額外的信息,然後通過名稱獲取該字段,並從中檢索額外的信息。我怎樣才能做到這一點? 我試圖存儲文本框的默認值,但無法讀取它,無論我嘗試!如何正確存儲每個表單字段的附加信息並使用iTextSharp檢索它

+1

將您試過的代碼添加到您的問題中。 –

+0

我在這裏問一個最佳實踐,我的代碼是不相關的。有人使用Acrobat創建PDF表單,我解析字段名稱,這是一個微不足道的代碼,但似乎不是一種有效的做法。 – amira

+0

你想在該領域存儲什麼樣的附加信息?該信息是靜態的,還是可以根據字段值進行更改? –

回答

0

基於上述意見,我的問題,因爲我無法找到存儲PDF領域內的元數據的地方,我終於用下面的方法,我覺得最簡單的:

  1. 在Acrobat DC親我創建一個可見的文本字段,並將其命名爲「Input_1」。
  2. 然後我創建另一個字段,將其命名爲:「Info_1」,將其設置爲隱藏(在 字段屬性中),並將其默認值設置爲我需要存儲的元數據 (例如,我可以存儲Json字符串在那裏:{group:1,title:'myTitle', moreInfo:'some more info'}。
  3. 因此,對於每個輸入字段,我創建一個具有相同ID(數字) 的隱藏字段並存儲其他信息在
  4. 它的默認值保存的PDF文檔
  5. 使用iTextSharp的,我使用檢索表單域:

    PdfReader reader = new PdfReader(filePath); 
    AcroFields formFields = reader.AcroFields; 
    foreach (KeyValuePair <string, AcroFields.Item> kvp in formFields.Fields) 
    { 
        string fieldName = kvp.Key; 
        string fieldId = fieldName.Split('_')[1]; 
        string fieldInfo = formFields.GetField("Info_"+fieldId); 
        string fieldType = formFields.GetFieldType(fieldName); 
        // Now i can parse the fieldInfo string as I wish and store all info 
        // in the Database 
    } 
    
相關問題