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 #include "fpdfview.h"
     11 
     12 #ifdef __cplusplus
     13 extern "C" {
     14 #endif
     15 
     16 // Structure for custom file write
     17 typedef struct FPDF_FILEWRITE_ {
     18   //
     19   // Version number of the interface. Currently must be 1.
     20   //
     21   int version;
     22 
     23   //
     24   // Method: WriteBlock
     25   //          Output a block of data in your custom way.
     26   // Interface Version:
     27   //          1
     28   // Implementation Required:
     29   //          Yes
     30   // Comments:
     31   //          Called by function FPDF_SaveDocument
     32   // Parameters:
     33   //          pThis       -   Pointer to the structure itself
     34   //          pData       -   Pointer to a buffer to output
     35   //          size        -   The size of the buffer.
     36   // Return value:
     37   //          Should be non-zero if successful, zero for error.
     38   //
     39   int (*WriteBlock)(struct FPDF_FILEWRITE_* pThis,
     40                     const void* pData,
     41                     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
     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 DLLEXPORT FPDF_BOOL STDCALL 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 DLLEXPORT FPDF_BOOL STDCALL FPDF_SaveWithVersion(FPDF_DOCUMENT document,
     79                                                  FPDF_FILEWRITE* pFileWrite,
     80                                                  FPDF_DWORD flags,
     81                                                  int fileVersion);
     82 
     83 #ifdef __cplusplus
     84 }
     85 #endif
     86 
     87 #endif  // PUBLIC_FPDF_SAVE_H_
     88