Index: fpdfsdk/src/fpdf_flatten.cpp |
diff --git a/fpdfsdk/src/fpdf_flatten.cpp b/fpdfsdk/src/fpdf_flatten.cpp |
index 4fea6a973c383b087be117fe2540b2804460503a..eeb9993efb977f1f6ed2b2152a7dac643ed47ba1 100644 |
--- a/fpdfsdk/src/fpdf_flatten.cpp |
+++ b/fpdfsdk/src/fpdf_flatten.cpp |
@@ -86,47 +86,44 @@ void ParserStream( CPDF_Dictionary * pPageDic, CPDF_Dictionary* pStream, CPDF_Re |
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; |
- } |
+ if (!pSourceDoc || !pPageDic) |
+ return FLATTEN_FAIL; |
+ |
+ GetContentsRect( pSourceDoc, pPageDic, pRectArray ); |
+ CPDF_Array* pAnnots = pPageDic->GetArray("Annots"); |
+ if (!pAnnots) |
+ return FLATTEN_NOTHINGTODO; |
+ |
+ FX_DWORD dwSize = pAnnots->GetCount(); |
+ for (int i = 0; i < (int)dwSize; i++) |
+ { |
+ CPDF_Object* pObj = pAnnots->GetElementValue(i); |
+ if (!pObj || pObj->GetType() != PDFOBJ_DICTIONARY) |
+ continue; |
+ |
+ 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; |
} |
@@ -345,14 +342,9 @@ DLLEXPORT int STDCALL FPDFPage_Flatten( FPDF_PAGE page, int nFlag) |
int iRet = FLATTEN_FAIL; |
iRet = ParserAnnots( pDocument, pPageDict, &RectArray, &ObjectArray, nFlag); |
- if (iRet == FLATTEN_NOTINGTODO) |
- { |
- return FLATTEN_NOTINGTODO; |
- }else if (iRet == FLATTEN_FAIL) |
- { |
- return FLATTEN_FAIL; |
- } |
- |
+ if (iRet == FLATTEN_NOTHINGTODO || iRet == FLATTEN_FAIL) |
+ return iRet; |
+ |
CPDF_Rect rcOriginalCB; |
CPDF_Rect rcMerger = CalculateRect( &RectArray ); |
CPDF_Rect rcOriginalMB = pPageDict->GetRect("MediaBox"); |