Foxit PDF SDK

fs_pdfobject.h
浏览该文件的文档.
1
15 #ifndef FS_PDFOBJECT_H_
16 #define FS_PDFOBJECT_H_
17
18 #include "common/fs_common.h"
19 #include "common/file/fs_file.h"
20
26 namespace foxit {
30 namespace pdf {
34 namespace objects {
35 class PDFArray;
36 class PDFDictionary;
37 class PDFStream;
38
55 class PDFObject : public Object {
56 public:
62 typedef enum _Type {
64 e_InvalidType = 0,
66 e_Boolean = 1,
68 e_Number = 2,
70 e_String = 3,
72 e_Name = 4,
74 e_Array = 5,
76 e_Dictionary = 6,
78 e_Stream = 7,
80 e_Null = 8,
82 e_Reference = 9
83 } Type;
84
85
97 static PDFObject* CreateFromBoolean(bool boolean_value);
98
110 static PDFObject* CreateFromFloat(float float_value);
111
123 static PDFObject* CreateFromInteger(int integer_value);
124
136 static PDFObject* CreateFromString(const wchar_t* string_value);
137
151 static PDFObject* CreateFromString(const wchar_t* string_value, int length);
152
162 static PDFObject* CreateFromNameW(const wchar_t* name);
163
175 static PDFObject* CreateFromName(const char* name);
176
192 static PDFObject* CreateFromDateTime(const DateTime& date_time);
193
212 static PDFObject* CreateReference(PDFDoc document, uint32 object_number);
213
225 void Release();
226
236 PDFObject* CloneObject() const;
237
249 PDFObject* DeepCloneObject() const;
250
259 bool IsIdentical(PDFObject* pdf_obj) const;
260
267 Type GetType() const;
268
279 uint32 GetObjNum() const;
280
288 int GetInteger() const;
289
297 float GetFloat() const;
298
306 bool GetBoolean() const;
307
317 Matrix GetMatrix() const;
318
328 RectF GetRect() const;
329
339 PDFObject* GetDirectObject() const;
340
350 DateTime GetDateTime() const;
351
361 String GetName() const;
362
379 String GetString() const;
380
397 WString GetWideString() const;
398
408 PDFArray* GetArray();
409
419 PDFDictionary* GetDict();
420
430 PDFStream* GetStream();
431
432 protected:
433 ~PDFObject() {}
434
435 private:
436 PDFObject(const PDFObject&);
437 PDFObject &operator = (const PDFObject& object);
438 };
439
448 class PDFStream FS_FINAL : public PDFObject {
449 public:
457 typedef enum _Filter {
459 e_Unknown = -1,
461 e_NoneDecode = 0,
466 e_ASCIIHexDecode = 1,
471 e_ASCII85Decode = 2,
476 e_LZWDecode = 3,
481 e_FlateDecode = 4,
488 e_RunLengthDecode = 5,
493 e_CCITTFaxDecode = 6,
498 e_JBIG2Decode = 7,
503 e_DCTDecode = 8,
508 e_JPXDecode = 9,
513 e_Crypt = 10
514 } Filter;
515
532 static PDFStream* Create(PDFDictionary* dictionary);
533
540 PDFDictionary* GetDictionary();
541
548 Filter GetStreamFilter();
549
559 uint64 GetDataSize(bool is_raw_data);
560
579 bool GetData(bool is_raw_data, size_t size, void* out_buffer);
580
589 void SetData(const void* buffer, size_t size);
590
604 void ImportData(common::file::ReaderCallback* file_read, Filter stream_filter);
605
622 common::file::ReaderCallback* ExportData(bool is_raw_data);
623
624 private:
625 PDFStream(const PDFStream&);
626 PDFStream &operator = (const PDFStream& stream);
627 };
628
639 class PDFArray FS_FINAL : public PDFObject {
640 public:
650 static PDFArray* Create();
651
663 static PDFArray* CreateFromMatrix(const Matrix& matrix);
664
676 static PDFArray* CreateFromRect(const RectF& rect);
677
683 int GetElementCount() const;
684
694 PDFObject* GetElement(int index) const;
695
703 void AddElement(PDFObject* element);
704
712 void AddBoolean(bool boolean_value);
713
721 void AddDateTime(const DateTime& date_time);
722
730 void AddFloat(float float_value);
731
739 void AddInteger(int integer_value);
740
748 void AddMatrix(const Matrix& matrix);
749
757 void AddRect(const RectF& rect);
758
767 void AddName(const char* name);
768
777 void AddString(const wchar_t* new_string);
778
793 void InsertAt(int index, PDFObject* element);
794
805 void SetAt(int index, PDFObject* element);
806
816 void RemoveAt(int index);
817
831 void AddReference(PDFObject* pdf_object, PDFDoc document);
832
833 private:
834 PDFArray(const PDFArray&);
835 PDFArray &operator = (const PDFArray& array_object);
836 };
837
848 class PDFDictionary FS_FINAL : public PDFObject {
849 public:
859 static PDFDictionary* Create();
860
868 bool HasKey(const char* key) const;
869
878 PDFObject* GetElement(const char* key) const;
879
889 POSITION MoveNext(POSITION position);
890
898 String GetKey(POSITION position) const;
899
908 PDFObject* GetValue(POSITION position) const;
909
922 void SetAt(const char* key, PDFObject* pdf_object);
923
938 void SetAtReference(const char* key, PDFObject* pdf_object, PDFDoc document);
939
948 void SetAtBoolean(const char* key, bool value);
949
958 void SetAtDateTime(const char* key, const DateTime& value);
959
968 void SetAtFloat(const char* key, float value);
969
978 void SetAtInteger(const char* key, int value);
979
988 void SetAtMatrix(const char* key, const Matrix& value);
989
998 void SetAtRect(const char* key, const RectF& value);
999
1008 void SetAtName(const char* key, const char* value);
1009
1020 void SetAtString(const char* key, const char* value);
1021
1032 void SetAtString(const char* key, const wchar_t* value);
1033
1041 void RemoveAt(const char* key);
1042
1043 private:
1044 PDFDictionary(const PDFDictionary&);
1045 PDFDictionary &operator = (const PDFDictionary& dictionary);
1046 };
1047
1049 typedef CFX_ArrayTemplate<PDFDictionary*> PDFDictionaryArray;
1050
1051 } // namespace objects
1052 } // namespace pdf
1053 } // namespace foxit
1054 #endif // FS_PDFOBJECT_H_
1055
foxit::pdf::objects::PDFObject::CreateFromFloat
static PDFObject * CreateFromFloat(float float_value)
从浮点数创建PDF对象。
foxit::pdf::objects::PDFObject::e_String
PDF字符串对象。
Definition: fs_pdfobject.h:70
foxit::pdf::objects::PDFStream
Definition: fs_pdfobject.h:448
foxit::pdf::objects::PDFDictionary::SetAtRect
void SetAtRect(const char *key, const RectF &value)
将矩形对象作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFObject::GetObjNum
uint32 GetObjNum() const
获取当前PDF对象的间接对象编号。
foxit::pdf::objects::PDFArray::CreateFromMatrix
static PDFArray * CreateFromMatrix(const Matrix &matrix)
为矩阵创建新的数组对象。
foxit::pdf::objects::PDFDictionary::Create
static PDFDictionary * Create()
创建新的字典对象。
foxit::pdf::objects::PDFArray::GetElementCount
int GetElementCount() const
获取元素的数量。
foxit::pdf::objects::PDFArray::AddElement
void AddElement(PDFObject *element)
将PDF对象添加到当前PDF数组对象的末尾。
foxit::Object
CFX_Object Object
对象类型。
Definition: fs_basictypes.h:220
foxit::pdf::objects::PDFDictionary::SetAtReference
void SetAtReference(const char *key, PDFObject *pdf_object, PDFDoc document)
将间接PDF对象（其对象编号总是大于0）的引用对象作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFDictionary::SetAtBoolean
void SetAtBoolean(const char *key, bool value)
将布尔元素设置到由键指定的条目。
foxit::pdf::objects::PDFDictionary::GetValue
PDFObject * GetValue(POSITION position) const
获取由位置指定的条目的值元素。
foxit::DateTime
Definition: fs_basictypes.h:498
foxit::pdf::objects::PDFStream::SetData
void SetData(const void *buffer, size_t size)
设置流数据。
foxit::pdf::objects::PDFStream::e_JPXDecode
过滤器类型：JPXDecode，表示解压使用基于小波的 JPEG2000标准编码的数据，重现原始图像数据。
Definition: fs_pdfobject.h:508
foxit::pdf::objects::PDFStream::e_CCITTFaxDecode
过滤器类型：CCITTFaxDecode，表示解压使用CCITT传真标准编码的数据， 重现原始数据（通常是每像素为1比特的单色图像数据）。
Definition: fs_pdfobject.h:493
foxit::pdf::objects::PDFDictionary::SetAtName
void SetAtName(const char *key, const char *value)
将字符串（作为PDF名称对象）作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFDictionary::SetAtString
void SetAtString(const char *key, const char *value)
将字符串作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFObject::IsIdentical
bool IsIdentical(PDFObject *pdf_obj) const
检查输入的PDF对象是否与当前PDF对象相同。
foxit::pdf::objects::PDFDictionary::SetAtFloat
void SetAtFloat(const char *key, float value)
将浮点数元素设置到由键指定的条目。
fs_file.h
文件操作相关定义和函数的头文件。
foxit::pdf::objects::PDFStream::e_NoneDecode
无需解码流数据。
Definition: fs_pdfobject.h:461
foxit::pdf::objects::PDFObject::CreateReference
static PDFObject * CreateReference(PDFDoc document, uint32 object_number)
为间接对象创建引用。
foxit::pdf::objects::PDFObject::GetDirectObject
PDFObject * GetDirectObject() const
获取当前PDF对象的直接对象。
IFX_FileRead
文件读取接口。
Definition: fx_stream.h:587
foxit::pdf::objects::PDFStream::e_JBIG2Decode
过滤器类型：JBIG2Decode，表示解压使用JBIG2标准编码的数据， 重现原始单色（每像素为1比特）图像数据（或该数据的近似值）。
Definition: fs_pdfobject.h:498
foxit::pdf::objects::PDFObject::GetDict
PDFDictionary * GetDict()
获取当前PDF对象的PDF字典对象。
CFX_WideString
宽字符串类
Definition: fx_string.h:1457
foxit::pdf::objects::PDFStream::GetDataSize
uint64 GetDataSize(bool is_raw_data)
获取流数据的大小，以字节为单位。
foxit::pdf::objects::PDFDictionary::GetKey
String GetKey(POSITION position) const
获取由位置指定的条目的键。
foxit::uint64
FX_UINT64 uint64
无符号 64 位整数。
Definition: fs_basictypes.h:191
foxit::pdf::objects::PDFDictionary::GetElement
PDFObject * GetElement(const char *key) const
获取具有指定键的条目的值元素。
foxit::pdf::objects::PDFArray::AddDateTime
void AddDateTime(const DateTime &date_time)
将日期时间添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFObject::CreateFromNameW
static PDFObject * CreateFromNameW(const wchar_t *name)
从表示名称的字符串创建PDF对象。
foxit::pdf::objects::PDFStream::Filter
Filter
流过滤器类型的枚举。
Definition: fs_pdfobject.h:457
foxit::pdf::objects::PDFArray::CreateFromRect
static PDFArray * CreateFromRect(const RectF &rect)
为矩形创建新的数组对象。
foxit::pdf::PDFDoc
Definition: fs_pdfdoc.h:768
foxit::pdf::objects::PDFArray::Create
static PDFArray * Create()
创建新的数组对象。
foxit::pdf::objects::PDFObject::e_Array
PDF数组对象。
Definition: fs_pdfobject.h:74
foxit::pdf::objects::PDFDictionary::RemoveAt
void RemoveAt(const char *key)
移除由键指定的条目。
foxit::pdf::objects::PDFDictionary::SetAtDateTime
void SetAtDateTime(const char *key, const DateTime &value)
将Datetime对象作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFStream::ExportData
common::file::ReaderCallback * ExportData(bool is_raw_data)
导出流数据。
foxit::pdf::objects::PDFObject::CreateFromDateTime
static PDFObject * CreateFromDateTime(const DateTime &date_time)
从日期时间创建PDF对象。
foxit::pdf::objects::PDFStream::e_LZWDecode
过滤器类型：LZWDecode，表示解压使用LZW(Lempel-Ziv-Welch) 自适应压缩方法编码的数据，重现原始文本或二进制数据。
Definition: fs_pdfobject.h:476
foxit::pdf::objects::PDFArray::AddBoolean
void AddBoolean(bool boolean_value)
将布尔值添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFObject::GetRect
RectF GetRect() const
获取当前PDF对象的矩形值。
foxit::pdf::objects::PDFArray::AddString
void AddString(const wchar_t *new_string)
将字符串作为PDF字符串对象添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFObject::Release
void Release()
释放新创建的PDF对象或克隆PDF对象， 该对象与PDF文档或其他PDF对象无关且不会再使用。
foxit::pdf::objects::PDFStream::e_ASCII85Decode
过滤器类型：ASCII85Decode，表示解码以ASCII base-85表示编码的数据， 重现原始二进制数据。
Definition: fs_pdfobject.h:471
foxit::pdf::objects::PDFObject::GetWideString
WString GetWideString() const
获取当前PDF对象的宽字符串值。
foxit::pdf::objects::PDFObject::GetName
String GetName() const
获取当前PDF对象的名称值。
foxit::pdf::objects::PDFObject::e_Name
PDF名称对象。
Definition: fs_pdfobject.h:72
foxit::pdf::objects::PDFObject::CloneObject
PDFObject * CloneObject() const
克隆当前PDF对象并获取克隆的PDF对象。
foxit::POSITION
FX_POSITION POSITION
用于表示集合中元素位置的值。
Definition: fs_basictypes.h:205
foxit::pdf::objects::PDFArray::SetAt
void SetAt(int index, PDFObject *element)
在当前PDF数组对象的指定位置设置新的PDF对象。
CFX_ArrayTemplate
Definition: fx_basic.h:1278
foxit::pdf::objects::PDFStream::Create
static PDFStream * Create(PDFDictionary *dictionary)
基于字典创建新的流对象。
foxit::pdf::objects::PDFObject::e_Stream
PDF流对象。
Definition: fs_pdfobject.h:78
foxit::pdf::objects::PDFArray::AddName
void AddName(const char *name)
将字符串作为PDF名称对象添加到当前PDF数组对象的末尾。
foxit::uint32
FX_UINT32 uint32
无符号 32 位整数。
Definition: fs_basictypes.h:195
foxit::pdf::objects::PDFStream::e_RunLengthDecode
过滤器类型：RunLengthDecode，表示解压 使用面向字节的游程长度编码算法编码的数据， 重现原始文本或二进制数据（通常是单色图像数据， 或任何包含频繁长连续单个字节值的数据）。
Definition: fs_pdfobject.h:488
foxit::pdf::objects::PDFStream::e_DCTDecode
过滤器类型：DCTDecode，表示解压使用基于JPEG标准的DCT（离散余弦变换） 技术编码的数据，重现接近原始数据的图像样本数据。
Definition: fs_pdfobject.h:503
foxit::pdf::objects::PDFObject::GetBoolean
bool GetBoolean() const
获取当前PDF对象的布尔值。
foxit::pdf::objects::PDFObject::CreateFromString
static PDFObject * CreateFromString(const wchar_t *string_value)
从字符串创建PDF对象。
foxit::pdf::objects::PDFObject::e_Null
PDF空对象。
Definition: fs_pdfobject.h:80
fs_common.h
通用定义和类的头文件。
foxit::pdf::objects::PDFDictionaryArray
CFX_ArrayTemplate< PDFDictionary * > PDFDictionaryArray
Definition: fs_pdfobject.h:1049
foxit::pdf::objects::PDFObject::CreateFromInteger
static PDFObject * CreateFromInteger(int integer_value)
Create a PDF object from a integer number.
foxit::pdf::objects::PDFArray::AddRect
void AddRect(const RectF &rect)
将矩形添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFArray::AddInteger
void AddInteger(int integer_value)
将整数值添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFObject::e_Boolean
PDF布尔对象。
Definition: fs_pdfobject.h:66
foxit::pdf::objects::PDFStream::GetDictionary
PDFDictionary * GetDictionary()
获取与当前PDF流对象关联的PDF字典对象。
foxit::pdf::objects::PDFObject::GetStream
PDFStream * GetStream()
获取当前PDF对象的PDF流对象。
foxit::pdf::objects::PDFObject::e_InvalidType
无效的PDF对象类型。
Definition: fs_pdfobject.h:64
foxit::pdf::objects::PDFObject::CreateFromBoolean
static PDFObject * CreateFromBoolean(bool boolean_value)
从布尔值创建PDF对象。
foxit::pdf::objects::PDFObject::GetDateTime
DateTime GetDateTime() const
获取当前PDF对象的日期时间值。
foxit::pdf::objects::PDFArray::RemoveAt
void RemoveAt(int index)
从当前PDF数组对象中移除指定位置（按索引）的元素。
foxit::pdf::objects::PDFDictionary::SetAtMatrix
void SetAtMatrix(const char *key, const Matrix &value)
将矩阵对象作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFObject::GetType
Type GetType() const
获取当前PDF对象的类型。
foxit::pdf::objects::PDFDictionary
Definition: fs_pdfobject.h:848
foxit::pdf::objects::PDFObject::GetInteger
int GetInteger() const
获取当前PDF对象的整数值。
foxit::pdf::objects::PDFObject::GetArray
PDFArray * GetArray()
获取当前PDF对象的PDF数组对象。
foxit
Foxit命名空间。
Definition: fs_taggedpdf.h:27
foxit::pdf::objects::PDFObject
Definition: fs_pdfobject.h:55
foxit::pdf::objects::PDFStream::e_ASCIIHexDecode
过滤器类型：ASCIIHexDecode，表示解码以ASCII十六进制表示编码的数据， 重现原始二进制数据。
Definition: fs_pdfobject.h:466
foxit::pdf::objects::PDFArray::AddMatrix
void AddMatrix(const Matrix &matrix)
将矩阵添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFObject::e_Number
PDF数字对象。
Definition: fs_pdfobject.h:68
CFX_ByteString
字节字符串类
Definition: fx_string.h:317
foxit::pdf::objects::PDFObject::GetMatrix
Matrix GetMatrix() const
获取当前PDF对象的矩阵值。
foxit::pdf::objects::PDFDictionary::MoveNext
POSITION MoveNext(POSITION position)
移动到第一个或下一个条目的位置。
foxit::pdf::objects::PDFStream::ImportData
void ImportData(common::file::ReaderCallback *file_read, Filter stream_filter)
导入流数据。
foxit::pdf::objects::PDFDictionary::SetAtInteger
void SetAtInteger(const char *key, int value)
将整数元素设置到由键指定的条目。
foxit::pdf::objects::PDFDictionary::HasKey
bool HasKey(const char *key) const
检查当前字典中是否存在具有指定键的条目。
foxit::pdf::objects::PDFArray::InsertAt
void InsertAt(int index, PDFObject *element)
将PDF对象插入到当前PDF数组对象的指定位置。
foxit::pdf::objects::PDFArray::GetElement
PDFObject * GetElement(int index) const
通过索引获取指定的元素。
foxit::pdf::objects::PDFStream::e_FlateDecode
过滤器类型：FlateDecode，表示解压使用zlib/deflate压缩方法编码的数据， 重现原始文本或二进制数据。
Definition: fs_pdfobject.h:481
foxit::pdf::objects::PDFStream::GetData
bool GetData(bool is_raw_data, size_t size, void *out_buffer)
获取流数据。
CFX_Matrix
Definition: fx_coordinates.h:1076
foxit::pdf::objects::PDFObject::GetString
String GetString() const
获取当前PDF对象的字符串值。
foxit::pdf::objects::PDFStream::e_Crypt
过滤器类型：Crypt，表示解密由安全处理程序加密的数据， 重现加密前的原始数据。
Definition: fs_pdfobject.h:513
foxit::pdf::objects::PDFArray
Definition: fs_pdfobject.h:639
foxit::pdf::objects::PDFObject::GetFloat
float GetFloat() const
获取当前PDF对象的浮点数值。
foxit::pdf::objects::PDFStream::GetStreamFilter
Filter GetStreamFilter()
获取流过滤器的类型，该类型指示在使用数据之前必须如何解码流数据。
foxit::pdf::objects::PDFObject::e_Dictionary
PDF字典对象。
Definition: fs_pdfobject.h:76
foxit::pdf::objects::PDFDictionary::SetAt
void SetAt(const char *key, PDFObject *pdf_object)
将直接PDF对象（其对象编号总是等于0）作为值元素设置到由键指定的条目。
foxit::pdf::objects::PDFArray::AddReference
void AddReference(PDFObject *pdf_object, PDFDoc document)
将间接PDF对象（其对象编号总是大于0）的引用对象设置为值元素。
foxit::pdf::objects::PDFArray::AddFloat
void AddFloat(float float_value)
将浮点数值添加到当前PDF数组对象的末尾。
foxit::pdf::objects::PDFStream::e_Unknown
未知过滤器类型。
Definition: fs_pdfobject.h:459
foxit::pdf::objects::PDFObject::e_Reference
PDF引用对象。
Definition: fs_pdfobject.h:82
CFX_FloatRect
Definition: fx_coordinates.h:771
foxit::pdf::objects::PDFObject::CreateFromName
static PDFObject * CreateFromName(const char *name)
从表示名称的字符串创建PDF对象。
foxit::pdf::objects::PDFObject::DeepCloneObject
PDFObject * DeepCloneObject() const
克隆当前PDF对象并获取克隆的PDF对象。
foxit::pdf::objects::PDFObject::Type
Type
PDF对象类型的枚举。
Definition: fs_pdfobject.h:62