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 {
66  e_Boolean = 1,
68  e_Number = 2,
70  e_String = 3,
72  e_Name = 4,
74  e_Array = 5,
78  e_Stream = 7,
80  e_Null = 8,
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 
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,
513  e_Crypt = 10
514  } Filter;
515 
532  static PDFStream* Create(PDFDictionary* dictionary);
533 
541 
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 
1050 
1051 } // namespace objects
1052 } // namespace pdf
1053 } // namespace foxit
1054 #endif // FS_PDFOBJECT_H_
1055 
static PDFObject * CreateFromFloat(float float_value)
从浮点数创建PDF对象。
PDF字符串对象。
Definition: fs_pdfobject.h:70
Definition: fs_pdfobject.h:448
void SetAtRect(const char *key, const RectF &value)
将矩形对象作为值元素设置到由键指定的条目。
uint32 GetObjNum() const
获取当前PDF对象的间接对象编号。
static PDFArray * CreateFromMatrix(const Matrix &matrix)
为矩阵创建新的数组对象。
static PDFDictionary * Create()
创建新的字典对象。
int GetElementCount() const
获取元素的数量。
void AddElement(PDFObject *element)
将PDF对象添加到当前PDF数组对象的末尾。
CFX_Object Object
对象类型。
Definition: fs_basictypes.h:221
void SetAtReference(const char *key, PDFObject *pdf_object, PDFDoc document)
将间接PDF对象(其对象编号总是大于0)的引用对象作为值元素设置到由键指定的条目。
void SetAtBoolean(const char *key, bool value)
将布尔元素设置到由键指定的条目。
PDFObject * GetValue(POSITION position) const
获取由位置指定的条目的值元素。
Definition: fs_basictypes.h:482
void SetData(const void *buffer, size_t size)
设置流数据。
过滤器类型:JPXDecode,表示解压使用基于小波的 JPEG2000标准编码的数据,重现原始图像数据。
Definition: fs_pdfobject.h:508
过滤器类型:CCITTFaxDecode,表示解压使用CCITT传真标准编码的数据, 重现原始数据(通常是每像素为1比特的单色图像数据)。
Definition: fs_pdfobject.h:493
void SetAtName(const char *key, const char *value)
将字符串(作为PDF名称对象)作为值元素设置到由键指定的条目。
void SetAtString(const char *key, const char *value)
将字符串作为值元素设置到由键指定的条目。
bool IsIdentical(PDFObject *pdf_obj) const
检查输入的PDF对象是否与当前PDF对象相同。
void SetAtFloat(const char *key, float value)
将浮点数元素设置到由键指定的条目。
文件操作相关定义和函数的头文件。
无需解码流数据。
Definition: fs_pdfobject.h:461
static PDFObject * CreateReference(PDFDoc document, uint32 object_number)
为间接对象创建引用。
PDFObject * GetDirectObject() const
获取当前PDF对象的直接对象。
文件读取接口。
Definition: fx_stream.h:587
过滤器类型:JBIG2Decode,表示解压使用JBIG2标准编码的数据, 重现原始单色(每像素为1比特)图像数据(或该数据的近似值)。
Definition: fs_pdfobject.h:498
PDFDictionary * GetDict()
获取当前PDF对象的PDF字典对象。
宽字符串类
Definition: fx_string.h:1457
uint64 GetDataSize(bool is_raw_data)
获取流数据的大小,以字节为单位。
String GetKey(POSITION position) const
获取由位置指定的条目的键。
FX_UINT64 uint64
无符号 64 位整数。
Definition: fs_basictypes.h:192
PDFObject * GetElement(const char *key) const
获取具有指定键的条目的值元素。
void AddDateTime(const DateTime &date_time)
将日期时间添加到当前PDF数组对象的末尾。
static PDFObject * CreateFromNameW(const wchar_t *name)
从表示名称的字符串创建PDF对象。
Filter
流过滤器类型的枚举。
Definition: fs_pdfobject.h:457
static PDFArray * CreateFromRect(const RectF &rect)
为矩形创建新的数组对象。
Definition: fs_pdfdoc.h:771
static PDFArray * Create()
创建新的数组对象。
PDF数组对象。
Definition: fs_pdfobject.h:74
void RemoveAt(const char *key)
移除由键指定的条目。
void SetAtDateTime(const char *key, const DateTime &value)
将Datetime对象作为值元素设置到由键指定的条目。
common::file::ReaderCallback * ExportData(bool is_raw_data)
导出流数据。
static PDFObject * CreateFromDateTime(const DateTime &date_time)
从日期时间创建PDF对象。
过滤器类型:LZWDecode,表示解压使用LZW(Lempel-Ziv-Welch) 自适应压缩方法编码的数据,重现原始文本或二进制数据。
Definition: fs_pdfobject.h:476
void AddBoolean(bool boolean_value)
将布尔值添加到当前PDF数组对象的末尾。
RectF GetRect() const
获取当前PDF对象的矩形值。
void AddString(const wchar_t *new_string)
将字符串作为PDF字符串对象添加到当前PDF数组对象的末尾。
void Release()
释放新创建的PDF对象或克隆PDF对象, 该对象与PDF文档或其他PDF对象无关且不会再使用。
过滤器类型:ASCII85Decode,表示解码以ASCII base-85表示编码的数据, 重现原始二进制数据。
Definition: fs_pdfobject.h:471
WString GetWideString() const
获取当前PDF对象的宽字符串值。
String GetName() const
获取当前PDF对象的名称值。
PDF名称对象。
Definition: fs_pdfobject.h:72
PDFObject * CloneObject() const
克隆当前PDF对象并获取克隆的PDF对象。
FX_POSITION POSITION
用于表示集合中元素位置的值。
Definition: fs_basictypes.h:206
void SetAt(int index, PDFObject *element)
在当前PDF数组对象的指定位置设置新的PDF对象。
Definition: fx_basic.h:1278
static PDFStream * Create(PDFDictionary *dictionary)
基于字典创建新的流对象。
PDF流对象。
Definition: fs_pdfobject.h:78
void AddName(const char *name)
将字符串作为PDF名称对象添加到当前PDF数组对象的末尾。
FX_UINT32 uint32
无符号 32 位整数。
Definition: fs_basictypes.h:196
过滤器类型:RunLengthDecode,表示解压 使用面向字节的游程长度编码算法编码的数据, 重现原始文本或二进制数据(通常是单色图像数据, 或任何包含频繁长连续单个字节值的数据)。
Definition: fs_pdfobject.h:488
过滤器类型:DCTDecode,表示解压使用基于JPEG标准的DCT(离散余弦变换) 技术编码的数据,重现接近原始数据的图像样本数据。
Definition: fs_pdfobject.h:503
bool GetBoolean() const
获取当前PDF对象的布尔值。
static PDFObject * CreateFromString(const wchar_t *string_value)
从字符串创建PDF对象。
PDF空对象。
Definition: fs_pdfobject.h:80
通用定义和类的头文件。
CFX_ArrayTemplate< PDFDictionary * > PDFDictionaryArray
Definition: fs_pdfobject.h:1049
static PDFObject * CreateFromInteger(int integer_value)
Create a PDF object from a integer number.
void AddRect(const RectF &rect)
将矩形添加到当前PDF数组对象的末尾。
void AddInteger(int integer_value)
将整数值添加到当前PDF数组对象的末尾。
PDF布尔对象。
Definition: fs_pdfobject.h:66
PDFDictionary * GetDictionary()
获取与当前PDF流对象关联的PDF字典对象。
PDFStream * GetStream()
获取当前PDF对象的PDF流对象。
无效的PDF对象类型。
Definition: fs_pdfobject.h:64
static PDFObject * CreateFromBoolean(bool boolean_value)
从布尔值创建PDF对象。
DateTime GetDateTime() const
获取当前PDF对象的日期时间值。
void RemoveAt(int index)
从当前PDF数组对象中移除指定位置(按索引)的元素。
void SetAtMatrix(const char *key, const Matrix &value)
将矩阵对象作为值元素设置到由键指定的条目。
Type GetType() const
获取当前PDF对象的类型。
Definition: fs_pdfobject.h:848
int GetInteger() const
获取当前PDF对象的整数值。
PDFArray * GetArray()
获取当前PDF对象的PDF数组对象。
Foxit命名空间。
Definition: fs_taggedpdf.h:27
Definition: fs_pdfobject.h:55
过滤器类型:ASCIIHexDecode,表示解码以ASCII十六进制表示编码的数据, 重现原始二进制数据。
Definition: fs_pdfobject.h:466
void AddMatrix(const Matrix &matrix)
将矩阵添加到当前PDF数组对象的末尾。
PDF数字对象。
Definition: fs_pdfobject.h:68
字节字符串类
Definition: fx_string.h:317
Matrix GetMatrix() const
获取当前PDF对象的矩阵值。
POSITION MoveNext(POSITION position)
移动到第一个或下一个条目的位置。
void ImportData(common::file::ReaderCallback *file_read, Filter stream_filter)
导入流数据。
void SetAtInteger(const char *key, int value)
将整数元素设置到由键指定的条目。
bool HasKey(const char *key) const
检查当前字典中是否存在具有指定键的条目。
void InsertAt(int index, PDFObject *element)
将PDF对象插入到当前PDF数组对象的指定位置。
PDFObject * GetElement(int index) const
通过索引获取指定的元素。
过滤器类型:FlateDecode,表示解压使用zlib/deflate压缩方法编码的数据, 重现原始文本或二进制数据。
Definition: fs_pdfobject.h:481
bool GetData(bool is_raw_data, size_t size, void *out_buffer)
获取流数据。
Definition: fx_coordinates.h:1076
String GetString() const
获取当前PDF对象的字符串值。
过滤器类型:Crypt,表示解密由安全处理程序加密的数据, 重现加密前的原始数据。
Definition: fs_pdfobject.h:513
Definition: fs_pdfobject.h:639
float GetFloat() const
获取当前PDF对象的浮点数值。
Filter GetStreamFilter()
获取流过滤器的类型,该类型指示在使用数据之前必须如何解码流数据。
PDF字典对象。
Definition: fs_pdfobject.h:76
void SetAt(const char *key, PDFObject *pdf_object)
将直接PDF对象(其对象编号总是等于0)作为值元素设置到由键指定的条目。
void AddReference(PDFObject *pdf_object, PDFDoc document)
将间接PDF对象(其对象编号总是大于0)的引用对象设置为值元素。
void AddFloat(float float_value)
将浮点数值添加到当前PDF数组对象的末尾。
未知过滤器类型。
Definition: fs_pdfobject.h:459
PDF引用对象。
Definition: fs_pdfobject.h:82
Definition: fx_coordinates.h:771
static PDFObject * CreateFromName(const char *name)
从表示名称的字符串创建PDF对象。
PDFObject * DeepCloneObject() const
克隆当前PDF对象并获取克隆的PDF对象。
Type
PDF对象类型的枚举。
Definition: fs_pdfobject.h:62