2017-03-02 128 views
0

當我按下按鈕時,checkedlistbox的項目應該用PDF編寫。 PDF文檔有1頁20個字段,但應該靈活。因此,如果checkedlistbox包含52個條目,則該程序會創建一個包含3個頁面的PDF(複製PDF並將其添加2次)。這可以工作,但以下頁面的字段與第一個字段具有相同的名稱。我希望這不是問題。itextsharp複製空白字段的pdf將其添加到pdf,僅讀取第一頁的字段

然後讀取字段名稱:

PdfReader pdfReader = new PdfReader(path); 
AcroFields pdfFormFields = pdfReader.AcroFields; 
foreach (KeyValuePair<string, AcroFields.Item> kvp in pdfFormFields.Fields) { 
    listoffieldnames.Add(kvp.Key.ToString()); 
} 
pdfReader.Close(); 

我的問題是,請讀者僅讀取第一頁的領域。

回答

0

該程序創建一個3頁的PDF(複製PDF並添加它2次)。這可以工作,但以下頁面的字段與第一個字段具有相同的名稱。我希望這不是問題。

那麼,這個的一個問題。

PDF只有一個抽象表單定義,其中唯一標識了一個字段的完全限定名稱。另一方面,字段可以具有多個小部件,即多個可視化,其可能在顯示細節方面不同(例如可能使用不同的字體或字體大小),但都顯示相同的值。同一來源的PDF到目標PDF

將代碼複製多個副本可以以不同的方式處理這個問題:

  • 它可能會忽略該領域的獨特問題,並創建一個具有相同名稱的多個表單域的PDF文件。
  • 它可能會識別重複的字段名稱並將這些字段與單個字段的多個窗口小部件名稱相同的名稱進行合併。
  • 它可能會識別重複的字段名稱並重命名重複項目以最終具有唯一的名稱。

(如果使用iTextSharp的創建這些副本:iTextSharp的可以用不同的方式來合併PDF文件,無論是速度快,啞或者沒有這麼快,智能化,實現第二個或第三個選項)

如何在啞第一種方式創建的PDF是由PDF瀏覽器處理的不同爲不同的觀衆,甚至不同版本的同一瀏覽器的:重複的領域要麼被解釋爲同一領域的多個小部件或與同一只的領域之一名稱被當作適當的字段處理,而其他名稱不活動/不存在。

至於你的情況以下頁面的字段具有相同的名稱作爲第一個,你複製的代碼是前兩種類型中的一種,因此,如果同一領域的多個副本是功能性可言,他們代表相同的單一表單字段。

相關問題