Chromium Code Reviews| Index: fpdfsdk/src/fpdfview.cpp |
| diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp |
| index f726fc9ae08fd9ff7bb515bd8ac71e54f29cfc26..4974da3e2535d3112892f017415f094d314bc9d4 100644 |
| --- a/fpdfsdk/src/fpdfview.cpp |
| +++ b/fpdfsdk/src/fpdfview.cpp |
| @@ -302,13 +302,42 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BY |
| CPDFXFA_Document* pDocument = FX_NEW CPDFXFA_Document(pPDFDoc, pProvider); |
| return pDocument; |
| } |
| + |
| +DLLEXPORT FX_BOOL STDCALL FPDF_HasXFAField(FPDF_DOCUMENT document, int& docType) |
| +{ |
| + if (!document) |
| + return FALSE; |
| + |
| + CPDF_Dictionary* pRoot = ((CPDF_Document*)document)->GetRoot(); |
| + if (!pRoot) |
| + return FALSE; |
| + |
| + CPDF_Dictionary* pAcroForm = pRoot->GetDict("AcroForm"); |
| + if (!pAcroForm) |
| + return FALSE; |
| + |
| + CPDF_Object* pXFA = pAcroForm->GetElement("XFA"); |
| + if (!pXFA) |
| + return FALSE; |
| + |
| + FX_BOOL bDynamicXFA = FALSE; |
|
Tom Sepez
2015/02/17 22:34:29
nit: assigning this to false and then immediately
|
| + bDynamicXFA = pRoot->GetBoolean("NeedsRendering", FALSE); |
| + |
| + if (bDynamicXFA) |
| + docType = DOCTYPE_DYNIMIC_XFA; |
| + else |
| + docType = DOCTYPE_STATIC_XFA; |
| + |
| + return TRUE; |
| +} |
| + |
| DLLEXPORT FPDF_BOOL STDCALL FPDF_LoadXFA(FPDF_DOCUMENT document) |
| { |
| - if (!document||!((CPDFXFA_Document*)document)->GetPDFDoc()) |
| + if (!document) |
| return FALSE; |
| int iDocType = DOCTYPE_PDF; |
| - FX_BOOL hasXFAField = FPDF_HasXFAField(((CPDFXFA_Document*)document)->GetPDFDoc(), iDocType); |
| + FX_BOOL hasXFAField = FPDF_HasXFAField(document, iDocType); |
| if (!hasXFAField) |
| return FALSE; |
| return ((CPDFXFA_Document*)document)->LoadXFADoc(); |