OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "public/fpdf_save.h" | 7 #include "public/fpdf_save.h" |
8 | 8 |
9 #include "../include/fpdfxfa/fpdfxfa_app.h" | 9 #include "../include/fpdfxfa/fpdfxfa_app.h" |
10 #include "../include/fpdfxfa/fpdfxfa_doc.h" | 10 #include "../include/fpdfxfa/fpdfxfa_doc.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 pWidgetAccIterator->Release(); | 277 pWidgetAccIterator->Release(); |
278 pXFADocView->UpdateDocView(); | 278 pXFADocView->UpdateDocView(); |
279 return _SaveXFADocumentData(pDocument, fileList); | 279 return _SaveXFADocumentData(pDocument, fileList); |
280 } | 280 } |
281 | 281 |
282 FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document, | 282 FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document, |
283 FPDF_FILEWRITE* pFileWrite, | 283 FPDF_FILEWRITE* pFileWrite, |
284 FPDF_DWORD flags, | 284 FPDF_DWORD flags, |
285 FPDF_BOOL bSetVersion, | 285 FPDF_BOOL bSetVersion, |
286 int fileVerion) { | 286 int fileVerion) { |
287 CPDFXFA_Document* pDoc = (CPDFXFA_Document*)document; | 287 CPDF_Document* pPDFDoc = CPDFDocumentFromFPDFDocument(document); |
288 | |
289 CFX_PtrArray fileList; | |
290 | |
291 _SendPreSaveToXFADoc(pDoc, fileList); | |
292 | |
293 CPDF_Document* pPDFDoc = pDoc->GetPDFDoc(); | |
294 if (!pPDFDoc) | 288 if (!pPDFDoc) |
295 return 0; | 289 return 0; |
296 | 290 |
| 291 CPDFXFA_Document* pDoc = (CPDFXFA_Document*)document; |
| 292 CFX_PtrArray fileList; |
| 293 _SendPreSaveToXFADoc(pDoc, fileList); |
| 294 |
297 if (flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY) { | 295 if (flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY) { |
298 flags = 0; | 296 flags = 0; |
299 } | 297 } |
300 | 298 |
301 CPDF_Creator FileMaker(pPDFDoc); | 299 CPDF_Creator FileMaker(pPDFDoc); |
302 if (bSetVersion) | 300 if (bSetVersion) |
303 FileMaker.SetFileVersion(fileVerion); | 301 FileMaker.SetFileVersion(fileVerion); |
304 if (flags == FPDF_REMOVE_SECURITY) { | 302 if (flags == FPDF_REMOVE_SECURITY) { |
305 flags = 0; | 303 flags = 0; |
306 FileMaker.RemoveSecurity(); | 304 FileMaker.RemoveSecurity(); |
307 } | 305 } |
| 306 |
308 CFX_IFileWrite* pStreamWrite = NULL; | 307 CFX_IFileWrite* pStreamWrite = NULL; |
309 FX_BOOL bRet; | 308 FX_BOOL bRet; |
310 pStreamWrite = new CFX_IFileWrite; | 309 pStreamWrite = new CFX_IFileWrite; |
311 pStreamWrite->Init(pFileWrite); | 310 pStreamWrite->Init(pFileWrite); |
312 bRet = FileMaker.Create(pStreamWrite, flags); | 311 bRet = FileMaker.Create(pStreamWrite, flags); |
313 | |
314 _SendPostSaveToXFADoc(pDoc); | 312 _SendPostSaveToXFADoc(pDoc); |
315 | |
316 for (int i = 0; i < fileList.GetSize(); i++) { | 313 for (int i = 0; i < fileList.GetSize(); i++) { |
317 IFX_FileStream* pFile = (IFX_FileStream*)fileList.GetAt(i); | 314 IFX_FileStream* pFile = (IFX_FileStream*)fileList.GetAt(i); |
318 pFile->Release(); | 315 pFile->Release(); |
319 } | 316 } |
320 fileList.RemoveAll(); | 317 fileList.RemoveAll(); |
321 | |
322 pStreamWrite->Release(); | 318 pStreamWrite->Release(); |
323 return bRet; | 319 return bRet; |
324 } | 320 } |
325 | 321 |
326 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(FPDF_DOCUMENT document, | 322 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(FPDF_DOCUMENT document, |
327 FPDF_FILEWRITE* pFileWrite, | 323 FPDF_FILEWRITE* pFileWrite, |
328 FPDF_DWORD flags) { | 324 FPDF_DWORD flags) { |
329 return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE, 0); | 325 return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE, 0); |
330 } | 326 } |
331 | 327 |
332 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document, | 328 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document, |
333 FPDF_FILEWRITE* pFileWrite, | 329 FPDF_FILEWRITE* pFileWrite, |
334 FPDF_DWORD flags, | 330 FPDF_DWORD flags, |
335 int fileVersion) { | 331 int fileVersion) { |
336 return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE, fileVersion); | 332 return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE, fileVersion); |
337 } | 333 } |
OLD | NEW |