FX_BOOL GetContentsRect( CPDF_Document * pDoc, CPDF_Dictionary* pDict, CPDF_RectArray * pRectArray ) { CPDF_Page* pPDFPage = FX_NEW CPDF_Page; pPDFPage->Load( pDoc, pDict, FALSE ); pPDFPage->ParseContent(); FX_POSITION pos = pPDFPage->GetFirstObjectPosition(); while (pos) { CPDF_PageObject* pPageObject = pPDFPage->GetNextObject(pos); if (!pPageObject)continue; CPDF_Rect rc; rc.left = pPageObject->m_Left; rc.right = pPageObject->m_Right; rc.bottom = pPageObject->m_Bottom; rc.top = pPageObject->m_Top; if (IsValiableRect(rc, pDict->GetRect("MediaBox"))) { pRectArray->Add(rc); } } delete pPDFPage; return TRUE; }
void ParserStream( CPDF_Dictionary * pPageDic, CPDF_Dictionary* pStream, CPDF_RectArray * pRectArray, CPDF_ObjectArray * pObjectArray ) { if (!pStream)return; CPDF_Rect rect; if (pStream->KeyExist("Rect")) rect = pStream->GetRect("Rect"); else if (pStream->KeyExist("BBox")) rect = pStream->GetRect("BBox"); if (IsValiableRect(rect, pPageDic->GetRect("MediaBox"))) pRectArray->Add(rect); pObjectArray->Add(pStream); }
void GetContentsRect(CPDF_Document* pDoc, CPDF_Dictionary* pDict, CPDF_RectArray* pRectArray) { std::unique_ptr<CPDF_Page> pPDFPage(new CPDF_Page(pDoc, pDict, false)); pPDFPage->ParseContent(); for (const auto& pPageObject : *pPDFPage->GetPageObjectList()) { CFX_FloatRect rc; rc.left = pPageObject->m_Left; rc.right = pPageObject->m_Right; rc.bottom = pPageObject->m_Bottom; rc.top = pPageObject->m_Top; if (IsValiableRect(rc, pDict->GetRectFor("MediaBox"))) pRectArray->Add(rc); } }