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 
149  static PDFObject* CreateFromName(const char* name);
150 
166  static PDFObject* CreateFromDateTime(const DateTime& date_time);
167 
186  static PDFObject* CreateReference(PDFDoc document, uint32 object_number);
187 
199  void Release();
200 
210  PDFObject* CloneObject() const;
211 
223  PDFObject* DeepCloneObject() const;
224 
233  bool IsIdentical(PDFObject* pdf_obj) const;
234 
241  Type GetType() const;
242 
253  uint32 GetObjNum() const;
254 
262  int GetInteger() const;
263 
271  float GetFloat() const;
272 
280  bool GetBoolean() const;
281 
291  Matrix GetMatrix() const;
292 
302  RectF GetRect() const;
303 
313  PDFObject* GetDirectObject() const;
314 
324  DateTime GetDateTime() const;
325 
335  String GetName() const;
336 
353  String GetString() const;
354 
371  WString GetWideString() const;
372 
382  PDFArray* GetArray();
383 
394 
404  PDFStream* GetStream();
405 
406  protected:
407  ~PDFObject() {}
408 
409  private:
410  PDFObject(const PDFObject&);
411  PDFObject &operator = (const PDFObject& object);
412 };
413 
422 class PDFStream FS_FINAL : public PDFObject {
423  public:
431  typedef enum _Filter {
433  e_Unknown = -1,
487  e_Crypt = 10
488  } Filter;
489 
506  static PDFStream* Create(PDFDictionary* dictionary);
507 
515 
523 
533  uint64 GetDataSize(bool is_raw_data);
534 
553  bool GetData(bool is_raw_data, size_t size, void* out_buffer);
554 
563  void SetData(const void* buffer, size_t size);
564 
579  void ImportData(common::file::ReaderCallback* file_read, Filter stream_filter);
580 
597  common::file::ReaderCallback* ExportData(bool is_raw_data);
598 
599  private:
600  PDFStream(const PDFStream&);
601  PDFStream &operator = (const PDFStream& stream);
602 };
603 
614 class PDFArray FS_FINAL : public PDFObject {
615  public:
625  static PDFArray* Create();
626 
638  static PDFArray* CreateFromMatrix(const Matrix& matrix);
639 
651  static PDFArray* CreateFromRect(const RectF& rect);
652 
658  int GetElementCount() const;
659 
669  PDFObject* GetElement(int index) const;
670 
678  void AddElement(PDFObject* element);
679 
687  void AddBoolean(bool boolean_value);
688 
696  void AddDateTime(const DateTime& date_time);
697 
705  void AddFloat(float float_value);
706 
714  void AddInteger(int integer_value);
715 
723  void AddMatrix(const Matrix& matrix);
724 
732  void AddRect(const RectF& rect);
733 
742  void AddName(const char* name);
743 
752  void AddString(const wchar_t* new_string);
753 
768  void InsertAt(int index, PDFObject* element);
769 
780  void SetAt(int index, PDFObject* element);
781 
791  void RemoveAt(int index);
792 
793  private:
794  PDFArray(const PDFArray&);
795  PDFArray &operator = (const PDFArray& array_object);
796 };
797 
809 class PDFDictionary FS_FINAL : public PDFObject {
810  public:
820  static PDFDictionary* Create();
821 
829  bool HasKey(const char* key) const;
830 
839  PDFObject* GetElement(const char* key) const;
840 
850  POSITION MoveNext(POSITION position);
851 
859  String GetKey(POSITION position) const;
860 
869  PDFObject* GetValue(POSITION position) const;
870 
883  void SetAt(const char* key, PDFObject* pdf_object);
884 
899  void SetAtReference(const char* key, PDFObject* pdf_object, PDFDoc document);
900 
909  void SetAtBoolean(const char* key, bool value);
910 
919  void SetAtDateTime(const char* key, const DateTime& value);
920 
929  void SetAtFloat(const char* key, float value);
930 
939  void SetAtInteger(const char* key, int value);
940 
949  void SetAtMatrix(const char* key, const Matrix& value);
950 
959  void SetAtRect(const char* key, const RectF& value);
960 
969  void SetAtName(const char* key, const char* value);
970 
981  void SetAtString(const char* key, const char* value);
982 
993  void SetAtString(const char* key, const wchar_t* value);
994 
1002  void RemoveAt(const char* key);
1003 
1004  private:
1005  PDFDictionary(const PDFDictionary&);
1006  PDFDictionary &operator = (const PDFDictionary& dictionary);
1007 };
1008 
1009 } // namespace objects
1010 } // namespace pdf
1011 } // namespace foxit
1012 #endif // FS_PDFOBJECT_H_
1013 
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:422
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:476
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:482
Filter type: CCITTFaxDecode, which means to decompress data encoded using the CCITT facsimile standar...
Definition: fs_pdfobject.h:467
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:435
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:570
Filter type: JBIG2Decode, which means to decompress data encoded using the JBIG2 standard,...
Definition: fs_pdfobject.h:472
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.
Filter
Enumeration for stream filter type.
Definition: fs_pdfobject.h:431
static PDFArray * CreateFromRect(const RectF &rect)
Create a new array object for a rectangle.
Definition: fs_pdfdoc.h:648
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:450
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:445
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.
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:462
Filter type: DCTDecode, which means to decompress data encoded using a DCT (discrete cosine transform...
Definition: fs_pdfobject.h:477
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:809
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:440
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:455
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:487
Definition: fs_pdfobject.h:614
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:433
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