Pdfsharp-如何确定字段的页码

Pdfsharp-如何确定字段的页码,pdf,pdfsharp,Pdf,Pdfsharp,我需要在具有特定表单字段的页面上绘制图像。使用pdfsharp,给定字段名,如何查找与该字段关联的pdf页面?您可以使用field对象的page元素访问该字段的页面引用。然后使用此引用匹配文档中的页面 public PdfPage GetPageFromField( PdfDocument myDocument, string focusFieldName ) { // get the field we're looking for PdfTextField currentField =

我需要在具有特定表单字段的页面上绘制图像。使用pdfsharp,给定字段名,如何查找与该字段关联的pdf页面?

您可以使用field对象的page元素访问该字段的页面引用。然后使用此引用匹配文档中的页面

public PdfPage GetPageFromField( PdfDocument myDocument, string focusFieldName )
{
  // get the field we're looking for
  PdfTextField currentField = (PdfTextField)( fillablePdf.AcroForm.Fields["MyFocusField"]);
  if( currentField != null )
  {
    // get the page element
    var focusPageReference = (PdfReference)currentField.Elements["/P"];
    // loop through our pages to match the reference
    foreach( var page in myDocument.Pages )
    {
      if( page.Reference = focusPageReference )
      {
        return page;
      }     
    }
  }
  // could not find a page for this field
  return null;
}

这里有一个改进,它还返回了pagenum:

PdfPage GetPageFromField(PdfDocument myDocument, string focusFieldName, out int pageNum)
{
    // get the field we're looking for
    PdfAcroField currentField = (PdfAcroField)(myDocument.AcroForm.Fields[focusFieldName]);
    pageNum = 0;
    if (currentField != null)
    {
        // get the page element
        var focusPageReference = (PdfReference)currentField.Elements["/P"];
        // loop through our pages to match the reference
        foreach (var page in myDocument.Pages)
        {
            pageNum++;
            if (page.Reference == focusPageReference)
            {
                return page;
            }
        }
    }
    // could not find a page for this field
    return null;
}
据我记忆所及,P值不是强制性的。此外,在多个页面上有小部件的字段又如何呢?