CPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl, bool createIfNeeded) const { if (!pControl || !m_pInterForm) return nullptr; CPDFSDK_Widget* pWidget = nullptr; const auto it = m_Map.find(pControl); if (it != m_Map.end()) pWidget = it->second; if (pWidget) return pWidget; if (!createIfNeeded) return nullptr; CPDF_Dictionary* pControlDict = pControl->GetWidget(); CPDF_Document* pDocument = m_pDocument->GetPDFDocument(); CPDFSDK_PageView* pPage = nullptr; if (CPDF_Dictionary* pPageDict = pControlDict->GetDictFor("P")) { int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum()); if (nPageIndex >= 0) pPage = m_pDocument->GetPageView(nPageIndex); } if (!pPage) { int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict); if (nPageIndex >= 0) pPage = m_pDocument->GetPageView(nPageIndex); } if (!pPage) return nullptr; return static_cast<CPDFSDK_Widget*>(pPage->GetAnnotByDict(pControlDict)); }
int CPDFSDK_PageView::GetPageIndex() { if (m_page) { CPDF_Dictionary* pDic = m_page->m_pFormDict; CPDF_Document* pDoc = m_pSDKDoc->GetDocument(); if (pDoc && pDic) { return pDoc->GetPageIndex(pDic->GetObjNum()); } } return -1; }