2017-08-01 100 views
0

隨着iText7,我喜歡通過表單字段獲得pdf頁碼,但我找不到獲取頁碼的方法或屬性。通過acofield使用itext7獲取PDF頁碼與C#

IDictionary<String, PdfFormField> fields = form.GetFormFields(); 
PdfFormField field = fields["fieldName"]; 
field.page <-- there is no property 

我發現這一個:

PdfPage page = field.GetWidgets().First().GetPage(); 

但我不知道如何從PdfPage獲得頁碼的想法。

看起來iText5有這樣一個(在Java中):

int page = form.getFieldPositions(name).get(0).page; 

我怎樣才能與iText的7做它在C#

回答

1

本質的問題是

我有不知道如何從PdfPage獲得頁碼。

PdfDocument有這樣的方法GetPageNumber

/// <summary>Gets page number by page.</summary> 
/// <param name="page">the page.</param> 
/// <returns>page number.</returns> 
public virtual int GetPageNumber(PdfPage page) 

因此,你可以檢索頁面窗口小部件的這樣的頁號:

using (PdfReader reader = new PdfReader(formDocumentFile)) 
using (PdfDocument pdf = new PdfDocument(reader)) 
{ 
    PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true); 
    PdfFormField field = form.GetField(fieldName); 
    PdfPage page = field.GetWidgets().First().GetPage(); 
    int number = pdf.GetPageNumber(page); 
    Console.WriteLine("Determined page number: {0}", number); 
} 

當心:

  • field.GetWidgets().First()隱含地假定該字段至少有一個小部件。這是不保證,可能有不可見的字段沒有任何小部件。一般來說你應該檢查一下。

  • ....GetPage()可能返回null如果Widget註釋不與任何頁面相關的(即沒有自己的P項設置也不是任何當前頁面引用)。一般來說你應該檢查一下。

+1

它適用於我,謝謝mkl很多 –