Fix test result under XFA. This gives an error at an earlier
[pdfium.git] / fpdfsdk / src / fpdf_flatten.cpp
index 6d3440f..c7ef4b5 100644 (file)
@@ -6,6 +6,8 @@
 
 #include "../include/fsdk_define.h"
 #include "../include/fpdf_flatten.h"
+#include "../include/fpdfxfa/fpdfxfa_doc.h"
+#include "../include/fpdfxfa/fpdfxfa_page.h"
 
 typedef CFX_ArrayTemplate<CPDF_Dictionary*> CPDF_ObjectArray;
 typedef CFX_ArrayTemplate<CPDF_Rect> CPDF_RectArray;
@@ -220,7 +222,7 @@ void SetPageContents(CFX_ByteString key, CPDF_Dictionary* pPage, CPDF_Document*
                        pPage->SetAtReference("Contents", pDocument, pDocument->AddIndirectObject(pNewContents));
                        
                        CFX_ByteString sStream;
-                       sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", (FX_LPCSTR)key);
+                       sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
                        pNewContents->SetData((FX_LPCBYTE)sStream, sStream.GetLength(), FALSE, FALSE);
                }
                return;
@@ -267,7 +269,7 @@ void SetPageContents(CFX_ByteString key, CPDF_Dictionary* pPage, CPDF_Document*
                pContentsArray->AddReference(pDocument, dwObjNum);
                
                CFX_ByteString sStream;
-               sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", (FX_LPCSTR)key);
+               sStream.Format("q 1 0 0 1 0 0 cm /%s Do Q", key.c_str());
                pNewContents->SetData((FX_LPCBYTE)sStream, sStream.GetLength(), FALSE, FALSE);
        }
 }
@@ -332,7 +334,10 @@ DLLEXPORT int STDCALL FPDFPage_Flatten( FPDF_PAGE page, int nFlag)
                return FLATTEN_FAIL;
        }
 
-       CPDF_Page * pPage = (CPDF_Page*)( page );
+       CPDF_Page * pPage = ((CPDFXFA_Page*)( page ))->GetPDFPage();
+       if (!pPage)
+               return FLATTEN_FAIL;
+
        CPDF_Document * pDocument = pPage->m_pDocument;
        CPDF_Dictionary * pPageDict = pPage->m_pFormDict;
        
@@ -547,7 +552,7 @@ DLLEXPORT int STDCALL FPDFPage_Flatten( FPDF_PAGE page, int nFlag)
                }
 
                CFX_AffineMatrix m = GetMatrix(rcAnnot, rcStream, matrix);
-               sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f, (FX_LPCSTR)sFormName);
+               sTemp.Format("q %f 0 0 %f %f %f cm /%s Do Q\n", m.a, m.d, m.e, m.f, sFormName.c_str());
                sStream += sTemp;
 
                pNewXObject->SetData((FX_LPCBYTE)sStream, sStream.GetLength(), FALSE, FALSE);