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 
foxit::pdf::objects::PDFDictionary::MoveNext
POSITION MoveNext(POSITION position)
Move to the position of first or the next entry.
foxit::pdf::objects::PDFObject::e_Boolean
PDF boolean object.
Definition: fs_pdfobject.h:66
foxit::pdf::objects::PDFObject::e_Array
PDF array object.
Definition: fs_pdfobject.h:74
foxit::pdf::objects::PDFObject::IsIdentical
bool IsIdentical(PDFObject *pdf_obj) const
Check if input PDF object is identical with current PDF object.
foxit::pdf::objects::PDFObject::e_Null
PDF null object.
Definition: fs_pdfobject.h:80
foxit::pdf::objects::PDFObject::e_String
PDF string object.
Definition: fs_pdfobject.h:70
foxit::pdf::objects::PDFArray
Definition: fs_pdfobject.h:614
foxit::pdf::objects::PDFStream::GetStreamFilter
Filter GetStreamFilter()
Get the type of stream filter which indicate how the stream data must be decoded before the data is u...
foxit::pdf::objects::PDFArray::AddInteger
void AddInteger(int integer_value)
Add an integer value to the end of current PDF array object.
foxit::pdf::objects::PDFDictionary::SetAtMatrix
void SetAtMatrix(const char *key, const Matrix &value)
Set a matrix object as value element to an entry specified by key.
foxit::pdf::objects::PDFStream::e_ASCIIHexDecode
Filter type: ASCIIHexDecode, which means to decode data encoded in an ASCII hexadecimal representatio...
Definition: fs_pdfobject.h:440
foxit::pdf::objects::PDFDictionary::Create
static PDFDictionary * Create()
Create a new dictionary object.
foxit::DateTime
Definition: fs_basictypes.h:460
foxit::pdf::objects::PDFArray::AddElement
void AddElement(PDFObject *element)
Add a PDF object to the end of current PDF array object.
foxit::pdf::objects::PDFStream::e_ASCII85Decode
Filter type: ASCII85Decode, which means to decode data encoded in an ASCII base-85 representation,...
Definition: fs_pdfobject.h:445
foxit::pdf::objects::PDFObject::CreateFromFloat
static PDFObject * CreateFromFloat(float float_value)
Create a PDF object from a float number.
foxit::Object
CFX_Object Object
Object type.
Definition: fs_basictypes.h:221
foxit::pdf::objects::PDFObject::e_InvalidType
Invalid PDF object type.
Definition: fs_pdfobject.h:64
foxit::POSITION
FX_POSITION POSITION
A value used to denote the position of an element in a collection.
Definition: fs_basictypes.h:206
foxit::pdf::objects::PDFArray::CreateFromRect
static PDFArray * CreateFromRect(const RectF &rect)
Create a new array object for a rectangle.
foxit::pdf::objects::PDFObject::GetDirectObject
PDFObject * GetDirectObject() const
Get the direct object of current PDF object.
foxit::pdf::objects::PDFDictionary::SetAtName
void SetAtName(const char *key, const char *value)
Set a string (as PDF name object) as value element to an entry specified by key.
fs_common.h
Header file for common definitions and classes.
foxit::pdf::objects::PDFObject::GetRect
RectF GetRect() const
Get the rectangle value of current PDF object.
foxit::pdf::objects::PDFStream::Filter
Filter
Enumeration for stream filter type.
Definition: fs_pdfobject.h:431
foxit::pdf::objects::PDFObject::Type
Type
Enumeration for PDF object type.
Definition: fs_pdfobject.h:62
foxit::pdf::objects::PDFObject::e_Number
PDF number object.
Definition: fs_pdfobject.h:68
foxit::pdf::objects::PDFArray::AddFloat
void AddFloat(float float_value)
Add a float value to the end of current PDF array object.
foxit::pdf::objects::PDFDictionary::SetAtReference
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...
foxit::pdf::objects::PDFDictionary::GetKey
String GetKey(POSITION position) const
Get the key of an entry specified by position.
IFX_FileRead
File reading interface.
Definition: fx_stream.h:570
foxit::pdf::objects::PDFDictionary::HasKey
bool HasKey(const char *key) const
Check whether there is an entry with specified key in current dictionary or not.
fs_file.h
Header file for file operation related definitions and functions.
foxit::pdf::objects::PDFDictionary::GetElement
PDFObject * GetElement(const char *key) const
Get the value element of an entry with specified key.
foxit::pdf::objects::PDFArray::AddName
void AddName(const char *name)
Add a string as PDF name object to the end of current PDF array object.
foxit::pdf::objects::PDFArray::AddDateTime
void AddDateTime(const DateTime &date_time)
Add a date time to the end of current PDF array object.
foxit::pdf::objects::PDFStream::e_DCTDecode
Filter type: DCTDecode, which means to decompress data encoded using a DCT (discrete cosine transform...
Definition: fs_pdfobject.h:477
foxit::pdf::objects::PDFObject
Definition: fs_pdfobject.h:55
foxit::pdf::objects::PDFObject::CreateFromDateTime
static PDFObject * CreateFromDateTime(const DateTime &date_time)
Create a PDF object from date time.
foxit::pdf::objects::PDFDictionary::SetAtRect
void SetAtRect(const char *key, const RectF &value)
Set a rectangle object as value element to an entry specified by key.
foxit::pdf::objects::PDFStream::e_LZWDecode
Filter type: LZWDecode, which means to decompress data encoded using the LZW (Lempel-Ziv-Welch) adapt...
Definition: fs_pdfobject.h:450
foxit::pdf::objects::PDFDictionary::GetValue
PDFObject * GetValue(POSITION position) const
Get the value element of an entry specified by position.
foxit::pdf::objects::PDFStream::GetDataSize
uint64 GetDataSize(bool is_raw_data)
Get the size of stream data, in bytes.
foxit::pdf::objects::PDFObject::GetDict
PDFDictionary * GetDict()
Get the PDF dictionary object of current PDF object.
foxit::pdf::objects::PDFStream::SetData
void SetData(const void *buffer, size_t size)
Set stream data.
foxit::pdf::objects::PDFArray::AddBoolean
void AddBoolean(bool boolean_value)
Add a boolean value to the end of current PDF array object.
foxit::pdf::objects::PDFStream::Create
static PDFStream * Create(PDFDictionary *dictionary)
Create a new stream object based on a dictionary.
foxit::pdf::objects::PDFArray::Create
static PDFArray * Create()
Create a new array object.
foxit::pdf::objects::PDFObject::GetBoolean
bool GetBoolean() const
Get the boolean value of current PDF object.
foxit::pdf::objects::PDFObject::CreateReference
static PDFObject * CreateReference(PDFDoc document, uint32 object_number)
Create a reference for an indirect object.
CFX_ByteString
BYTE STRING CLASS.
Definition: fx_string.h:317
foxit::pdf::objects::PDFDictionary::SetAtString
void SetAtString(const char *key, const char *value)
Set a string as value element to an entry specified by key.
foxit::pdf::objects::PDFObject::e_Dictionary
PDF dictionary object.
Definition: fs_pdfobject.h:76
foxit::pdf::objects::PDFDictionary::SetAtBoolean
void SetAtBoolean(const char *key, bool value)
Set boolean element an entry specified by key.
foxit::pdf::objects::PDFArray::RemoveAt
void RemoveAt(int index)
Remove an element in a specified position (by index) from current PDF array object.
foxit::pdf::objects::PDFObject::GetDateTime
DateTime GetDateTime() const
Get the date time value of current PDF object.
foxit::pdf::objects::PDFObject::e_Reference
PDF reference object.
Definition: fs_pdfobject.h:82
foxit::pdf::objects::PDFStream::e_FlateDecode
Filter type: FlateDecode, which means to decompress data encoded using the zlib/deflate compression m...
Definition: fs_pdfobject.h:455
foxit::pdf::objects::PDFObject::CloneObject
PDFObject * CloneObject() const
Clone current PDF object and get the cloned PDF object.
foxit::pdf::objects::PDFStream::ExportData
common::file::ReaderCallback * ExportData(bool is_raw_data)
Export stream data.
foxit::pdf::objects::PDFObject::Release
void Release()
Release a newly created PDF object or a clone PDF object, which is not related to PDF document or oth...
foxit::pdf::objects::PDFObject::GetName
String GetName() const
Get the name value of current PDF object.
foxit::pdf::objects::PDFArray::AddRect
void AddRect(const RectF &rect)
Add a rectangle to the end of current PDF array object.
foxit
Foxit namespace.
Definition: fs_taggedpdf.h:27
foxit::pdf::objects::PDFObject::CreateFromInteger
static PDFObject * CreateFromInteger(int integer_value)
Create a PDF object from a integer number.
foxit::pdf::objects::PDFObject::GetWideString
WString GetWideString() const
Get the wide string value of current PDF object.
foxit::pdf::objects::PDFObject::GetString
String GetString() const
Get the string value of current PDF object.
foxit::pdf::objects::PDFStream::e_JPXDecode
Filter type: JPXDecode, which means to decompress data encoded using the wavelet-based JPEG2000 stand...
Definition: fs_pdfobject.h:482
foxit::pdf::objects::PDFDictionary
Definition: fs_pdfobject.h:809
foxit::pdf::objects::PDFStream::GetDictionary
PDFDictionary * GetDictionary()
Get the PDF dictionary object associated to current PDF stream object.
foxit::pdf::objects::PDFObject::CreateFromBoolean
static PDFObject * CreateFromBoolean(bool boolean_value)
Create a PDF object from a boolean value.
foxit::pdf::objects::PDFDictionary::SetAtFloat
void SetAtFloat(const char *key, float value)
Set a float element to an entry specified by key.
foxit::pdf::objects::PDFObject::GetArray
PDFArray * GetArray()
Get the PDF array object of current PDF object.
foxit::pdf::objects::PDFObject::GetInteger
int GetInteger() const
Get the integer value of current PDF object.
foxit::pdf::objects::PDFArray::GetElementCount
int GetElementCount() const
Get the count of elements.
foxit::pdf::objects::PDFObject::CreateFromName
static PDFObject * CreateFromName(const char *name)
Create a PDF object from a string which represents a name.
foxit::pdf::objects::PDFStream::e_JBIG2Decode
Filter type: JBIG2Decode, which means to decompress data encoded using the JBIG2 standard,...
Definition: fs_pdfobject.h:472
foxit::pdf::objects::PDFStream::e_Unknown
Unknown filter type.
Definition: fs_pdfobject.h:433
foxit::pdf::objects::PDFArray::AddString
void AddString(const wchar_t *new_string)
Add a string as PDF string object to the end of current PDF array object.
foxit::pdf::objects::PDFObject::e_Name
PDF name object.
Definition: fs_pdfobject.h:72
foxit::pdf::objects::PDFArray::GetElement
PDFObject * GetElement(int index) const
Get a specified element by index.
foxit::pdf::objects::PDFObject::GetMatrix
Matrix GetMatrix() const
Get the matrix value of current PDF object.
CFX_FloatRect
Definition: fx_coordinates.h:771
foxit::pdf::objects::PDFObject::GetStream
PDFStream * GetStream()
Get the PDF stream object of current PDF object.
foxit::pdf::objects::PDFStream::e_NoneDecode
No need to decode the stream data.
Definition: fs_pdfobject.h:435
foxit::pdf::objects::PDFStream::e_CCITTFaxDecode
Filter type: CCITTFaxDecode, which means to decompress data encoded using the CCITT facsimile standar...
Definition: fs_pdfobject.h:467
foxit::pdf::objects::PDFStream::GetData
bool GetData(bool is_raw_data, size_t size, void *out_buffer)
Get stream data.
foxit::pdf::PDFDoc
Definition: fs_pdfdoc.h:610
foxit::pdf::objects::PDFObject::CreateFromString
static PDFObject * CreateFromString(const wchar_t *string_value)
Create a PDF object from string.
foxit::pdf::objects::PDFStream::ImportData
void ImportData(common::file::ReaderCallback *file_read, Filter stream_filter)
Import stream data.
foxit::pdf::objects::PDFArray::SetAt
void SetAt(int index, PDFObject *element)
Set a new PDF object at a specified position in current PDF array object.
foxit::pdf::objects::PDFObject::DeepCloneObject
PDFObject * DeepCloneObject() const
Clone current PDF object and get the cloned PDF object.
foxit::pdf::objects::PDFArray::InsertAt
void InsertAt(int index, PDFObject *element)
Insert a PDF object to a specified position in current PDF array object.
foxit::pdf::objects::PDFObject::e_Stream
PDF stream object.
Definition: fs_pdfobject.h:78
CFX_Matrix
Definition: fx_coordinates.h:1076
foxit::pdf::objects::PDFStream::e_RunLengthDecode
Filter type: RunLengthDecode, which means to decompress data encoded using a byte-oriented run-length...
Definition: fs_pdfobject.h:462
foxit::pdf::objects::PDFArray::CreateFromMatrix
static PDFArray * CreateFromMatrix(const Matrix &matrix)
Create a new array object for a matrix.
foxit::pdf::objects::PDFStream
Definition: fs_pdfobject.h:422
foxit::pdf::objects::PDFDictionary::SetAtDateTime
void SetAtDateTime(const char *key, const DateTime &value)
Set a Datetime object as value element to an entry specified by key.
foxit::pdf::objects::PDFDictionary::RemoveAt
void RemoveAt(const char *key)
Remove an entry specified by key.
foxit::pdf::objects::PDFArray::AddMatrix
void AddMatrix(const Matrix &matrix)
Add a matrix to the end of current PDF array object.
CFX_WideString
WIDE STRING CLASS.
Definition: fx_string.h:1452
foxit::pdf::objects::PDFDictionary::SetAt
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...
foxit::pdf::objects::PDFObject::GetObjNum
uint32 GetObjNum() const
Get the indirect object number of current PDF object.
foxit::pdf::objects::PDFDictionary::SetAtInteger
void SetAtInteger(const char *key, int value)
Set a integer element to an entry specified by key.
foxit::uint32
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:196
foxit::uint64
FX_UINT64 uint64
Unsigned 64-bit integer.
Definition: fs_basictypes.h:192
foxit::pdf::objects::PDFStream::e_Crypt
Filter type: Crypt, which means to decrypt data encrypted by a security handler, reproducing the orig...
Definition: fs_pdfobject.h:487
foxit::pdf::objects::PDFObject::GetType
Type GetType() const
Get the type of current PDF object.
foxit::pdf::objects::PDFObject::GetFloat
float GetFloat() const
Get the float value of current PDF object.