2015-11-08 52 views
2

問題的背景:我可能會得到不同種類的模板,其中包含控件(文本框,複選框),有時會在一個文檔/單詞document.pdf文檔模板中。如何創建並填寫PDF表單

現在我必須在提供的模板中指定值,並將其保存爲pdf文檔。

所以我發現了一些對模板有用的稱爲Openoffice的東西,從那裏我可以添加控件並能夠保存爲pdf模板文檔。

現在,該模板需要分配值,爲那個發現一個DLL名爲iTextSharp。

基於樣本,而我試圖添加,在pdf模板中的字段的計數顯示爲0.任何機構可以幫助我分配PDF模板的值嗎? 下面是我用於這種情況下的代碼。

private void ListFieldNames() 
     { 
      string pdfTemplate = @"D:\17.pdf"; 
      loadPDF(pdfTemplate); 


      // title the form 
      //this.Text += " - " + pdfTemplate; 

      // create a new PDF reader based on the PDF template document 
      PdfReader pdfReader = new PdfReader(pdfTemplate); 

      // create and populate a string builder with each of the 
      // field names available in the subject PDF 
      StringBuilder sb = new StringBuilder(); 
      foreach (DictionaryEntry de in pdfReader.AcroFields.Fields) 
      { 
       sb.Append(de.Key.ToString() + Environment.NewLine); 
      } 

      // Write the string builder's content to the form's textbox 
      // userName.Text = sb.ToString(); 

     } 

回答

3

創建使用OpenOffice和利用iText(或iTextSharp的)灌裝出來的交互式PDF形式是顯而易見的。請閱讀我的書中的Chapter 6,更具體地說,請參閱第6.3.5節「填寫PDF表單」。本部分的第一部分標題爲「使用OpenOffice創建表單」。

enter image description here

您創建真正場和你給這些字段的名稱是很重要的。然後,你必須確保你的文檔導出爲PDF格式:

enter image description here

正如你所看到的,你需要檢查下一步創建PDF的複選框。

我有理由相信,你沒有這樣做,因爲你說:

基礎上,而我試圖添加,在PDF模板中字段的計數顯示爲樣本0.

如果您希望我們檢查該PDF模板中的字段計數是否爲0或您是否做錯了,那麼您應共享您的PDF。

如果你做正確的事(即:在我的書中描述的),你可以填寫這樣的形式:

PdfReader reader = new PdfReader(template); 
PdfStamper stamper = new PdfStamper(reader, 
    new FileStream(newFile, FileMode.Create)); 
AcroFields form = stamper.AcroFields;   
form.SetField(key1, value1);  
form.SetField(key2, value2);  
form.SetField(key3, value3); 
... 
stamper.Close(); 

在這個片段中key1key2key3,...是在OpenOffice中創建表單時爲字段定義的值,以及value1,value2value3,...是要添加到字段中的值。

+0

我能夠做到這一點,但在開放式辦公室控制中創建pdf模板時,我能夠管理,但在使用iTextsharp控件填充控件中的數據時,控件的大小非常大,請問您能糾正我實現此功能的正確方法? –

+0

定義**尺寸非常大**。你是在談論*文件大小*,*字體大小*(你在模板中定義這個; iText只是服從),*字段大小*(再次:你定義這個)。如果您以太大的方式定義字體或字段,請不要抱怨字體太大。如果字體或字段不是你的意思,請在新的問題中澄清*。不要使用此評論部分發布其他問題。 –

+0

:當然,並感謝您對以上問題提供的寶貴指導 –