PDF SDK Documentation

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

Loading...
Searching...
No Matches
objects.h
Go to the documentation of this file.
1// Copyright (c) 2009-2025 Avanquest Software. All rights reserved.
2
3#ifndef PDFSDK_CORE_OBJECTS_H_INCLUDED_
4#define PDFSDK_CORE_OBJECTS_H_INCLUDED_
5
11#include <pdfsdk/core/atoms.h>
12#include <pdfsdk/core/types.h>
13#include <pdfsdk/math_types.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
22typedef enum {
23 kPDObjectNull,
24 kPDObjectInteger,
25 kPDObjectReal,
26 kPDObjectBoolean,
27 kPDObjectName,
28 kPDObjectString,
29 kPDObjectDict,
30 kPDObjectArray,
31 kPDObjectStream
33
34/*
35 * May be created from a PDDoc using one of the following methods for
36 * the different object types:
37 *
38 * PDDocCreateBoolObject(PDDoc file, bool isIndirect, bool value, PDObject* object)
39 * PDDocCreateIntObject(PDDoc file, bool isIndirect, int64_t value, PDObject* object)
40 * PDDocCreateRealObject(PDDoc file, bool isIndirect, float value, PDObject* object)
41 * PDDocCreateStringObjectFromUnicode(PDDoc file, bool isIndirect, const wchar_t* buffer, size_t bufSize, PDObject* object)
42 * PDDocCreateStringObject(PDDoc file, bool isIndirect, const void* buffer, size_t numBytes, bool bIsHexString, PDObject* object)
43 * PDDocCreateNameObject(PDDoc file, bool isIndirect, PDAtom name, PDObject* object)
44 * PDDocCreateArrayObject(PDDoc file, bool isIndirect, PDObject* object)
45 * PDDocCreateDictObject(PDDoc file, bool isIndirect, PDObject* object)
46 * PDDocCreateStreamObject(PDDoc file, PDObject dict, const void* buffer, size_t numBytes, PDObject* object)
47 *
48 * Retrieval of internal basic objects may be done with one of the following methods:
49 *
50 * PDObjectGetType(PDObject object, PDObjectType* type)
51 * PDObjectGetBool(PDObject object, bool* value)
52 * PDObjectGetInt(PDObject object, int64_t* value)
53 * PDObjectGetReal(PDObject object, float* value)
54 * PDObjectGetUnicodeString(PDObject object, wchar_t* buffer, size_t bufSize, size_t* bufNeededSize)
55 * PDObjectGetString(PDObject object, void* buffer, size_t numBytes, size_t* neededBytes)
56 * PDObjectGetName(PDObject object, PDAtom* name)
57 *
58 * PDObject with type kPDObjectArray may be manipulated with one of the following methods:
59 *
60 * PDObjectArrayAdd(PDObject array, PDObject objectToAdd)
61 * PDObjectArrayGet(PDObject array, size_t index, PDObject* object)
62 * PDObjectArrayRemove(PDObject array, size_t index)
63 * PDObjectArrayGetLength(PDObject array, size_t* index)
64 *
65 * PDObject with type kPDObjectDict may be manipulated with one of the following methods:
66 *
67 * PDObjectDictPut(PDObject dict, PDAtom name, PDObject object)
68 * PDObjectDictFind(PDObject dict, PDAtom name, PDObject* object)
69 * PDObjectDictRemove(PDObject dict, PDAtom name)
70 *
71 * PDObject with type kPDObjectStream may be manipulated with one of the following methods:
72 *
73 * PDObjectStreamGetDict(PDObject objectStream, PDObject* dict)
74 * PDObjectStreamOpen(PDObject object, PDStream* stream)
75 * PDStreamRead(PDStream readStream, void* buffer, unsigned int numBytes, int64_t* numBytesRead)
76 * PDStreamClose(PDStream stream)
77 *
78 */
79
80typedef struct PDObject {
81 uint64_t handle;
82} PDObject;
83
84inline PDObject PDObjectCreateNull() {
85 PDObject nullObj = {0};
86 return nullObj;
87}
88
89#define nullPDObject (PDObjectCreateNull())
90
94typedef PDErrCode(PDFSDK_CALLCONV* PDObjectDictEnumProc)(PDAtom key, PDObject value, void* userData);
95
96typedef struct PDReadStreamRec_* PDReadStream;
97typedef struct PDWriteStreamRec_* PDWriteStream;
98
99typedef PDErrCode(PDFSDK_CALLCONV* PDWriteStreamWriteProc)(void* streamData, const void* buffer, size_t nbytes, size_t* pWritten);
100typedef PDErrCode(PDFSDK_CALLCONV* PDWriteStreamCloseProc)(void* streamData);
101typedef void(PDFSDK_CALLCONV* PDWriteStreamFreeDataProc)(void* streamData);
102
104 PDWriteStreamWriteProc write;
105 PDWriteStreamCloseProc close;
106 PDWriteStreamFreeDataProc free;
107};
108
109typedef enum {
110 kPDObjectStreamOpenRaw,
111 kPDObjectStreamOpenDecrypted,
112 kPDObjectStreamOpenFiltered,
113} PDObjectStreamOpenMode;
114
115PDF_CORE_API void PDFSDK_CALLCONV PDObjectAcquire(PDObject object);
116PDF_CORE_API void PDFSDK_CALLCONV PDObjectRelease(PDObject object);
117PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetObjectByID(PDDoc file, uint32_t id, PDObject* pObj);
118PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectCopy(PDDoc file, PDObject srcobject, PDObject* pObj);
119PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetRootObject(PDDoc file, PDObject* pObj);
120PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetInfoObject(PDDoc file, PDObject* pObj);
121PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetType(PDObject object, PDObjectType* type);
122PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDeepEqual(PDObject objA, PDObject objB, bool* pEqual);
123
124// PDObjectBool
125PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateBoolObject(PDDoc file, bool indirect, bool value, PDObject* object);
126PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetBool(PDObject object, bool* value);
127
128// PDObjectInt
129PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateIntObject(PDDoc file, bool indirect, int64_t value, PDObject* object);
130PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetInt(PDObject object, int64_t* value);
131
132// PDObjectReal
133PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateRealObject(PDDoc file, bool indirect, float value, PDObject* object);
134PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetReal(PDObject object, float* value);
135
136// PDObjectString
137PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStringObjectFromUnicode(PDDoc file, bool indirect, const wchar_t* buffer, size_t bufSize, PDObject* object);
138PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStringObject(PDDoc file, bool indirect, const void* buffer, size_t numBytes, bool hexString, PDObject* object);
139PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetUnicodeString(PDObject object, wchar_t* buffer, size_t bufSize, size_t* bufNeededSize);
140PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetString(PDObject object, void* buffer, size_t numBytes, size_t* neededBytes);
141
142// PDObjectName
143PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateNameObject(PDDoc file, bool indirect, PDAtom name, PDObject* object);
144PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetName(PDObject object, PDAtom* name);
145
146// PDObjectArray
147PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateArrayObject(PDDoc file, bool indirect, PDObject* object);
148PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayAdd(PDObject array, PDObject objectToAdd);
149PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayGet(PDObject array, size_t index, PDObject* object);
150PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayRemove(PDObject array, size_t index);
151PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayGetLength(PDObject array, size_t* index);
152
153// PDObjectDict
154PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateDictObject(PDDoc file, bool indirect, PDObject* object);
155PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictPut(PDObject dict, PDAtom name, PDObject object);
156PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictPutName(PDObject dict, PDAtom name, PDAtom value);
157PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictFind(PDObject dict, PDAtom name, PDObject* object);
158PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictFindName(PDObject dict, PDAtom name, PDAtom* pvalue);
159PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictRemove(PDObject dict, PDAtom name);
160PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictEnum(PDObject dict, PDObjectDictEnumProc enumProc, void* userData);
161
162// PDObjectStream
163PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStreamObject(PDDoc file, const void* buffer, size_t bufSize, PDObject attributesDict, PDObject encodeParms, bool encodeSource, PDObject* pObj);
164PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectStreamGetDict(PDObject objectStream, PDObject* pDict);
165PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectStreamOpen(PDObject object, PDObjectStreamOpenMode openMode, PDReadStream* pStm);
166
167PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDReadStreamRead(PDReadStream readStream, void* buffer, size_t numBytes, size_t* numBytesRead);
168PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDReadStreamClose(PDReadStream stream);
169
170PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDCreateWriteStreamFromProcs(const PDWriteStreamProcs* procs, void* streamData, PDWriteStream* pStream);
171PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDWriteStreamWrite(PDWriteStream readStream, const void* buffer, size_t numBytes, size_t* numBytesWritten);
172PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDWriteStreamClose(PDWriteStream stream);
173
174PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectIsIndirect(PDObject object, bool* pIndirect);
175PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetObjNumber(PDObject object, uint32_t* pObjNum);
176PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetGenNumber(PDObject object, uint16_t* pGenNum);
177
178#ifdef __cplusplus
179}
180#endif
181
182#endif // PDFSDK_CORE_OBJECTS_H_INCLUDED_
Atom API.
int32_t PDErrCode
Definition errors.h:44
Math types.
PDErrCode(PDFSDK_CALLCONV * PDObjectDictEnumProc)(PDAtom key, PDObject value, void *userData)
Definition objects.h:94
PDObjectType
Definition objects.h:22
Definition objects.h:80
Definition objects.h:103
Common types.