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/streams.h>
13#include <pdfsdk/core/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
115
116PDF_CORE_API void PDFSDK_CALLCONV PDObjectAcquire(PDObject object);
117PDF_CORE_API void PDFSDK_CALLCONV PDObjectRelease(PDObject object);
118PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetObjectByID(PDDoc file, uint32_t id, PDObject* pObj);
119PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectCopy(PDDoc file, PDObject srcobject, PDObject* pObj);
120PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetRootObject(PDDoc file, PDObject* pObj);
121PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetInfoObject(PDDoc file, PDObject* pObj);
122PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetType(PDObject object, PDObjectType* type);
123PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDeepEqual(PDObject objA, PDObject objB, bool* pEqual);
124
125// PDObjectBool
126PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateBoolObject(PDDoc file, bool indirect, bool value, PDObject* object);
127PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetBool(PDObject object, bool* value);
128
129// PDObjectInt
130PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateIntObject(PDDoc file, bool indirect, int64_t value, PDObject* object);
131PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetInt(PDObject object, int64_t* value);
132
133// PDObjectReal
134PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateRealObject(PDDoc file, bool indirect, float value, PDObject* object);
135PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetReal(PDObject object, float* value);
136
137// PDObjectString
138PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStringObjectFromUnicode(PDDoc file, bool indirect, const wchar_t* buffer, size_t bufSize, PDObject* object);
139PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStringObject(PDDoc file, bool indirect, const void* buffer, size_t numBytes, bool hexString, PDObject* object);
140PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetUnicodeString(PDObject object, wchar_t* buffer, size_t bufSize, size_t* bufNeededSize);
141PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetString(PDObject object, void* buffer, size_t numBytes, size_t* neededBytes);
142
143// PDObjectName
144PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateNameObject(PDDoc file, bool indirect, PDAtom name, PDObject* object);
145PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetName(PDObject object, PDAtom* name);
146
147// PDObjectArray
148PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateArrayObject(PDDoc file, bool indirect, PDObject* object);
149PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayAdd(PDObject array, PDObject object);
150PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayInsert(PDObject array, size_t index, PDObject object);
151PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayPut(PDObject array, size_t index, PDObject object);
152PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayGet(PDObject array, size_t index, PDObject* object);
153PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayRemove(PDObject array, size_t index);
154PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectArrayGetLength(PDObject array, size_t* index);
155
156// PDObjectDict
157PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateDictObject(PDDoc file, bool indirect, PDObject* object);
158PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictPut(PDObject dict, PDAtom name, PDObject object);
159PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictPutName(PDObject dict, PDAtom name, PDAtom value);
160PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictFind(PDObject dict, PDAtom name, PDObject* object);
161PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictFindName(PDObject dict, PDAtom name, PDAtom* pvalue);
162PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictRemove(PDObject dict, PDAtom name);
163PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectDictEnum(PDObject dict, PDObjectDictEnumProc enumProc, void* userData);
164
165// PDObjectStream
166PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocCreateStreamObject(PDDoc file, const void* buffer, size_t bufSize, PDObject attributesDict, PDObject encodeParms, bool encodeSource, PDObject* pObj);
167PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectStreamGetDict(PDObject objectStream, PDObject* pDict);
168PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectStreamOpen(PDObject object, PDObjectStreamOpenMode openMode, PDReadStream* pStm);
169
170PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectIsIndirect(PDObject object, bool* pIndirect);
171PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetObjNumber(PDObject object, uint32_t* pObjNum);
172PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDObjectGetGenNumber(PDObject object, uint16_t* pGenNum);
173
174#ifdef __cplusplus
175}
176#endif
177
178#endif // PDFSDK_CORE_OBJECTS_H_INCLUDED_
Atom API.
int32_t PDErrCode
Definition errors.h:44
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:102
@ kPDObjectStreamOpenRaw
Definition objects.h:103
@ kPDObjectStreamOpenFiltered
Definition objects.h:110
@ kPDObjectStreamOpenDecrypted
Definition objects.h:107
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
Streams API.
Definition objects.h:83
Common types.