Mic*_*ang 2 .net c# pdf acrofields itext7
使用 iText7,我喜欢通过表单字段获取 pdf 页码,但我找不到获取页码的方法或属性。
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField field = fields["fieldName"];
field.page <-- there is no property
Run Code Online (Sandbox Code Playgroud)
我找到了这个:
PdfPage page = field.GetWidgets().First().GetPage();
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从 PdfPage 获取页码。
看起来 iText5 有这个(在 Java 中):
int page = form.getFieldPositions(name).get(0).page;
Run Code Online (Sandbox Code Playgroud)
我怎么能用 C# 中的 iText 7 做到这一点
基本上你的问题是
我不知道如何从
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)
Run Code Online (Sandbox Code Playgroud)
因此,您可以像这样检索页面小部件的页码:
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);
}
Run Code Online (Sandbox Code Playgroud)
谨防:
field.GetWidgets().First()隐含地假设该字段至少有一个小部件。这不能保证,可能有没有任何小部件的不可见字段。一般来说,你应该检查这个。
....GetPage()null如果小部件注释不与任何页面相关联(即既没有设置它自己的P条目,也没有从任何当前页面引用它),则可能会返回。一般来说,你应该检查这个。
| 归档时间: |
|
| 查看次数: |
3709 次 |
| 最近记录: |