1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
7 #include "../../public/fpdf_edit.h"
8 #include "../../public/fpdf_save.h"
9 #include "../include/fsdk_define.h"
11 #if _FX_OS_ == _FX_ANDROID_
17 class CFX_IFileWrite final : public IFX_StreamWrite {
20 FX_BOOL Init(FPDF_FILEWRITE* pFileWriteStruct);
21 FX_BOOL WriteBlock(const void* pData, size_t size) override;
22 void Release() override;
25 ~CFX_IFileWrite() override {}
27 FPDF_FILEWRITE* m_pFileWriteStruct;
30 CFX_IFileWrite::CFX_IFileWrite() {
31 m_pFileWriteStruct = NULL;
34 FX_BOOL CFX_IFileWrite::Init(FPDF_FILEWRITE* pFileWriteStruct) {
35 if (!pFileWriteStruct)
38 m_pFileWriteStruct = pFileWriteStruct;
42 FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size) {
43 if (!m_pFileWriteStruct)
46 m_pFileWriteStruct->WriteBlock(m_pFileWriteStruct, pData, size);
50 void CFX_IFileWrite::Release() {
54 FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,
55 FPDF_FILEWRITE* pFileWrite,
57 FPDF_BOOL bSetVersion,
59 CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
63 if (flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY) {
67 CPDF_Creator FileMaker(pDoc);
69 FileMaker.SetFileVersion(fileVerion);
70 if (flags == FPDF_REMOVE_SECURITY) {
72 FileMaker.RemoveSecurity();
74 CFX_IFileWrite* pStreamWrite = NULL;
76 pStreamWrite = new CFX_IFileWrite;
77 pStreamWrite->Init(pFileWrite);
78 bRet = FileMaker.Create(pStreamWrite, flags);
79 pStreamWrite->Release();
83 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(FPDF_DOCUMENT document,
84 FPDF_FILEWRITE* pFileWrite,
86 return _FPDF_Doc_Save(document, pFileWrite, flags, FALSE, 0);
89 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document,
90 FPDF_FILEWRITE* pFileWrite,
93 return _FPDF_Doc_Save(document, pFileWrite, flags, TRUE, fileVersion);