2017-08-01 62 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很多 –