blob: 6ffca52ee38916ab91df6b4dbd186dae91b0f36c [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// 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.
Tom Sepez9857e202015-05-13 17:09:26 -07004
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07005// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Tom Sepez9857e202015-05-13 17:09:26 -07007#ifndef PUBLIC_FPDF_SAVE_H_
8#define PUBLIC_FPDF_SAVE_H_
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009
Dan Sinclair85c8e7f2016-11-21 13:50:32 -050010// NOLINTNEXTLINE(build/include)
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070011#include "fpdfview.h"
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070017// Structure for custom file write
Tom Sepezcf22eb82015-05-12 17:28:08 -070018typedef struct FPDF_FILEWRITE_ {
Nico Weber9d8ec5a2015-08-04 13:00:21 -070019 //
20 // Version number of the interface. Currently must be 1.
21 //
22 int version;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070023
Nico Weber9d8ec5a2015-08-04 13:00:21 -070024 //
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);
Tom Sepezcf22eb82015-05-12 17:28:08 -070043} FPDF_FILEWRITE;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070044
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070045/** @brief Incremental. */
Nico Weber9d8ec5a2015-08-04 13:00:21 -070046#define FPDF_INCREMENTAL 1
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070047/** @brief No Incremental. */
Nico Weber9d8ec5a2015-08-04 13:00:21 -070048#define FPDF_NO_INCREMENTAL 2
Bo Xua5572c32014-06-12 13:40:04 -070049/** @brief Remove security. */
Nico Weber9d8ec5a2015-08-04 13:00:21 -070050#define FPDF_REMOVE_SECURITY 3
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070051
52// Function: FPDF_SaveAsCopy
Tom Sepez9857e202015-05-13 17:09:26 -070053// Saves the copy of specified document in custom way.
54// Parameters:
Nico Weber9d8ec5a2015-08-04 13:00:21 -070055// document - Handle to document. Returned by
56// FPDF_LoadDocument and FPDF_CreateNewDocument.
Tom Sepez9857e202015-05-13 17:09:26 -070057// pFileWrite - A pointer to a custom file write structure.
58// flags - The creating flags.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070059// Return value:
Tom Sepez9857e202015-05-13 17:09:26 -070060// TRUE for succeed, FALSE for failed.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070061//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040062FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_SaveAsCopy(FPDF_DOCUMENT document,
63 FPDF_FILEWRITE* pFileWrite,
64 FPDF_DWORD flags);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070065
66// Function: FPDF_SaveWithVersion
Nico Weber9d8ec5a2015-08-04 13:00:21 -070067// Same as function ::FPDF_SaveAsCopy, except the file version of the
68// saved document could be specified by user.
Tom Sepez9857e202015-05-13 17:09:26 -070069// Parameters:
70// document - Handle to document.
71// pFileWrite - A pointer to a custom file write structure.
72// flags - The creating flags.
Nico Weber9d8ec5a2015-08-04 13:00:21 -070073// fileVersion - The PDF file version. File version: 14 for 1.4,
74// 15 for 1.5, ...
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070075// Return value:
Tom Sepez9857e202015-05-13 17:09:26 -070076// TRUE if succeed, FALSE if failed.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070077//
Dan Sinclair00d2ad12017-08-10 14:13:02 -040078FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
79FPDF_SaveWithVersion(FPDF_DOCUMENT document,
80 FPDF_FILEWRITE* pFileWrite,
81 FPDF_DWORD flags,
82 int fileVersion);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070083
84#ifdef __cplusplus
Tom Sepez9857e202015-05-13 17:09:26 -070085}
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070086#endif
87
Tom Sepez9857e202015-05-13 17:09:26 -070088#endif // PUBLIC_FPDF_SAVE_H_