Foxit PDF SDK
fs_pdfobject.h
Go to the documentation of this file.
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 
94  static PDFObject* CreateFromBoolean(bool boolean_value);
95 
105  static PDFObject* CreateFromFloat(float float_value);
106 
116  static PDFObject* CreateFromInteger(int integer_value);
117 
127  static PDFObject* CreateFromString(const wchar_t* string_value);
128 
138  static PDFObject* CreateFromName(const char* name);
139 
154  static PDFObject* CreateFromDateTime(const DateTime& date_time);
155 
173  static PDFObject* CreateReference(PDFDoc document, uint32 object_number);
174 
175 #if !defined(_SWIG_IOS_) && !defined(_SWIG_MACOC_)
176 
187  void Release();
188 #endif
189 
197  PDFObject* CloneObject() const;
198 
205  Type GetType() const;
206 
217  uint32 GetObjNum() const;
218 
226  int GetInteger() const;
227 
235  float GetFloat() const;
236 
244  bool GetBoolean() const;
245 
255  Matrix GetMatrix() const;
256 
266  RectF GetRect() const;
267 
276  PDFObject* GetDirectObject() const;
277 
287  DateTime GetDateTime() const;
288 
298  String GetName() const;
299 
316  String GetString() const;
317 
334  WString GetWideString() const;
335 
345  PDFArray* GetArray();
346 
357 
367  PDFStream* GetStream();
368 
369  protected:
370  ~PDFObject() {}
371 
372  private:
373  PDFObject(const PDFObject&);
374  PDFObject &operator = (const PDFObject& object);
375 };
376 
385 class PDFStream FS_FINAL : public PDFObject {
386  public:
394  typedef enum _Filter {
396  e_Unknown = -1,
450  e_Crypt = 10
451  } Filter;
452 
468  static PDFStream* Create(PDFDictionary* dictionary);
469 
476 
484 
494  uint64 GetDataSize(bool is_raw_data);
495 
514  bool GetData(bool is_raw_data, size_t size, void* out_buffer);
515 
524  void SetData(const void* buffer, size_t size);
525 
540  void ImportData(common::file::ReaderCallback* file_read, Filter stream_filter);
541 
558  common::file::ReaderCallback* ExportData(bool is_raw_data);
559 
560  private:
561  PDFStream(const PDFStream&);
562  PDFStream &operator = (const PDFStream& stream);
563 };
564 
575 class PDFArray FS_FINAL : public PDFObject {
576  public:
584  static PDFArray* Create();
585 
595  static PDFArray* CreateFromMatrix(const Matrix& matrix);
596 
606  static PDFArray* CreateFromRect(const RectF& rect);
607 
613  int GetElementCount() const;
614 
623  PDFObject* GetElement(int index) const;
624 
632  void AddElement(PDFObject* element);
633 
641  void AddBoolean(bool boolean_value);
642 
650  void AddDateTime(const DateTime& date_time);
651 
659  void AddFloat(float float_value);
660 
668  void AddInteger(int integer_value);
669 
677  void AddMatrix(const Matrix& matrix);
678 
686  void AddRect(const RectF& rect);
687 
696  void AddName(const char* name);
697 
706  void AddString(const wchar_t* new_string);
707 
722  void InsertAt(int index, PDFObject* element);
723 
734  void SetAt(int index, PDFObject* element);
735 
745  void RemoveAt(int index);
746 
747  private:
748  PDFArray(const PDFArray&);
749  PDFArray &operator = (const PDFArray& array_object);
750 };
751 
763 class PDFDictionary FS_FINAL : public PDFObject {
764  public:
772  static PDFDictionary* Create();
773 
781  bool HasKey(const char* key) const;
782 
790  PDFObject* GetElement(const char* key) const;
791 
801  POSITION MoveNext(POSITION position);
802 
810  String GetKey(POSITION position) const;
811 
819  PDFObject* GetValue(POSITION position) const;
820 
833  void SetAt(const char* key, PDFObject* pdf_object);
834 
849  void SetAtReference(const char* key, PDFObject* pdf_object, PDFDoc document);
850 
859  void SetAtBoolean(const char* key, bool value);
860 
869  void SetAtDateTime(const char* key, const DateTime& value);
870 
879  void SetAtFloat(const char* key, float value);
880 
889  void SetAtInteger(const char* key, int value);
890 
899  void SetAtMatrix(const char* key, const Matrix& value);
900 
909  void SetAtRect(const char* key, const RectF& value);
910 
919  void SetAtName(const char* key, const char* value);
920 
931  void SetAtString(const char* key, const char* value);
932 
943  void SetAtString(const char* key, const wchar_t* value);
944 
952  void RemoveAt(const char* key);
953 
954  private:
956  PDFDictionary &operator = (const PDFDictionary& dictionary);
957 };
958 
959 } // namespace objects
960 } // namespace pdf
961 } // namespace foxit
962 #endif // FS_PDFOBJECT_H_
963 
static PDFObject * CreateFromFloat(float float_value)
Create a PDF object from a float number.
PDF string object.
Definition: fs_pdfobject.h:70
Definition: fs_pdfobject.h:385
void SetAtRect(const char *key, const RectF &value)
Set a rectangle object as value element to an entry specified by key.
uint32 GetObjNum() const
Get the indirect object number of current PDF object.
static PDFArray * CreateFromMatrix(const Matrix &matrix)
Create a new array object for a matrix.
static PDFDictionary * Create()
Create a new dictionary object.
int GetElementCount() const
Get the count of elements.
void AddElement(PDFObject *element)
Add a PDF object to the end of current PDF array object.
CFX_Object Object
Object type.
Definition: fs_basictypes.h:219
void SetAtReference(const char *key, PDFObject *pdf_object, PDFDoc document)
Set the reference object of an indirect PDF object (whose object number is always above 0) as value e...
void SetAtBoolean(const char *key, bool value)
Set boolean element an entry specified by key.
PDFObject * GetValue(POSITION position) const
Get the value element of an entry specified by position.
Definition: fs_basictypes.h:432
void SetData(const void *buffer, size_t size)
Set stream data.
Filter type: JPXDecode, which means to decompress data encoded using the wavelet-based JPEG2000 stand...
Definition: fs_pdfobject.h:445
Filter type: CCITTFaxDecode, which means to decompress data encoded using the CCITT facsimile standar...
Definition: fs_pdfobject.h:430
void SetAtName(const char *key, const char *value)
Set a string (as PDF name object) as value element to an entry specified by key.
void SetAtString(const char *key, const char *value)
Set a string as value element to an entry specified by key.
void SetAtFloat(const char *key, float value)
Set a float element to an entry specified by key.
Header file for file operation related definitions and functions.
No need to decode the stream data.
Definition: fs_pdfobject.h:398
static PDFObject * CreateReference(PDFDoc document, uint32 object_number)
Create a reference for an indirect object.
PDFObject * GetDirectObject() const
Get the direct object of current PDF object.
File reading interface.
Definition: fx_stream.h:566
Filter type: JBIG2Decode, which means to decompress data encoded using the JBIG2 standard,...
Definition: fs_pdfobject.h:435
PDFDictionary * GetDict()
Get the PDF dictionary object of current PDF object.
WIDE STRING CLASS.
Definition: fx_string.h:1452
uint64 GetDataSize(bool is_raw_data)
Get the size of stream data, in bytes.
String GetKey(POSITION position) const
Get the key of an entry specified by position.
FX_UINT64 uint64
Unsigned 64-bit integer.
Definition: fs_basictypes.h:194
PDFObject * GetElement(const char *key) const
Get the value element of an entry with specified key.
void AddDateTime(const DateTime &date_time)
Add a date time to the end of current PDF array object.
Filter
Enumeration for stream filter type.
Definition: fs_pdfobject.h:394
static PDFArray * CreateFromRect(const RectF &rect)
Create a new array object for a rectangle.
Definition: fs_pdfdoc.h:389
static PDFArray * Create()
Create a new array object.
PDF array object.
Definition: fs_pdfobject.h:74
void RemoveAt(const char *key)
Remove an entry specified by key.
void SetAtDateTime(const char *key, const DateTime &value)
Set a Datetime object as value element to an entry specified by key.
common::file::ReaderCallback * ExportData(bool is_raw_data)
Export stream data.
static PDFObject * CreateFromDateTime(const DateTime &date_time)
Create a PDF object from date time.
Filter type: LZWDecode, which means to decompress data encoded using the LZW (Lempel-Ziv-Welch) adapt...
Definition: fs_pdfobject.h:413
void AddBoolean(bool boolean_value)
Add a boolean value to the end of current PDF array object.
RectF GetRect() const
Get the rectangle value of current PDF object.
void AddString(const wchar_t *new_string)
Add a string as PDF string object to the end of current PDF array object.
void Release()
Release a newly created PDF object or a clone PDF object, which is not related to PDF document or oth...
Filter type: ASCII85Decode, which means to decode data encoded in an ASCII base-85 representation,...
Definition: fs_pdfobject.h:408
WString GetWideString() const
Get the wide string value of current PDF object.
String GetName() const
Get the name value of current PDF object.
PDF name object.
Definition: fs_pdfobject.h:72
PDFObject * CloneObject() const
Clone current PDF object and get the cloned PDF object.
FX_POSITION POSITION
A value used to denote the position of an element in a collection.
Definition: fs_basictypes.h:208
void SetAt(int index, PDFObject *element)
Set a new PDF object at a specified position in current PDF array object.
static PDFStream * Create(PDFDictionary *dictionary)
Create a new stream object based on a dictionary.
PDF stream object.
Definition: fs_pdfobject.h:78
void AddName(const char *name)
Add a string as PDF name object to the end of current PDF array object.
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:198
Filter type: RunLengthDecode, which means to decompress data encoded using a byte-oriented run-length...
Definition: fs_pdfobject.h:425
Filter type: DCTDecode, which means to decompress data encoded using a DCT (discrete cosine transform...
Definition: fs_pdfobject.h:440
bool GetBoolean() const
Get the boolean value of current PDF object.
static PDFObject * CreateFromString(const wchar_t *string_value)
Create a PDF object from string.
PDF null object.
Definition: fs_pdfobject.h:80
Header file for common definitions and classes.
static PDFObject * CreateFromInteger(int integer_value)
Create a PDF object from a integer number.
void AddRect(const RectF &rect)
Add a rectangle to the end of current PDF array object.
void AddInteger(int integer_value)
Add an integer value to the end of current PDF array object.
PDF boolean object.
Definition: fs_pdfobject.h:66
PDFDictionary * GetDictionary()
Get the PDF dictionary object associated to current PDF stream object.
PDFStream * GetStream()
Get the PDF stream object of current PDF object.
Invalid PDF object type.
Definition: fs_pdfobject.h:64
static PDFObject * CreateFromBoolean(bool boolean_value)
Create a PDF object from a boolean value.
DateTime GetDateTime() const
Get the date time value of current PDF object.
void RemoveAt(int index)
Remove an element in a specified position (by index) from current PDF array object.
void SetAtMatrix(const char *key, const Matrix &value)
Set a matrix object as value element to an entry specified by key.
Type GetType() const
Get the type of current PDF object.
Definition: fs_pdfobject.h:763
int GetInteger() const
Get the integer value of current PDF object.
PDFArray * GetArray()
Get the PDF array object of current PDF object.
Foxit namespace.
Definition: fs_compare.h:27
Definition: fs_pdfobject.h:55
Filter type: ASCIIHexDecode, which means to decode data encoded in an ASCII hexadecimal representatio...
Definition: fs_pdfobject.h:403
void AddMatrix(const Matrix &matrix)
Add a matrix to the end of current PDF array object.
PDF number object.
Definition: fs_pdfobject.h:68
BYTE STRING CLASS.
Definition: fx_string.h:317
Matrix GetMatrix() const
Get the matrix value of current PDF object.
POSITION MoveNext(POSITION position)
Move to the position of first or the next entry.
void ImportData(common::file::ReaderCallback *file_read, Filter stream_filter)
Import stream data.
void SetAtInteger(const char *key, int value)
Set a integer element to an entry specified by key.
bool HasKey(const char *key) const
Check whether there is an entry with specified key in current dictionary or not.
void InsertAt(int index, PDFObject *element)
Insert a PDF object to a specified position in current PDF array object.
PDFObject * GetElement(int index) const
Get a specified element by index.
Filter type: FlateDecode, which means to decompress data encoded using the zlib/deflate compression m...
Definition: fs_pdfobject.h:418
bool GetData(bool is_raw_data, size_t size, void *out_buffer)
Get stream data.
Definition: fx_coordinates.h:1076
String GetString() const
Get the string value of current PDF object.
Filter type: Crypt, which means to decrypt data encrypted by a security handler, reproducing the orig...
Definition: fs_pdfobject.h:450
Definition: fs_pdfobject.h:575
float GetFloat() const
Get the float value of current PDF object.
Filter GetStreamFilter()
Get the type of stream filter which indicate how the stream data must be decoded before the data is u...
PDF dictionary object.
Definition: fs_pdfobject.h:76
void SetAt(const char *key, PDFObject *pdf_object)
Set a direct PDF object (whose object number is always equal to 0) as value element to an entry speci...
void AddFloat(float float_value)
Add a float value to the end of current PDF array object.
Unknown filter type.
Definition: fs_pdfobject.h:396
PDF reference object.
Definition: fs_pdfobject.h:82
Definition: fx_coordinates.h:771
static PDFObject * CreateFromName(const char *name)
Create a PDF object from a string which represents a name.
Type
Enumeration for PDF object type.
Definition: fs_pdfobject.h:62