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 
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 
605  void ImportData(common::file::ReaderCallback* file_read, Filter stream_filter);
606 
623  common::file::ReaderCallback* ExportData(bool is_raw_data);
624 
625  private:
626  PDFStream(const PDFStream&);
627  PDFStream &operator = (const PDFStream& stream);
628 };
629 
640 class PDFArray FS_FINAL : public PDFObject {
641  public:
651  static PDFArray* Create();
652 
664  static PDFArray* CreateFromMatrix(const Matrix& matrix);
665 
677  static PDFArray* CreateFromRect(const RectF& rect);
678 
684  int GetElementCount() const;
685 
695  PDFObject* GetElement(int index) const;
696 
704  void AddElement(PDFObject* element);
705 
713  void AddBoolean(bool boolean_value);
714 
722  void AddDateTime(const DateTime& date_time);
723 
731  void AddFloat(float float_value);
732 
740  void AddInteger(int integer_value);
741 
749  void AddMatrix(const Matrix& matrix);
750 
758  void AddRect(const RectF& rect);
759 
768  void AddName(const char* name);
769 
778  void AddString(const wchar_t* new_string);
779 
794  void InsertAt(int index, PDFObject* element);
795 
806  void SetAt(int index, PDFObject* element);
807 
817  void RemoveAt(int index);
818 
832  void AddReference(PDFObject* pdf_object, PDFDoc document);
833 
834  private:
835  PDFArray(const PDFArray&);
836  PDFArray &operator = (const PDFArray& array_object);
837 };
838 
850 class PDFDictionary FS_FINAL : public PDFObject {
851  public:
861  static PDFDictionary* Create();
862 
870  bool HasKey(const char* key) const;
871 
880  PDFObject* GetElement(const char* key) const;
881 
891  POSITION MoveNext(POSITION position);
892 
900  String GetKey(POSITION position) const;
901 
910  PDFObject* GetValue(POSITION position) const;
911 
924  void SetAt(const char* key, PDFObject* pdf_object);
925 
940  void SetAtReference(const char* key, PDFObject* pdf_object, PDFDoc document);
941 
950  void SetAtBoolean(const char* key, bool value);
951 
960  void SetAtDateTime(const char* key, const DateTime& value);
961 
970  void SetAtFloat(const char* key, float value);
971 
980  void SetAtInteger(const char* key, int value);
981 
990  void SetAtMatrix(const char* key, const Matrix& value);
991 
1000  void SetAtRect(const char* key, const RectF& value);
1001 
1010  void SetAtName(const char* key, const char* value);
1011 
1022  void SetAtString(const char* key, const char* value);
1023 
1034  void SetAtString(const char* key, const wchar_t* value);
1035 
1043  void RemoveAt(const char* key);
1044 
1045  private:
1046  PDFDictionary(const PDFDictionary&);
1047  PDFDictionary &operator = (const PDFDictionary& dictionary);
1048 };
1049 
1052 
1053 } // namespace objects
1054 } // namespace pdf
1055 } // namespace foxit
1056 #endif // FS_PDFOBJECT_H_
1057 
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:448
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:221
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:482
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:508
Filter type: CCITTFaxDecode, which means to decompress data encoded using the CCITT facsimile standar...
Definition: fs_pdfobject.h:493
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.
bool IsIdentical(PDFObject *pdf_obj) const
Check if input PDF object is identical with current PDF object.
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:461
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:587
Filter type: JBIG2Decode, which means to decompress data encoded using the JBIG2 standard,...
Definition: fs_pdfobject.h:498
PDFDictionary * GetDict()
Get the PDF dictionary object of current PDF object.
WIDE STRING CLASS.
Definition: fx_string.h:1461
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:192
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.
static PDFObject * CreateFromNameW(const wchar_t *name)
Create a PDF object from a string which represents a name.
Filter
Enumeration for stream filter type.
Definition: fs_pdfobject.h:457
static PDFArray * CreateFromRect(const RectF &rect)
Create a new array object for a rectangle.
Definition: fs_pdfdoc.h:772
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:476
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:471
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:206
void SetAt(int index, PDFObject *element)
Set a new PDF object at a specified position in current PDF array object.
Definition: fx_basic.h:1297
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:196
Filter type: RunLengthDecode, which means to decompress data encoded using a byte-oriented run-length...
Definition: fs_pdfobject.h:488
Filter type: DCTDecode, which means to decompress data encoded using a DCT (discrete cosine transform...
Definition: fs_pdfobject.h:503
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.
CFX_ArrayTemplate< PDFDictionary * > PDFDictionaryArray
Definition: fs_pdfobject.h:1051
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:850
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_pdf3d.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:466
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:481
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:513
Definition: fs_pdfobject.h:640
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 AddReference(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 AddFloat(float float_value)
Add a float value to the end of current PDF array object.
Unknown filter type.
Definition: fs_pdfobject.h:459
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.
PDFObject * DeepCloneObject() const
Clone current PDF object and get the cloned PDF object.
Type
Enumeration for PDF object type.
Definition: fs_pdfobject.h:62