Index: fpdfsdk/src/fpdfsave.cpp |
diff --git a/fpdfsdk/src/fpdfsave.cpp b/fpdfsdk/src/fpdfsave.cpp |
index ddf4a47513288ab9080521a504482dcafe4a166d..bea5392670551da8dda36ad67132284787a5a9a8 100644 |
--- a/fpdfsdk/src/fpdfsave.cpp |
+++ b/fpdfsdk/src/fpdfsave.cpp |
@@ -22,40 +22,36 @@ class CFX_IFileWrite final : public IFX_StreamWrite |
{ |
public: |
- CFX_IFileWrite(); |
- FX_BOOL Init( FPDF_FILEWRITE * pFileWriteStruct ); |
- virtual FX_BOOL WriteBlock(const void* pData, size_t size) override; |
- virtual void Release() override {} |
+ CFX_IFileWrite(); |
+ FX_BOOL Init( FPDF_FILEWRITE * pFileWriteStruct ); |
+ virtual FX_BOOL WriteBlock(const void* pData, size_t size) override; |
+ virtual void Release() override {} |
protected: |
- FPDF_FILEWRITE* m_pFileWriteStruct; |
+ FPDF_FILEWRITE* m_pFileWriteStruct; |
}; |
CFX_IFileWrite::CFX_IFileWrite() |
{ |
- m_pFileWriteStruct = NULL; |
+ m_pFileWriteStruct = NULL; |
} |
FX_BOOL CFX_IFileWrite::Init( FPDF_FILEWRITE * pFileWriteStruct ) |
{ |
- if (!pFileWriteStruct) |
- return FALSE; |
- else |
- { |
- m_pFileWriteStruct = pFileWriteStruct; |
- } |
- return TRUE; |
+ if (!pFileWriteStruct) |
+ return FALSE; |
+ |
+ m_pFileWriteStruct = pFileWriteStruct; |
+ return TRUE; |
} |
FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size) |
{ |
- if (m_pFileWriteStruct) |
- { |
- m_pFileWriteStruct->WriteBlock( m_pFileWriteStruct, pData, size ); |
- return TRUE; |
- } |
- else |
- return FALSE; |
+ if (!m_pFileWriteStruct) |
+ return FALSE; |
+ |
+ m_pFileWriteStruct->WriteBlock( m_pFileWriteStruct, pData, size ); |
+ return TRUE; |
} |
#define XFA_DATASETS 0 |
@@ -63,298 +59,298 @@ FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size) |
FX_BOOL _SaveXFADocumentData(CPDFXFA_Document* pDocument, CFX_PtrArray& fileList) |
{ |
- if (!pDocument) |
- return FALSE; |
- if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA) |
- return TRUE; |
- if (!CPDFXFA_App::GetInstance()->GetXFAApp()) |
- return TRUE; |
- |
- IXFA_DocView* pXFADocView = pDocument->GetXFADocView(); |
- if (NULL == pXFADocView) |
- return TRUE; |
- |
- IXFA_DocHandler *pXFADocHandler = CPDFXFA_App::GetInstance()->GetXFAApp()->GetDocHandler(); |
- CPDF_Document * pPDFDocument = pDocument->GetPDFDoc(); |
- if (pDocument == NULL) |
- return FALSE; |
- |
- CPDF_Dictionary* pRoot = pPDFDocument->GetRoot(); |
- if (pRoot == NULL) |
- return FALSE; |
- CPDF_Dictionary* pAcroForm = pRoot->GetDict("AcroForm"); |
- if (NULL == pAcroForm) |
- return FALSE; |
- CPDF_Object* pXFA = pAcroForm->GetElement("XFA"); |
- if (pXFA == NULL) |
- return TRUE; |
- if(pXFA->GetType() != PDFOBJ_ARRAY) |
- return FALSE; |
- CPDF_Array* pArray = pXFA->GetArray(); |
- if (NULL == pArray) |
- return FALSE; |
- int size = pArray->GetCount(); |
- int iFormIndex = -1; |
- int iDataSetsIndex = -1; |
- int iTemplate = -1; |
- int iLast = size - 2; |
- for (int i = 0; i < size - 1; i++) |
- { |
- CPDF_Object* pPDFObj = pArray->GetElement(i); |
- if (pPDFObj->GetType() != PDFOBJ_STRING) |
- continue; |
- if (pPDFObj->GetString() == "form") |
- iFormIndex = i+1; |
- else if (pPDFObj->GetString() == "datasets") |
- iDataSetsIndex = i+1; |
- else if (pPDFObj->GetString() == FX_BSTRC("template")) |
- iTemplate = i + 1; |
- } |
- IXFA_ChecksumContext* pContext = NULL; |
+ if (!pDocument) |
+ return FALSE; |
+ if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA) |
+ return TRUE; |
+ if (!CPDFXFA_App::GetInstance()->GetXFAApp()) |
+ return TRUE; |
+ |
+ IXFA_DocView* pXFADocView = pDocument->GetXFADocView(); |
+ if (NULL == pXFADocView) |
+ return TRUE; |
+ |
+ IXFA_DocHandler *pXFADocHandler = CPDFXFA_App::GetInstance()->GetXFAApp()->GetDocHandler(); |
+ CPDF_Document * pPDFDocument = pDocument->GetPDFDoc(); |
+ if (pDocument == NULL) |
+ return FALSE; |
+ |
+ CPDF_Dictionary* pRoot = pPDFDocument->GetRoot(); |
+ if (pRoot == NULL) |
+ return FALSE; |
+ CPDF_Dictionary* pAcroForm = pRoot->GetDict("AcroForm"); |
+ if (NULL == pAcroForm) |
+ return FALSE; |
+ CPDF_Object* pXFA = pAcroForm->GetElement("XFA"); |
+ if (pXFA == NULL) |
+ return TRUE; |
+ if(pXFA->GetType() != PDFOBJ_ARRAY) |
+ return FALSE; |
+ CPDF_Array* pArray = pXFA->GetArray(); |
+ if (NULL == pArray) |
+ return FALSE; |
+ int size = pArray->GetCount(); |
+ int iFormIndex = -1; |
+ int iDataSetsIndex = -1; |
+ int iTemplate = -1; |
+ int iLast = size - 2; |
+ for (int i = 0; i < size - 1; i++) |
+ { |
+ CPDF_Object* pPDFObj = pArray->GetElement(i); |
+ if (pPDFObj->GetType() != PDFOBJ_STRING) |
+ continue; |
+ if (pPDFObj->GetString() == "form") |
+ iFormIndex = i+1; |
+ else if (pPDFObj->GetString() == "datasets") |
+ iDataSetsIndex = i+1; |
+ else if (pPDFObj->GetString() == FX_BSTRC("template")) |
+ iTemplate = i + 1; |
+ } |
+ IXFA_ChecksumContext* pContext = NULL; |
#define XFA_USECKSUM |
#ifdef XFA_USECKSUM |
- //Checksum |
- pContext = XFA_Checksum_Create(); |
- FXSYS_assert(pContext); |
- pContext->StartChecksum(); |
- |
- //template |
- if (iTemplate > -1) |
- { |
- CPDF_Stream *pTemplateStream = pArray->GetStream(iTemplate); |
- CPDF_StreamAcc streamAcc; |
- streamAcc.LoadAllData(pTemplateStream); |
- uint8_t* pData = (uint8_t*)streamAcc.GetData(); |
- FX_DWORD dwSize2 = streamAcc.GetSize(); |
- IFX_FileStream *pTemplate = FX_CreateMemoryStream(pData, dwSize2); |
- pContext->UpdateChecksum((IFX_FileRead*)pTemplate); |
- pTemplate->Release(); |
- } |
+ //Checksum |
+ pContext = XFA_Checksum_Create(); |
+ FXSYS_assert(pContext); |
+ pContext->StartChecksum(); |
+ |
+ //template |
+ if (iTemplate > -1) |
+ { |
+ CPDF_Stream *pTemplateStream = pArray->GetStream(iTemplate); |
+ CPDF_StreamAcc streamAcc; |
+ streamAcc.LoadAllData(pTemplateStream); |
+ uint8_t* pData = (uint8_t*)streamAcc.GetData(); |
+ FX_DWORD dwSize2 = streamAcc.GetSize(); |
+ IFX_FileStream *pTemplate = FX_CreateMemoryStream(pData, dwSize2); |
+ pContext->UpdateChecksum((IFX_FileRead*)pTemplate); |
+ pTemplate->Release(); |
+ } |
#endif |
- CPDF_Stream* pFormStream = NULL; |
- CPDF_Stream* pDataSetsStream = NULL; |
- if (iFormIndex != -1) |
- { |
- //Get form CPDF_Stream |
- CPDF_Object* pFormPDFObj = pArray->GetElement(iFormIndex); |
- if (pFormPDFObj->GetType() == PDFOBJ_REFERENCE) |
- { |
- CPDF_Reference* pFormRefObj = (CPDF_Reference*)pFormPDFObj; |
- CPDF_Object* pFormDircetObj = pFormPDFObj->GetDirect(); |
- if (NULL != pFormDircetObj && pFormDircetObj->GetType() == PDFOBJ_STREAM) |
- { |
- pFormStream = (CPDF_Stream*)pFormDircetObj; |
- } |
- } |
- else if (pFormPDFObj->GetType() == PDFOBJ_STREAM) |
- { |
- pFormStream = (CPDF_Stream*)pFormPDFObj; |
- } |
- } |
- |
- if (iDataSetsIndex != -1) |
- { |
- //Get datasets CPDF_Stream |
- CPDF_Object* pDataSetsPDFObj = pArray->GetElement(iDataSetsIndex); |
- if (pDataSetsPDFObj->GetType() == PDFOBJ_REFERENCE) |
- { |
- CPDF_Reference* pDataSetsRefObj = (CPDF_Reference*)pDataSetsPDFObj; |
- CPDF_Object* pDataSetsDircetObj = pDataSetsRefObj->GetDirect(); |
- if (NULL != pDataSetsDircetObj && pDataSetsDircetObj->GetType() == PDFOBJ_STREAM) |
- { |
- pDataSetsStream = (CPDF_Stream*)pDataSetsDircetObj; |
- } |
- } |
- else if (pDataSetsPDFObj->GetType() == PDFOBJ_STREAM) |
- { |
- pDataSetsStream = (CPDF_Stream*)pDataSetsPDFObj; |
- } |
- } |
- //end |
- //L"datasets" |
- { |
- IFX_FileStream* pDsfileWrite = FX_CreateMemoryStream(); |
- if ( NULL == pDsfileWrite ) |
- { |
- pContext->Release(); |
- pDsfileWrite->Release(); |
- return FALSE; |
- } |
- if (pXFADocHandler->SavePackage(pXFADocView->GetDoc(), CFX_WideStringC(L"datasets"), pDsfileWrite) && pDsfileWrite->GetSize()>0) |
- { |
+ CPDF_Stream* pFormStream = NULL; |
+ CPDF_Stream* pDataSetsStream = NULL; |
+ if (iFormIndex != -1) |
+ { |
+ //Get form CPDF_Stream |
+ CPDF_Object* pFormPDFObj = pArray->GetElement(iFormIndex); |
+ if (pFormPDFObj->GetType() == PDFOBJ_REFERENCE) |
+ { |
+ CPDF_Reference* pFormRefObj = (CPDF_Reference*)pFormPDFObj; |
+ CPDF_Object* pFormDircetObj = pFormPDFObj->GetDirect(); |
+ if (NULL != pFormDircetObj && pFormDircetObj->GetType() == PDFOBJ_STREAM) |
+ { |
+ pFormStream = (CPDF_Stream*)pFormDircetObj; |
+ } |
+ } |
+ else if (pFormPDFObj->GetType() == PDFOBJ_STREAM) |
+ { |
+ pFormStream = (CPDF_Stream*)pFormPDFObj; |
+ } |
+ } |
+ |
+ if (iDataSetsIndex != -1) |
+ { |
+ //Get datasets CPDF_Stream |
+ CPDF_Object* pDataSetsPDFObj = pArray->GetElement(iDataSetsIndex); |
+ if (pDataSetsPDFObj->GetType() == PDFOBJ_REFERENCE) |
+ { |
+ CPDF_Reference* pDataSetsRefObj = (CPDF_Reference*)pDataSetsPDFObj; |
+ CPDF_Object* pDataSetsDircetObj = pDataSetsRefObj->GetDirect(); |
+ if (NULL != pDataSetsDircetObj && pDataSetsDircetObj->GetType() == PDFOBJ_STREAM) |
+ { |
+ pDataSetsStream = (CPDF_Stream*)pDataSetsDircetObj; |
+ } |
+ } |
+ else if (pDataSetsPDFObj->GetType() == PDFOBJ_STREAM) |
+ { |
+ pDataSetsStream = (CPDF_Stream*)pDataSetsPDFObj; |
+ } |
+ } |
+ //end |
+ //L"datasets" |
+ { |
+ IFX_FileStream* pDsfileWrite = FX_CreateMemoryStream(); |
+ if ( NULL == pDsfileWrite ) |
+ { |
+ pContext->Release(); |
+ pDsfileWrite->Release(); |
+ return FALSE; |
+ } |
+ if (pXFADocHandler->SavePackage(pXFADocView->GetDoc(), CFX_WideStringC(L"datasets"), pDsfileWrite) && pDsfileWrite->GetSize()>0) |
+ { |
#ifdef XFA_USECKSUM |
- //Datasets |
- pContext->UpdateChecksum((IFX_FileRead*)pDsfileWrite); |
- pContext->FinishChecksum(); |
+ //Datasets |
+ pContext->UpdateChecksum((IFX_FileRead*)pDsfileWrite); |
+ pContext->FinishChecksum(); |
#endif |
- CPDF_Dictionary* pDataDict = FX_NEW CPDF_Dictionary; |
- if (iDataSetsIndex != -1) |
- { |
- if (pDataSetsStream) |
- pDataSetsStream->InitStream(pDsfileWrite, pDataDict); |
- } |
- else |
- { |
- CPDF_Stream* pData = FX_NEW CPDF_Stream(NULL, 0, NULL); |
- pData->InitStream(pDsfileWrite, pDataDict); |
- FX_DWORD AppStreamobjnum = pPDFDocument->AddIndirectObject(pData); |
- CPDF_Reference* pRef = (CPDF_Reference*)pPDFDocument->GetIndirectObject(AppStreamobjnum); |
- { |
- iLast = pArray->GetCount() -2; |
- pArray->InsertAt(iLast,CPDF_String::Create("datasets")); |
- pArray->InsertAt(iLast+1, pData, pPDFDocument); |
- } |
- } |
- fileList.Add(pDsfileWrite); |
- } |
- } |
- |
- |
- //L"form" |
- { |
- |
- IFX_FileStream* pfileWrite = FX_CreateMemoryStream(); |
- if (NULL == pfileWrite) |
- { |
- pContext->Release(); |
- return FALSE; |
- } |
- if(pXFADocHandler->SavePackage(pXFADocView->GetDoc(), CFX_WideStringC(L"form"), pfileWrite, pContext) && pfileWrite > 0) |
- { |
- CPDF_Dictionary* pDataDict = FX_NEW CPDF_Dictionary; |
- if (iFormIndex != -1) |
- { |
- if (pFormStream) |
- pFormStream->InitStream(pfileWrite, pDataDict); |
- } |
- else |
- { |
- CPDF_Stream* pData = FX_NEW CPDF_Stream(NULL, 0, NULL); |
- pData->InitStream(pfileWrite, pDataDict); |
- FX_DWORD AppStreamobjnum = pPDFDocument->AddIndirectObject(pData); |
- CPDF_Reference* pRef = (CPDF_Reference*)pPDFDocument->GetIndirectObject(AppStreamobjnum); |
- { |
- iLast = pArray->GetCount() -2; |
- pArray->InsertAt(iLast, CPDF_String::Create("form")); |
- pArray->InsertAt(iLast+1, pData, pPDFDocument); |
- } |
- } |
- fileList.Add(pfileWrite); |
- } |
- } |
- pContext->Release(); |
- return TRUE; |
+ CPDF_Dictionary* pDataDict = FX_NEW CPDF_Dictionary; |
+ if (iDataSetsIndex != -1) |
+ { |
+ if (pDataSetsStream) |
+ pDataSetsStream->InitStream(pDsfileWrite, pDataDict); |
+ } |
+ else |
+ { |
+ CPDF_Stream* pData = FX_NEW CPDF_Stream(NULL, 0, NULL); |
+ pData->InitStream(pDsfileWrite, pDataDict); |
+ FX_DWORD AppStreamobjnum = pPDFDocument->AddIndirectObject(pData); |
+ CPDF_Reference* pRef = (CPDF_Reference*)pPDFDocument->GetIndirectObject(AppStreamobjnum); |
+ { |
+ iLast = pArray->GetCount() -2; |
+ pArray->InsertAt(iLast,CPDF_String::Create("datasets")); |
+ pArray->InsertAt(iLast+1, pData, pPDFDocument); |
+ } |
+ } |
+ fileList.Add(pDsfileWrite); |
+ } |
+ } |
+ |
+ |
+ //L"form" |
+ { |
+ |
+ IFX_FileStream* pfileWrite = FX_CreateMemoryStream(); |
+ if (NULL == pfileWrite) |
+ { |
+ pContext->Release(); |
+ return FALSE; |
+ } |
+ if(pXFADocHandler->SavePackage(pXFADocView->GetDoc(), CFX_WideStringC(L"form"), pfileWrite, pContext) && pfileWrite > 0) |
+ { |
+ CPDF_Dictionary* pDataDict = FX_NEW CPDF_Dictionary; |
+ if (iFormIndex != -1) |
+ { |
+ if (pFormStream) |
+ pFormStream->InitStream(pfileWrite, pDataDict); |
+ } |
+ else |
+ { |
+ CPDF_Stream* pData = FX_NEW CPDF_Stream(NULL, 0, NULL); |
+ pData->InitStream(pfileWrite, pDataDict); |
+ FX_DWORD AppStreamobjnum = pPDFDocument->AddIndirectObject(pData); |
+ CPDF_Reference* pRef = (CPDF_Reference*)pPDFDocument->GetIndirectObject(AppStreamobjnum); |
+ { |
+ iLast = pArray->GetCount() -2; |
+ pArray->InsertAt(iLast, CPDF_String::Create("form")); |
+ pArray->InsertAt(iLast+1, pData, pPDFDocument); |
+ } |
+ } |
+ fileList.Add(pfileWrite); |
+ } |
+ } |
+ pContext->Release(); |
+ return TRUE; |
} |
FX_BOOL _SendPostSaveToXFADoc(CPDFXFA_Document* pDocument) |
{ |
- if (!pDocument) |
- return FALSE; |
- |
- if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA) |
- return TRUE; |
- |
- IXFA_DocView* pXFADocView = pDocument->GetXFADocView(); |
- if (NULL == pXFADocView) |
- return FALSE; |
- IXFA_WidgetHandler* pWidgetHander = pXFADocView->GetWidgetHandler(); |
- |
- CXFA_WidgetAcc* pWidgetAcc = NULL; |
- IXFA_WidgetAccIterator* pWidgetAccIterator = pXFADocView->CreateWidgetAccIterator(); |
- pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
- while(pWidgetAcc) |
- { |
- CXFA_EventParam preParam; |
- preParam.m_eType = XFA_EVENT_PostSave; |
- pWidgetHander->ProcessEvent(pWidgetAcc,&preParam); |
- pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
- } |
- pWidgetAccIterator->Release(); |
- pXFADocView->UpdateDocView(); |
- pDocument->_ClearChangeMark(); |
- return TRUE; |
+ if (!pDocument) |
+ return FALSE; |
+ |
+ if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA) |
+ return TRUE; |
+ |
+ IXFA_DocView* pXFADocView = pDocument->GetXFADocView(); |
+ if (NULL == pXFADocView) |
+ return FALSE; |
+ IXFA_WidgetHandler* pWidgetHander = pXFADocView->GetWidgetHandler(); |
+ |
+ CXFA_WidgetAcc* pWidgetAcc = NULL; |
+ IXFA_WidgetAccIterator* pWidgetAccIterator = pXFADocView->CreateWidgetAccIterator(); |
+ pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
+ while(pWidgetAcc) |
+ { |
+ CXFA_EventParam preParam; |
+ preParam.m_eType = XFA_EVENT_PostSave; |
+ pWidgetHander->ProcessEvent(pWidgetAcc,&preParam); |
+ pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
+ } |
+ pWidgetAccIterator->Release(); |
+ pXFADocView->UpdateDocView(); |
+ pDocument->_ClearChangeMark(); |
+ return TRUE; |
} |
FX_BOOL _SendPreSaveToXFADoc(CPDFXFA_Document* pDocument, CFX_PtrArray& fileList) |
{ |
- if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA) |
- return TRUE; |
- IXFA_DocView* pXFADocView = pDocument->GetXFADocView(); |
- if (NULL == pXFADocView) |
- return TRUE; |
- IXFA_WidgetHandler* pWidgetHander = pXFADocView->GetWidgetHandler(); |
- CXFA_WidgetAcc* pWidgetAcc = NULL; |
- IXFA_WidgetAccIterator* pWidgetAccIterator = pXFADocView->CreateWidgetAccIterator(); |
- pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
- while(pWidgetAcc) |
- { |
- CXFA_EventParam preParam; |
- preParam.m_eType = XFA_EVENT_PreSave; |
- pWidgetHander->ProcessEvent(pWidgetAcc, &preParam); |
- pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
- } |
- pWidgetAccIterator->Release(); |
- pXFADocView->UpdateDocView(); |
- return _SaveXFADocumentData(pDocument, fileList); |
+ if (pDocument->GetDocType() != DOCTYPE_DYNIMIC_XFA && pDocument->GetDocType() != DOCTYPE_STATIC_XFA) |
+ return TRUE; |
+ IXFA_DocView* pXFADocView = pDocument->GetXFADocView(); |
+ if (NULL == pXFADocView) |
+ return TRUE; |
+ IXFA_WidgetHandler* pWidgetHander = pXFADocView->GetWidgetHandler(); |
+ CXFA_WidgetAcc* pWidgetAcc = NULL; |
+ IXFA_WidgetAccIterator* pWidgetAccIterator = pXFADocView->CreateWidgetAccIterator(); |
+ pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
+ while(pWidgetAcc) |
+ { |
+ CXFA_EventParam preParam; |
+ preParam.m_eType = XFA_EVENT_PreSave; |
+ pWidgetHander->ProcessEvent(pWidgetAcc, &preParam); |
+ pWidgetAcc = pWidgetAccIterator->MoveToNext(); |
+ } |
+ pWidgetAccIterator->Release(); |
+ pXFADocView->UpdateDocView(); |
+ return _SaveXFADocumentData(pDocument, fileList); |
} |
FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document, FPDF_FILEWRITE * pFileWrite,FPDF_DWORD flags, FPDF_BOOL bSetVersion, |
- int fileVerion) |
+ int fileVerion) |
{ |
- CPDFXFA_Document* pDoc = (CPDFXFA_Document*)document; |
- |
- CFX_PtrArray fileList; |
- |
- _SendPreSaveToXFADoc(pDoc, fileList); |
- |
- CPDF_Document* pPDFDoc = pDoc->GetPDFDoc(); |
- if (!pPDFDoc) |
- return 0; |
- |
- if ( flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY ) |
- { |
- flags = 0; |
- } |
- |
- CPDF_Creator FileMaker(pPDFDoc); |
- if (bSetVersion) |
- FileMaker.SetFileVersion(fileVerion); |
- if (flags == FPDF_REMOVE_SECURITY) |
- { |
- flags = 0; |
- FileMaker.RemoveSecurity(); |
- } |
- CFX_IFileWrite* pStreamWrite = NULL; |
- FX_BOOL bRet; |
- pStreamWrite = new CFX_IFileWrite; |
- pStreamWrite->Init( pFileWrite ); |
- bRet = FileMaker.Create(pStreamWrite, flags); |
- |
- _SendPostSaveToXFADoc(pDoc); |
- //pDoc->_ClearChangeMark(); |
- |
- for (int i = 0; i < fileList.GetSize(); i++) |
- { |
- IFX_FileStream* pFile = (IFX_FileStream*)fileList.GetAt(i); |
- pFile->Release(); |
- } |
- fileList.RemoveAll(); |
- |
- delete pStreamWrite; |
- return bRet; |
+ CPDFXFA_Document* pDoc = (CPDFXFA_Document*)document; |
+ |
+ CFX_PtrArray fileList; |
+ |
+ _SendPreSaveToXFADoc(pDoc, fileList); |
+ |
+ CPDF_Document* pPDFDoc = pDoc->GetPDFDoc(); |
+ if (!pPDFDoc) |
+ return 0; |
+ |
+ if ( flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY ) |
+ { |
+ flags = 0; |
+ } |
+ |
+ CPDF_Creator FileMaker(pPDFDoc); |
+ if (bSetVersion) |
+ FileMaker.SetFileVersion(fileVerion); |
+ if (flags == FPDF_REMOVE_SECURITY) |
+ { |
+ flags = 0; |
+ FileMaker.RemoveSecurity(); |
+ } |
+ CFX_IFileWrite* pStreamWrite = NULL; |
+ FX_BOOL bRet; |
+ pStreamWrite = new CFX_IFileWrite; |
+ pStreamWrite->Init( pFileWrite ); |
+ bRet = FileMaker.Create(pStreamWrite, flags); |
+ |
+ _SendPostSaveToXFADoc(pDoc); |
+ //pDoc->_ClearChangeMark(); |
+ |
+ for (int i = 0; i < fileList.GetSize(); i++) |
+ { |
+ IFX_FileStream* pFile = (IFX_FileStream*)fileList.GetAt(i); |
+ pFile->Release(); |
+ } |
+ fileList.RemoveAll(); |
+ |
+ delete pStreamWrite; |
+ return bRet; |
} |
-DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy( FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite, |
- FPDF_DWORD flags ) |
+DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy( FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite, |
+ FPDF_DWORD flags ) |
{ |
- return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE , 0); |
+ return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE , 0); |
} |
-DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion( FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite, |
- FPDF_DWORD flags, int fileVersion) |
+DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion( FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite, |
+ FPDF_DWORD flags, int fileVersion) |
{ |
- return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE , fileVersion); |
+ return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE , fileVersion); |
} |