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
36
37/*
38 * May be created from a PDDoc using one of the following methods for
39 * the different object types:
40 *
41 * PDDocCreateBoolObject(PDDoc file, bool isIndirect, bool value, PDObject* object)
42 * PDDocCreateIntObject(PDDoc file, bool isIndirect, int64_t value, PDObject* object)
43 * PDDocCreateRealObject(PDDoc file, bool isIndirect, float value, PDObject* object)
44 * PDDocCreateStringObjectFromUnicode(PDDoc file, bool isIndirect, const wchar_t* buffer, size_t bufSize, PDObject* object)
45 * PDDocCreateStringObject(PDDoc file, bool isIndirect, const void* buffer, size_t numBytes, bool bIsHexString, PDObject* object)
46 * PDDocCreateNameObject(PDDoc file, bool isIndirect, PDAtom name, PDObject* object)
47 * PDDocCreateArrayObject(PDDoc file, bool isIndirect, PDObject* object)
48 * PDDocCreateDictObject(PDDoc file, bool isIndirect, PDObject* object)
49 * PDDocCreateStreamObject(PDDoc file, PDObject dict, const void* buffer, size_t numBytes, PDObject* object)
50 *
51 * Retrieval of internal basic objects may be done with one of the following methods:
52 *
53 * PDObjectGetType(PDObject object, PDObjectType* type)
54 * PDObjectGetBool(PDObject object, bool* value)
55 * PDObjectGetInt(PDObject object, int64_t* value)
56 * PDObjectGetReal(PDObject object, float* value)
57 * PDObjectGetUnicodeString(PDObject object, wchar_t* buffer, size_t bufSize, size_t* bufNeededSize)
58 * PDObjectGetString(PDObject object, void* buffer, size_t numBytes, size_t* neededBytes)
59 * PDObjectGetName(PDObject object, PDAtom* name)
60 *
61 * PDObject with type kPDObjectArray may be manipulated with one of the following methods:
62 *
63 * PDObjectArrayAdd(PDObject array, PDObject objectToAdd)
64 * PDObjectArrayGet(PDObject array, size_t index, PDObject* object)
65 * PDObjectArrayRemove(PDObject array, size_t index)
66 * PDObjectArrayGetLength(PDObject array, size_t* index)
67 *
68 * PDObject with type kPDObjectDict may be manipulated with one of the following methods:
69 *
70 * PDObjectDictPut(PDObject dict, PDAtom name, PDObject object)
71 * PDObjectDictFind(PDObject dict, PDAtom name, PDObject* object)
72 * PDObjectDictRemove(PDObject dict, PDAtom name)
73 *
74 * PDObject with type kPDObjectStream may be manipulated with one of the following methods:
75 *
76 * PDObjectStreamGetDict(PDObject objectStream, PDObject* dict)
77 * PDObjectStreamOpen(PDObject object, PDStream* stream)
78 * PDStreamRead(PDStream readStream, void* buffer, unsigned int numBytes, int64_t* numBytesRead)
79 * PDStreamClose(PDStream stream)
80 *
81 */
82
83typedef struct PDObject {
84 uint64_t handle;
85} PDObject;
86
87inline PDObject PDObjectCreateNull() {
88 PDObject nullObj = {0};
89 return nullObj;
90}
91
92#define nullPDObject (PDObjectCreateNull())
93
97typedef PDErrCode(PDFSDK_CALLCONV* PDObjectDictEnumProc)(PDAtom key, PDObject value, void* userData);
98
99typedef struct PDReadStreamRec_* PDReadStream;
100typedef struct PDWriteStreamRec_* PDWriteStream;
101
102typedef PDErrCode(PDFSDK_CALLCONV* PDWriteStreamWriteProc)(void* streamData, const void* buffer, size_t nbytes, size_t* pWritten);
103typedef PDErrCode(PDFSDK_CALLCONV* PDWriteStreamCloseProc)(void* streamData);
104typedef void(PDFSDK_CALLCONV* PDWriteStreamFreeDataProc)(void* streamData);
105
107 PDWriteStreamWriteProc write;
108 PDWriteStreamCloseProc close;
109 PDWriteStreamFreeDataProc free;
110};
111
128
129PDF_CORE_API void PDFSDK_CALLCONV PDObjectAcquire(PDObject object);
130PDF_CORE_API void PDFSDK_CALLCONV PDObjectRelease(PDObject object);
131PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetObjectByID(PDDoc file, uint32_t id, PDObject* pObj);
132PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectCopy(PDDoc file, PDObject srcobject, PDObject* pObj);
133PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetRootObject(PDDoc file, PDObject* pObj);
134PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetInfoObject(PDDoc file, PDObject* pObj);
135PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetType(PDObject object, PDObjectType* type);
136PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDeepEqual(PDObject objA, PDObject objB, bool* pEqual);
137
138// PDObjectBool
139PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateBoolObject(PDDoc file, bool indirect, bool value, PDObject* object);
140PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetBool(PDObject object, bool* value);
141
142// PDObjectInt
143PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateIntObject(PDDoc file, bool indirect, int64_t value, PDObject* object);
144PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetInt(PDObject object, int64_t* value);
145
146// PDObjectReal
147PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateRealObject(PDDoc file, bool indirect, float value, PDObject* object);
148PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetReal(PDObject object, float* value);
149
150// PDObjectString
151PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStringObjectFromUnicode(PDDoc file, bool indirect, const wchar_t* buffer, size_t bufSize, PDObject* object);
152PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStringObject(PDDoc file, bool indirect, const void* buffer, size_t numBytes, bool hexString, PDObject* object);
153PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetUnicodeString(PDObject object, wchar_t* buffer, size_t bufSize, size_t* bufNeededSize);
154PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetString(PDObject object, void* buffer, size_t numBytes, size_t* neededBytes);
155
156// PDObjectName
157PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateNameObject(PDDoc file, bool indirect, PDAtom name, PDObject* object);
158PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetName(PDObject object, PDAtom* name);
159
160// PDObjectArray
161PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateArrayObject(PDDoc file, bool indirect, PDObject* object);
162PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayAdd(PDObject array, PDObject objectToAdd);
163PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayGet(PDObject array, size_t index, PDObject* object);
164PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayRemove(PDObject array, size_t index);
165PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayGetLength(PDObject array, size_t* index);
166
167// PDObjectDict
168PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateDictObject(PDDoc file, bool indirect, PDObject* object);
169PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictPut(PDObject dict, PDAtom name, PDObject object);
170PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictPutName(PDObject dict, PDAtom name, PDAtom value);
171PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictFind(PDObject dict, PDAtom name, PDObject* object);
172PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictFindName(PDObject dict, PDAtom name, PDAtom* pvalue);
173PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictRemove(PDObject dict, PDAtom name);
174PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictEnum(PDObject dict, PDObjectDictEnumProc enumProc, void* userData);
175
176// PDObjectStream
177PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStreamObject(PDDoc file, const void* buffer, size_t bufSize, PDObject attributesDict, PDObject encodeParms, bool encodeSource, PDObject* pObj);
178PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectStreamGetDict(PDObject objectStream, PDObject* pDict);
179PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectStreamOpen(PDObject object, PDObjectStreamOpenMode openMode, PDReadStream* pStm);
180
181PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDReadStreamRead(PDReadStream readStream, void* buffer, size_t numBytes, size_t* numBytesRead);
182PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDReadStreamClose(PDReadStream stream);
183
184PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDCreateWriteStreamFromProcs(const PDWriteStreamProcs* procs, void* streamData, PDWriteStream* pStream);
185PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDWriteStreamWrite(PDWriteStream readStream, const void* buffer, size_t numBytes, size_t* numBytesWritten);
186PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDWriteStreamClose(PDWriteStream stream);
187
188PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectIsIndirect(PDObject object, bool* pIndirect);
189PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetObjNumber(PDObject object, uint32_t* pObjNum);
190PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetGenNumber(PDObject object, uint16_t* pGenNum);
191
192#ifdef __cplusplus
193}
194#endif
195
196#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:97
PDObjectStreamOpenMode
Specifies how an objects' stream is accessed.
Definition objects.h:115
@ kPDObjectStreamOpenRaw
Definition objects.h:116
@ kPDObjectStreamOpenFiltered
Definition objects.h:123
@ kPDObjectStreamOpenDecrypted
Definition objects.h:120
PDObjectType
Represents the type of a PDObject and may be retrieved using PDObjectGetType.
Definition objects.h:25
@ kPDObjectBoolean
Definition objects.h:29
@ kPDObjectNull
Definition objects.h:26
@ kPDObjectStream
Definition objects.h:34
@ kPDObjectArray
Definition objects.h:33
@ kPDObjectName
Definition objects.h:30
@ kPDObjectInteger
Definition objects.h:27
@ kPDObjectString
Definition objects.h:31
@ kPDObjectDict
Definition objects.h:32
@ kPDObjectReal
Definition objects.h:28
Definition objects.h:83
Definition objects.h:106
Common types.