| Index: fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
|
| diff --git a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
|
| index 85a1f16f5d80d4d661088be42553cab208ceeb21..701d99990807ac976735e1817b67b51ab35068ab 100644
|
| --- a/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
|
| +++ b/fpdfsdk/fpdfxfa/fpdfxfa_doc.cpp
|
| @@ -663,22 +663,18 @@ void CPDFXFA_Document::ExportData(CXFA_FFDoc* hDoc,
|
| m_pXFADocView->GetDoc()->SavePackage(XFA_HASHCODE_Data, &fileWrite,
|
| nullptr);
|
| } else if (fileType == FXFA_SAVEAS_XDP) {
|
| - if (m_pPDFDoc == NULL)
|
| + if (!m_pPDFDoc)
|
| return;
|
| CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot();
|
| - if (pRoot == NULL)
|
| + if (!pRoot)
|
| return;
|
| CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm");
|
| - if (NULL == pAcroForm)
|
| + if (!pAcroForm)
|
| return;
|
| - CPDF_Object* pXFA = pAcroForm->GetObjectBy("XFA");
|
| - if (pXFA == NULL)
|
| - return;
|
| - if (!pXFA->IsArray())
|
| - return;
|
| - CPDF_Array* pArray = pXFA->GetArray();
|
| - if (NULL == pArray)
|
| + CPDF_Array* pArray = ToArray(pAcroForm->GetObjectBy("XFA"));
|
| + if (!pArray)
|
| return;
|
| +
|
| int size = pArray->GetCount();
|
| for (int i = 1; i < size; i += 2) {
|
| CPDF_Object* pPDFObj = pArray->GetObjectAt(i);
|
| @@ -952,73 +948,70 @@ FX_BOOL CPDFXFA_Document::_ExportSubmitFile(FPDF_FILEHANDLER* pFileHandler,
|
| CFPDF_FileStream fileStream(pFileHandler);
|
|
|
| if (fileType == FXFA_SAVEAS_XML) {
|
| - const char* content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
|
| - fileStream.WriteBlock(content, 0, strlen(content));
|
| + const char kContent[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
|
| + fileStream.WriteBlock(kContent, 0, strlen(kContent));
|
| m_pXFADoc->SavePackage(XFA_HASHCODE_Data, &fileStream, nullptr);
|
| - } else if (fileType == FXFA_SAVEAS_XDP) {
|
| - if (flag == 0)
|
| - flag = FXFA_CONFIG | FXFA_TEMPLATE | FXFA_LOCALESET | FXFA_DATASETS |
|
| - FXFA_XMPMETA | FXFA_XFDF | FXFA_FORM;
|
| - if (m_pPDFDoc == NULL) {
|
| - fileStream.Flush();
|
| - return FALSE;
|
| - }
|
| - CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot();
|
| - if (pRoot == NULL) {
|
| - fileStream.Flush();
|
| - return FALSE;
|
| - }
|
| - CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm");
|
| - if (NULL == pAcroForm) {
|
| - fileStream.Flush();
|
| - return FALSE;
|
| - }
|
| - CPDF_Object* pXFA = pAcroForm->GetObjectBy("XFA");
|
| - if (pXFA == NULL) {
|
| - fileStream.Flush();
|
| - return FALSE;
|
| - }
|
| - if (!pXFA->IsArray()) {
|
| - fileStream.Flush();
|
| - return FALSE;
|
| - }
|
| - CPDF_Array* pArray = pXFA->GetArray();
|
| - if (NULL == pArray) {
|
| - fileStream.Flush();
|
| - return FALSE;
|
| - }
|
| - int size = pArray->GetCount();
|
| - for (int i = 1; i < size; i += 2) {
|
| - CPDF_Object* pPDFObj = pArray->GetObjectAt(i);
|
| - CPDF_Object* pPrePDFObj = pArray->GetObjectAt(i - 1);
|
| - if (!pPrePDFObj->IsString())
|
| - continue;
|
| - if (!pPDFObj->IsReference())
|
| - continue;
|
| - CPDF_Object* pDirectObj = pPDFObj->GetDirect();
|
| - if (!pDirectObj->IsStream())
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "config" && !(flag & FXFA_CONFIG))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "template" && !(flag & FXFA_TEMPLATE))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "localeSet" && !(flag & FXFA_LOCALESET))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "datasets" && !(flag & FXFA_DATASETS))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "xmpmeta" && !(flag & FXFA_XMPMETA))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "xfdf" && !(flag & FXFA_XFDF))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "form" && !(flag & FXFA_FORM))
|
| - continue;
|
| - if (pPrePDFObj->GetString() == "form") {
|
| - m_pXFADoc->SavePackage(XFA_HASHCODE_Form, &fileStream, nullptr);
|
| - } else if (pPrePDFObj->GetString() == "datasets") {
|
| - m_pXFADoc->SavePackage(XFA_HASHCODE_Datasets, &fileStream, nullptr);
|
| - } else {
|
| - // PDF,creator.
|
| - }
|
| + return TRUE;
|
| + }
|
| +
|
| + if (fileType != FXFA_SAVEAS_XDP)
|
| + return TRUE;
|
| +
|
| + if (!flag) {
|
| + flag = FXFA_CONFIG | FXFA_TEMPLATE | FXFA_LOCALESET | FXFA_DATASETS |
|
| + FXFA_XMPMETA | FXFA_XFDF | FXFA_FORM;
|
| + }
|
| + if (!m_pPDFDoc) {
|
| + fileStream.Flush();
|
| + return FALSE;
|
| + }
|
| + CPDF_Dictionary* pRoot = m_pPDFDoc->GetRoot();
|
| + if (!pRoot) {
|
| + fileStream.Flush();
|
| + return FALSE;
|
| + }
|
| + CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm");
|
| + if (!pAcroForm) {
|
| + fileStream.Flush();
|
| + return FALSE;
|
| + }
|
| + CPDF_Array* pArray = ToArray(pAcroForm->GetObjectBy("XFA"));
|
| + if (!pArray) {
|
| + fileStream.Flush();
|
| + return FALSE;
|
| + }
|
| +
|
| + int size = pArray->GetCount();
|
| + for (int i = 1; i < size; i += 2) {
|
| + CPDF_Object* pPDFObj = pArray->GetObjectAt(i);
|
| + CPDF_Object* pPrePDFObj = pArray->GetObjectAt(i - 1);
|
| + if (!pPrePDFObj->IsString())
|
| + continue;
|
| + if (!pPDFObj->IsReference())
|
| + continue;
|
| + CPDF_Object* pDirectObj = pPDFObj->GetDirect();
|
| + if (!pDirectObj->IsStream())
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "config" && !(flag & FXFA_CONFIG))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "template" && !(flag & FXFA_TEMPLATE))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "localeSet" && !(flag & FXFA_LOCALESET))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "datasets" && !(flag & FXFA_DATASETS))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "xmpmeta" && !(flag & FXFA_XMPMETA))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "xfdf" && !(flag & FXFA_XFDF))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "form" && !(flag & FXFA_FORM))
|
| + continue;
|
| + if (pPrePDFObj->GetString() == "form") {
|
| + m_pXFADoc->SavePackage(XFA_HASHCODE_Form, &fileStream, nullptr);
|
| + } else if (pPrePDFObj->GetString() == "datasets") {
|
| + m_pXFADoc->SavePackage(XFA_HASHCODE_Datasets, &fileStream, nullptr);
|
| + } else {
|
| + // PDF,creator.
|
| }
|
| }
|
| return TRUE;
|
|
|