Home | History | Annotate | Download | only in public
      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 // NOLINTNEXTLINE(build/include)
     11 #include "fpdfview.h"
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 // Structure for custom file write
     18 typedef struct FPDF_FILEWRITE_ {
     19   //
     20   // Version number of the interface. Currently must be 1.
     21   //
     22   int version;
     23 
     24   //
     25   // Method: WriteBlock
     26   //          Output a block of data in your custom way.
     27   // Interface Version:
     28   //          1
     29   // Implementation Required:
     30   //          Yes
     31   // Comments:
     32   //          Called by function FPDF_SaveDocument
     33   // Parameters:
     34   //          pThis       -   Pointer to the structure itself
     35   //          pData       -   Pointer to a buffer to output
     36   //          size        -   The size of the buffer.
     37   // Return value:
     38   //          Should be non-zero if successful, zero for error.
     39   //
     40   int (*WriteBlock)(struct FPDF_FILEWRITE_* pThis,
     41                     const void* pData,
     42                     unsigned long size);
     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
     56 //          FPDF_LoadDocument and FPDF_CreateNewDocument.
     57 //          pFileWrite      -   A pointer to a custom file write structure.
     58 //          flags           -   The creating flags.
     59 // Return value:
     60 //          TRUE for succeed, FALSE for failed.
     61 //
     62 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_SaveAsCopy(FPDF_DOCUMENT document,
     63                                                     FPDF_FILEWRITE* pFileWrite,
     64                                                     FPDF_DWORD flags);
     65 
     66 // Function: FPDF_SaveWithVersion
     67 //          Same as function ::FPDF_SaveAsCopy, except the file version of the
     68 //          saved document could be specified by user.
     69 // Parameters:
     70 //          document        -   Handle to document.
     71 //          pFileWrite      -   A pointer to a custom file write structure.
     72 //          flags           -   The creating flags.
     73 //          fileVersion     -   The PDF file version. File version: 14 for 1.4,
     74 //          15 for 1.5, ...
     75 // Return value:
     76 //          TRUE if succeed, FALSE if failed.
     77 //
     78 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
     79 FPDF_SaveWithVersion(FPDF_DOCUMENT document,
     80                      FPDF_FILEWRITE* pFileWrite,
     81                      FPDF_DWORD flags,
     82                      int fileVersion);
     83 
     84 #ifdef __cplusplus
     85 }
     86 #endif
     87 
     88 #endif  // PUBLIC_FPDF_SAVE_H_
     89