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 
96  static PDFObject* CreateFromBoolean(bool boolean_value);
97 
108  static PDFObject* CreateFromFloat(float float_value);
109 
120  static PDFObject* CreateFromInteger(int integer_value);
121 
132  static PDFObject* CreateFromString(const wchar_t* string_value);
133 
144  static PDFObject* CreateFromName(const char* name);
145 
161  static PDFObject* CreateFromDateTime(const DateTime& date_time);
162 
181  static PDFObject* CreateReference(PDFDoc document, uint32 object_number);
182 
194  void Release();
195 
204  PDFObject* CloneObject() const;
205 
217  PDFObject* DeepCloneObject() const;
218 
227  bool IsIdentical(PDFObject* pdf_obj) const;
228 
235  Type GetType() const;
236 
247  uint32 GetObjNum() const;
248 
256  int GetInteger() const;
257 
265  float GetFloat() const;
266 
274  bool GetBoolean() const;
275 
285  Matrix GetMatrix() const;
286 
296  RectF GetRect() const;
297 
307  PDFObject* GetDirectObject() const;
308 
318  DateTime GetDateTime() const;
319 
329  String GetName() const;
330 
347  String GetString() const;
348 
365  WString GetWideString() const;
366 
376  PDFArray* GetArray();
377 
388 
398  PDFStream* GetStream();
399 
400  protected:
401  ~PDFObject() {}
402 
403  private:
404  PDFObject(const PDFObject&);
405  PDFObject &operator = (const PDFObject& object);
406 };
407 
416 class PDFStream FS_FINAL : public PDFObject {
417  public:
425  typedef enum _Filter {
427  e_Unknown = -1,
481  e_Crypt = 10
482  } Filter;
483 
500  static PDFStream* Create(PDFDictionary* dictionary);
501 
509 
517 
527  uint64 GetDataSize(bool is_raw_data);
528 
547  bool GetData(bool is_raw_data, size_t size, void* out_buffer);
548 
557  void SetData(const void* buffer, size_t size);
558 
573  void ImportData(common::file::ReaderCallback* file_read, Filter stream_filter);
574 
591  common::file::ReaderCallback* ExportData(bool is_raw_data);
592 
593  private:
594  PDFStream(const PDFStream&);
595  PDFStream &operator = (const PDFStream& stream);
596 };
597 
608 class PDFArray FS_FINAL : public PDFObject {
609  public:
618  static PDFArray* Create();
619 
630  static PDFArray* CreateFromMatrix(const Matrix& matrix);
631 
642  static PDFArray* CreateFromRect(const RectF& rect);
643 
649  int GetElementCount() const;
650 
660  PDFObject* GetElement(int index) const;
661 
669  void AddElement(PDFObject* element);
670 
678  void AddBoolean(bool boolean_value);
679 
687  void AddDateTime(const DateTime& date_time);
688 
696  void AddFloat(float float_value);
697 
705  void AddInteger(int integer_value);
706 
714  void AddMatrix(const Matrix& matrix);
715 
723  void AddRect(const RectF& rect);
724 
733  void AddName(const char* name);
734 
743  void AddString(const wchar_t* new_string);
744 
759  void InsertAt(int index, PDFObject* element);
760 
771  void SetAt(int index, PDFObject* element);
772 
782  void RemoveAt(int index);
783 
784  private:
785  PDFArray(const PDFArray&);
786  PDFArray &operator = (const PDFArray& array_object);
787 };
788 
800 class PDFDictionary FS_FINAL : public PDFObject {
801  public:
810  static PDFDictionary* Create();
811 
819  bool HasKey(const char* key) const;
820 
829  PDFObject* GetElement(const char* key) const;
830 
840  POSITION MoveNext(POSITION position);
841 
849  String GetKey(POSITION position) const;
850 
859  PDFObject* GetValue(POSITION position) const;
860 
873  void SetAt(const char* key, PDFObject* pdf_object);
874 
889  void SetAtReference(const char* key, PDFObject* pdf_object, PDFDoc document);
890 
899  void SetAtBoolean(const char* key, bool value);
900 
909  void SetAtDateTime(const char* key, const DateTime& value);
910 
919  void SetAtFloat(const char* key, float value);
920 
929  void SetAtInteger(const char* key, int value);
930 
939  void SetAtMatrix(const char* key, const Matrix& value);
940 
949  void SetAtRect(const char* key, const RectF& value);
950 
959  void SetAtName(const char* key, const char* value);
960 
971  void SetAtString(const char* key, const char* value);
972 
983  void SetAtString(const char* key, const wchar_t* value);
984 
992  void RemoveAt(const char* key);
993 
994  private:
996  PDFDictionary &operator = (const PDFDictionary& dictionary);
997 };
998 
999 } // namespace objects
1000 } // namespace pdf
1001 } // namespace foxit
1002 #endif // FS_PDFOBJECT_H_
1003 
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:416
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:217
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:440
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:476
Filter type: CCITTFaxDecode, which means to decompress data encoded using the CCITT facsimile standar...
Definition: fs_pdfobject.h:461
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:429
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:466
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: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:425
static PDFArray * CreateFromRect(const RectF &rect)
Create a new array object for a rectangle.
Definition: fs_pdfdoc.h:508
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:444
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:439
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:456
Filter type: DCTDecode, which means to decompress data encoded using a DCT (discrete cosine transform...
Definition: fs_pdfobject.h:471
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:800
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_taggedpdf.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:434
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:449
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:481
Definition: fs_pdfobject.h:608
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:427
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