int ParserAnnots( CPDF_Document* pSourceDoc, CPDF_Dictionary * pPageDic, CPDF_RectArray * pRectArray, CPDF_ObjectArray * pObjectArray, int nUsage) { if (!pSourceDoc || !pPageDic) return FLATTEN_FAIL; GetContentsRect( pSourceDoc, pPageDic, pRectArray ); CPDF_Array* pAnnots = pPageDic->GetArray("Annots"); if (pAnnots) { FX_DWORD dwSize = pAnnots->GetCount(); for (int i = 0; i < (int)dwSize; i++) { CPDF_Object* pObj = pAnnots->GetElementValue(i); if (!pObj)continue; if (pObj->GetType() == PDFOBJ_DICTIONARY) { CPDF_Dictionary* pAnnotDic = (CPDF_Dictionary*)pObj; CFX_ByteString sSubtype = pAnnotDic->GetString("Subtype"); if (sSubtype == "Popup")continue; int nAnnotFlag = pAnnotDic->GetInteger("F"); if(nAnnotFlag & ANNOTFLAG_HIDDEN) continue; if(nUsage == FLAT_NORMALDISPLAY) { if(nAnnotFlag & ANNOTFLAG_INVISIBLE) continue; ParserStream( pPageDic, pAnnotDic, pRectArray, pObjectArray ); } else { if(nAnnotFlag & ANNOTFLAG_PRINT) ParserStream( pPageDic, pAnnotDic, pRectArray, pObjectArray ); } } } return FLATTEN_SUCCESS; }else{ return FLATTEN_NOTINGTODO; } }
int ParserAnnots(CPDF_Document* pSourceDoc, CPDF_Dictionary* pPageDic, CPDF_RectArray* pRectArray, CPDF_ObjectArray* pObjectArray, int nUsage) { if (!pSourceDoc || !pPageDic) return FLATTEN_FAIL; GetContentsRect(pSourceDoc, pPageDic, pRectArray); CPDF_Array* pAnnots = pPageDic->GetArrayFor("Annots"); if (!pAnnots) return FLATTEN_NOTHINGTODO; uint32_t dwSize = pAnnots->GetCount(); for (int i = 0; i < (int)dwSize; i++) { CPDF_Dictionary* pAnnotDic = ToDictionary(pAnnots->GetDirectObjectAt(i)); if (!pAnnotDic) continue; CFX_ByteString sSubtype = pAnnotDic->GetStringFor("Subtype"); if (sSubtype == "Popup") continue; int nAnnotFlag = pAnnotDic->GetIntegerFor("F"); if (nAnnotFlag & ANNOTFLAG_HIDDEN) continue; if (nUsage == FLAT_NORMALDISPLAY) { if (nAnnotFlag & ANNOTFLAG_INVISIBLE) continue; ParserStream(pPageDic, pAnnotDic, pRectArray, pObjectArray); } else { if (nAnnotFlag & ANNOTFLAG_PRINT) ParserStream(pPageDic, pAnnotDic, pRectArray, pObjectArray); } } return FLATTEN_SUCCESS; }