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.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef PUBLIC_FPDF_SAVE_H_
8 #define PUBLIC_FPDF_SAVE_H_
9 
10 #include "fpdfview.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 
17 // Structure for custom file write
18 typedef struct FPDF_FILEWRITE_ {
19 
20     //
21     //Version number of the interface. Currently must be 1.
22     //
23     int version;
24 
25     //
26     // Method: WriteBlock
27     //          Output a block of data in your custom way.
28     // Interface Version:
29     //          1
30     // Implementation Required:
31     //          Yes
32     // Comments:
33     //          Called by function FPDF_SaveDocument
34     // Parameters:
35     //          pThis       -   Pointer to the structure itself
36     //          pData       -   Pointer to a buffer to output
37     //          size        -   The size of the buffer.
38     // Return value:
39     //          Should be non-zero if successful, zero for error.
40     //
41     int     (*WriteBlock)(struct FPDF_FILEWRITE_* pThis, const void* pData, unsigned long size);
42 
43 } FPDF_FILEWRITE;
44 
45 /** @brief Incremental. */
46 #define FPDF_INCREMENTAL        1
47 /** @brief No Incremental. */
48 #define FPDF_NO_INCREMENTAL     2
49 /** @brief Remove security. */
50 #define FPDF_REMOVE_SECURITY    3
51 
52 // Function: FPDF_SaveAsCopy
53 //          Saves the copy of specified document in custom way.
54 // Parameters:
55 //          document        -   Handle to document. Returned by FPDF_LoadDocument and FPDF_CreateNewDocument.
56 //          pFileWrite      -   A pointer to a custom file write structure.
57 //          flags           -   The creating flags.
58 // Return value:
59 //          TRUE for succeed, FALSE for failed.
60 //
61 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveAsCopy(    FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
62                                                 FPDF_DWORD flags );
63 
64 // Function: FPDF_SaveWithVersion
65 //          Same as function ::FPDF_SaveAsCopy, except the file version of the saved document could be specified by user.
66 // Parameters:
67 //          document        -   Handle to document.
68 //          pFileWrite      -   A pointer to a custom file write structure.
69 //          flags           -   The creating flags.
70 //          fileVersion     -   The PDF file version. File version: 14 for 1.4, 15 for 1.5, ...
71 // Return value:
72 //          TRUE if succeed, FALSE if failed.
73 //
74 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,
75     FPDF_DWORD flags, int fileVersion);
76 
77 #ifdef __cplusplus
78 }
79 #endif
80 
81 #endif  // PUBLIC_FPDF_SAVE_H_
82