PDF SDK Documentation

Comprehensive Guide for Developers: Features, Integration, and API Reference

Loading...
Searching...
No Matches
document.h
Go to the documentation of this file.
1// Copyright (c) 2009-2025 Avanquest Software. All rights reserved.
2
3#ifndef PDFSDK_CORE_DOCUMENT_H_INCLUDED_
4#define PDFSDK_CORE_DOCUMENT_H_INCLUDED_
5
11#include <pdfsdk/core/objects.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18typedef struct
19{
20 uint16_t major;
21 uint16_t minor;
22} PDVersion;
23
24typedef enum {
25 kPDInsertPages,
26 kPDDeletePages,
27 kPDMovePages,
28 kPDRotatePages,
29 kPDResizePages,
30} PDPageOperation;
31
32typedef struct PDPageRec_* PDPage;
33
34#define kPDPageIndexNull ((size_t)(-1))
35
36typedef struct
37{
38 const size_t* iPages;
39 size_t numPages;
41
42typedef void(PDFSDK_CALLCONV* PDDocPagesChangedProc)(PDPageOperation operation, const PDPageRange* pageRange, void* clientData);
43
75typedef PDErrCode (PDFSDK_CALLCONV* PDDocAuthProc)(void* authProcData, PDAtom securityHandlerName, void* pAuthData);
76typedef PDErrCode (PDFSDK_CALLCONV* PDDocAuthFreeDataProc)(void* authProcData);
77
79 PDDocAuthProc auth;
80 PDDocAuthFreeDataProc free;
81};
82
83typedef PDErrCode (PDFSDK_CALLCONV* PDDocStreamReadAtProc)(void* streamData, uint64_t pos, void* buffer, size_t nbytes, size_t* pRead);
84typedef PDErrCode (PDFSDK_CALLCONV* PDDocStreamGetSizeProc)(void* streamData, uint64_t* pSize);
85typedef PDErrCode (PDFSDK_CALLCONV* PDDocStreamFreeDataProc)(void* streamData);
86
88 PDDocStreamReadAtProc readAt;
89 PDDocStreamGetSizeProc getSize;
90 PDDocStreamFreeDataProc free;
91};
92
93typedef struct
94{
95 const wchar_t* filePath;
96 const PDDocStreamProcs* streamProcs;
97 void* streamData;
98 const PDDocAuthProcs* authProcs;
99 void* authProcData;
101
102typedef enum {
103 kPDDocSaveIncremental = 0x01,
104 kPDDocSaveFull = 0x02,
105 kPDDocSaveCopy = 0x04,
106 kPDDocSaveLinearized = 0x08,
107 kPDDocSaveCompressed = 0x10,
108 kPDDocSaveXRefCompressed = 0x20,
109} PDDocSaveFlagsBits;
110
111typedef uint32_t PDDocSaveFlags;
112
113enum {
114 kPDOptSaveRemoveHiddenObjects = 1 << 0,
115 kPDOptSaveDownsampleImages = 1 << 1,
116 kPDOptSaveRemoveMetadata = 1 << 2,
117 kPDOptSaveRemoveStructTree = 1 << 3,
118 kPDOptSaveRemoveAttachments = 1 << 4,
119 kPDOptSaveRemoveBookmarks = 1 << 5,
120 kPDOptSaveRemoveAcroform = 1 << 6,
121 kPDOptSaveRemoveOCProperties = 1 << 7,
122 kPDOptSaveRemoveAnnotations = 1 << 8,
123 kPDOptSaveRemoveOpenActions = 1 << 9,
124 kPDOptSaveRemoveJavaScript = 1 << 10,
125 kPDOptSaveRemoveInfo = 1 << 11
126};
127typedef uint32_t PDOptSaveFlags;
128
129typedef enum {
130 kPDOptSaveImageQualityMin,
131 kPDOptSaveImageQualityLow,
132 kPDOptSaveImageQualityMedium,
133 kPDOptSaveImageQualityHigh,
134 kPDOptSaveImageQualityMax
135} PDOptSaveImageQuality;
136
137typedef struct
138{
139 PDOptSaveFlags flags;
140 PDOptSaveImageQuality imageQuality;
141 int imageDpi;
143
144typedef struct
145{
147 PDDocSaveFlags flags;
148
150 const wchar_t* filePath;
151
153 PDWriteStream outputStream;
154
157
160
163
166
168
169typedef enum {
170 kPDPageDirectionL2R,
171 kPDPageDirectionR2L
172} PDPageDirection;
173
174PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreate(PDDoc* pDoc);
175PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocOpen(const PDDocOpenParams* params, PDDoc* pDoc);
176PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocIsCompressed(PDDoc doc, bool* pValue);
177PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocIsModified(PDDoc doc, bool* pValue);
178PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetModified(PDDoc doc, bool value);
179PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSave(PDDoc doc, const PDDocSaveParams* params);
180PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocPurgeCaches(PDDoc doc);
181PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetFilePath(PDDoc doc, wchar_t* buffer, size_t bufSize, size_t* pSize);
182PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPage(PDDoc doc, size_t index, PDPage* pPage);
183PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetNumPages(PDDoc doc, size_t* pNumPages);
184PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocAttachPagesChangedCallback(PDDoc doc, PDDocPagesChangedProc proc, void* clientData);
185PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocDetachPagesChangedCallback(PDDoc doc, PDDocPagesChangedProc proc, void* clientData);
186PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocNotifyPagesChanged(PDDoc doc, PDPageOperation operation, const PDPageRange* range);
187PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreatePage(PDDoc doc, size_t insertAt, const PDRectF* mediaBox, PDPage* pPage);
188PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreatePages(PDDoc doc, size_t insertAt, size_t count, const PDRectF* mediaBox);
189PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocDeletePages(PDDoc doc, const PDPageRange* range, const PDProgressMonitor* progress, void* progressData);
190PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocInsertPages(PDDoc doc, size_t insertAt, PDDoc sourceDoc, const PDPageRange* sourceRange, const PDProgressMonitor* progress, void* progressData);
191PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocInsertPage(PDDoc doc, PDPage page, size_t insertAt);
192PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocMovePages(PDDoc doc, size_t insertAt, const PDPageRange* range, const PDProgressMonitor* progress, void* progressData);
193PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocFindPageIndexForLabel(PDDoc doc, const wchar_t* label, size_t labelSize, size_t* pIndex);
194PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetLabelForPageIndex(PDDoc doc, size_t index, wchar_t* buffer, size_t bufferSize, size_t* pSize);
195PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetID(PDDoc doc, const char** pPermaID, size_t* pPermaLen, const char** pInstanceID, size_t* pInstanceLen);
196PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetVersion(PDDoc doc, PDVersion* pVersion);
197PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetFileSize(PDDoc doc, uint64_t* pFileSize);
198
217PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetInfoString(PDDoc doc, PDAtom infoStringAtom, wchar_t* buffer, size_t bufferSize, size_t* pSize);
218
235PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetInfoString(PDDoc doc, PDAtom infoStringAtom, const wchar_t* buffer, size_t bufferSize);
236PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetCreationDate(PDDoc doc, PDDateTime* creationDate);
237PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetCreationDate(PDDoc doc, const PDDateTime* creationDate);
238PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetModDate(PDDoc doc, PDDateTime* modDate);
239PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetModDate(PDDoc doc, const PDDateTime* modDate);
240PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetPageLayout(PDDoc doc, PDAtom layout);
241
250PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPageLayout(PDDoc doc, PDAtom* pLayout);
251PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetPageMode(PDDoc doc, PDAtom mode);
252
261PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPageMode(PDDoc doc, PDAtom* pMode);
262
263PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetPageDirection(PDDoc doc, PDPageDirection direction);
264
279PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPageDirection(PDDoc doc, PDPageDirection* pDirection);
280
281PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStructTreeRoleMapGetTag(PDDoc doc, PDAtom tag, PDAtom* pValue);
282PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStructTreeFindStructParent(PDDoc doc, int structParent, int MCID, PDObject* pObj);
283
284PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetDoc(PDPage page, PDDoc* pDoc);
285PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetIndex(PDPage page, size_t* pIndex);
286PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageIsContentModified(PDPage page, bool* pValue);
287PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetContentModified(PDPage page, bool value);
288
298PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageFlushModifiedContent(PDPage page);
299
300PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetMediaBox(PDPage page, const PDRectF* mediaBox);
301
314PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetMediaBox(PDPage page, PDRectF* pMediaBox);
315PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetCropBox(PDPage page, const PDRectF* cropBox);
316
328PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetCropBox(PDPage page, PDRectF* pCropBox);
329PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetTrimBox(PDPage page, const PDRectF* trimBox);
330PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetTrimBox(PDPage page, PDRectF* pTrimBox);
331PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetArtBox(PDPage page, const PDRectF* artBox);
332PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetArtBox(PDPage page, PDRectF* pArtBox);
333PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetBleedBox(PDPage page, const PDRectF* bleedBox);
334PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetBleedBox(PDPage page, PDRectF* pBleedBox);
335PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetRotate(PDPage page, PDRotate rotate);
336
343PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetRotate(PDPage page, PDRotate* pRotate);
344PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageSetUserUnitSize(PDPage page, float unitSize);
345
353PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetUserUnitSize(PDPage page, float* pUnitSize);
354PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetPDObject(PDPage page, PDObject* pObj);
355
356#ifdef __cplusplus
357}
358#endif
359
360#endif // PDFSDK_CORE_DOCUMENT_H_INCLUDED_
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPageMode(PDDoc doc, PDAtom *pMode)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetMediaBox(PDPage page, PDRectF *pMediaBox)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageFlushModifiedContent(PDPage page)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetInfoString(PDDoc doc, PDAtom infoStringAtom, const wchar_t *buffer, size_t bufferSize)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetCropBox(PDPage page, PDRectF *pCropBox)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetRotate(PDPage page, PDRotate *pRotate)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetInfoString(PDDoc doc, PDAtom infoStringAtom, wchar_t *buffer, size_t bufferSize, size_t *pSize)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDPageGetUserUnitSize(PDPage page, float *pUnitSize)
PDErrCode(PDFSDK_CALLCONV * PDDocAuthProc)(void *authProcData, PDAtom securityHandlerName, void *pAuthData)
Definition document.h:75
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPageLayout(PDDoc doc, PDAtom *pLayout)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetPageDirection(PDDoc doc, PDPageDirection *pDirection)
int32_t PDErrCode
Definition errors.h:44
Objects API.
Progress Monitor API.
Definition types.h:23
Definition document.h:78
Definition document.h:94
Definition document.h:145
void * progressData
A pointer to pass to progress each time it is called.
Definition document.h:159
PDDocSaveFlags flags
A combination of PDDocSaveFlags.
Definition document.h:147
const PDVersion * version
The version number of the document. Pass null to keep the current version.
Definition document.h:165
const PDProgressMonitor * progress
The progress monitor to receive notifications about the saving process. It may be null.
Definition document.h:156
PDWriteStream outputStream
The stream to write output document to. Used only if filePath is null.
Definition document.h:153
const PDOptSaveSettings * optSettings
The settings to use in "Reduce File Size". Pass null for the regular save.
Definition document.h:162
const wchar_t * filePath
The path to which the document is saved. If both this and outputStream are null, the current document...
Definition document.h:150
Definition document.h:87
Definition objects.h:80
Definition document.h:138
Definition document.h:37
Definition progress_monitor.h:15
Definition math_types.h:30
Definition document.h:19