gpt4 book ai didi

c# - 使用带有 C# 的 itext7 通过 acrofield 获取 pdf 页码

转载 作者:行者123 更新时间:2023-12-05 01:44:34 29 4
gpt4 key购买 nike

使用 iText7,我想通过表单字段获取 pdf 页码,但我找不到获取页码的方法或属性。

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;

以及如何在 C# 中使用 iText 7 实现

最佳答案

本质上你的问题是

I have no idea of how to get page number from 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 如果小部件注释未与任何页面关联(即既不是它自己的 P 条目已设置,也未从任何当前页面引用)。一般来说,您应该检查一下。

关于c# - 使用带有 C# 的 itext7 通过 acrofield 获取 pdf 页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45428103/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com