Foxit PDF SDK
fs_pdfpage.h
Go to the documentation of this file.
1 
15 #ifndef FS_PDFPAGE_H_
16 #define FS_PDFPAGE_H_
17 
18 #include "common/fs_common.h"
19 #include "common/fs_image.h"
20 #ifndef __EMSCRIPTEN_RENDER__
21 #include "pdf/annots/fs_annot.h"
22 #endif
25 #ifndef __EMSCRIPTEN_RENDER__
26 #include "pdf/fs_signature.h"
27 #endif
28 
33 namespace foxit {
37 namespace pdf {
38 // forward declaration
39 namespace interform {
40 class Control;
41 } // namespace interform
42 class PDFDoc;
43 //class Signature;
44 
63 class GraphicsObjects : public Base {
64  public:
65  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
66  explicit GraphicsObjects(FS_HANDLE handle = NULL);
68  virtual ~GraphicsObjects();
69 
75  GraphicsObjects(const GraphicsObjects& other);
76 
85 
93  bool IsEmpty() const;
94 
102  bool operator==(const GraphicsObjects& other) const;
103 
111  bool operator!=(const GraphicsObjects& other) const;
112 
148 
165 
185 
195 
212  POSITION InsertGraphicsObject(POSITION position_insert_after, graphics::GraphicsObject* graphics_object);
213 
229  bool RemoveGraphicsObject(graphics::GraphicsObject* graphics_object);
230 
247 
265  bool GenerateContent();
266 };
267 
313 class PDFPage FS_FINAL : public GraphicsObjects {
314  public:
320  typedef enum _ParseFlags {
325  } ParseFlags;
326 
332  typedef enum _CalcMarginMode {
337  } CalcMarginMode;
338 
344  typedef enum _FlattenOptions {
351  } FlattenOptions;
352 
358  typedef enum _BoxType {
378  e_ArtBox = 3,
384  } BoxType;
385 
391  typedef enum _Size {
397  e_SizeA2 = 3,
399  e_SizeA3 = 4,
401  e_SizeA4 = 5,
403  e_SizeA5 = 6,
405  e_SizeA6 = 7,
407  e_SizeB2 = 8,
409  e_SizeB3 = 9,
411  e_SizeB4 = 10,
413  e_SizeB5 = 11,
415  e_SizeB6 = 12
416  } Size;
417 
426  PDFPage(const PDFDoc& document, objects::PDFDictionary* page_dict);
427 
428  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
429  explicit PDFPage(FS_HANDLE handle = NULL);
430 
436  explicit PDFPage(const foxit::pdf::GraphicsObjects& other);
437 
439  virtual ~PDFPage();
440 
446  PDFDoc GetDocument() const;
453 
460  bool IsParsed() const;
487  bool is_reparse = false);
488 
494  int GetIndex() const;
500  float GetHeight() const;
506  float GetWidth() const;
521 
535  Matrix GetDisplayMatrix(int left, int top, int width, int height, common::Rotation rotate);
536 
553 #ifndef __EMSCRIPTEN_RENDER__
554 
559  int GetAnnotCount();
560 
569  annots::Annot GetAnnot(int index);
570 
585  annots::Annot GetAnnotAtPoint(const PointF& position, float tolerance);
586 
605  annots::Annot GetAnnotAtDevicePoint(const PointF& position, float tolerance, const Matrix* matrix = NULL);
606 
656  annots::Annot AddAnnot(annots::Annot::Type type, const RectF& rect);
657 
672  bool RemoveAnnot(const annots::Annot& annot);
673 
689  virtual void MoveAnnotToFirst(const annots::Annot& annot);
690 
706  virtual void MoveAnnotToLast(const annots::Annot& annot);
707 
723  virtual void MoveAnnotToPrev(const annots::Annot& annot);
724 
740  virtual void MoveAnnotToNext(const annots::Annot& annot);
741 #endif
742 
750  bool HasTransparency();
751 
785  bool Flatten(bool for_display, uint32 options = PDFPage::e_FlattenAll);
786 #ifndef __EMSCRIPTEN_RENDER__
787 
796  bool FlattenAnnot(annots::Annot annot);
797 
823  bool SetAnnotGroup(const annots::MarkupArray& annot_array, int header_index);
824 
840 
856  foxit::pdf::Signature AddSignature(const foxit::RectF& rect, const foxit::WString& field_name);
857 
879 #endif
880 
889  bool HasWatermark();
890 
898  bool RemoveAllWatermarks();
899 
908  void SetRotation(common::Rotation rotate);
909 
924  void SetSize(float width, float height);
940 
950  void SetBox(BoxType box_type, const RectF& box);
951 
960  RectF GetBox(BoxType box_type);
961 
970  float GetUserUnitSize() const;
971 
983  void SetUserUnitSize(float user_unit);
984 
998  bool Transform(const Matrix& matrix, bool need_transform_clip_path);
999 
1010  void SetClipRect(const RectF& clip_rect);
1011 
1023  void SetThumbnail(const common::Bitmap& thumbnail);
1024 
1038  graphics::GraphicsObject* GetGraphicsObjectAtPoint(const PointF& point, float tolerance,
1040 
1054  graphics::GraphicsObjectArray GetGraphicsObjectsAtPoint(const PointF& point, float tolerance,
1056 
1073  graphics::GraphicsObject* GetGraphicsObjectAtDevicePoint(const PointF& point, float tolerance,const Matrix* matrix ,
1075 
1092  graphics::GraphicsObjectArray GetGraphicsObjectsAtDevicePoint(const PointF& point, float tolerance,const Matrix* matrix,
1118  bool AddImage(const common::Image& image, int frame_index, const PointF& position, float width, float height,
1119  bool auto_generate_content = true);
1120 
1141  bool AddImageFromFilePath(const char* file_path, const PointF& position, float width, float height,
1142  bool auto_generate_content = true);
1143 
1164  bool AddImageFromFilePath(const wchar_t* file_path, const PointF& position, float width, float height,
1165  bool auto_generate_content = true);
1166 
1174  objects::PDFArray* GetAnnots() const;
1175 
1184 
1194 
1202  objects::PDFStream* GetThumb() const;
1203 
1215  objects::PDFObject* GetInheritedAttribute(const char* attruibute_name) const;
1216 
1222  void ClearRenderCache();
1223 };
1224 } // namespace pdf
1225 } // namespace foxit
1226 #endif // FS_PDFPAGE_H_
1227 
Definition: fs_pdfgraphicsobject.h:154
annots::Annot AddAnnot(annots::Annot::Type type, const RectF &rect)
Add an annotation to PDF page.
Definition: fs_pdfobject.h:385
Definition: fs_pdfpage.h:63
virtual ~PDFPage()
Destructor.
bool AddImageFromFilePath(const char *file_path, const PointF &position, float width, float height, bool auto_generate_content=true)
Add an image to current page from file path.
void SetUserUnitSize(float user_unit)
Set the user unit.
Definition: fs_image.h:36
POSITION GetLastGraphicsObjectPosition(graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the position of last graphics object in graphics object list, based on type filter.
ParseFlags
Enumeration for parsing flags used for PDF page.
Definition: fs_pdfpage.h:320
virtual ~GraphicsObjects()
Destructor.
Page size: A5.
Definition: fs_pdfpage.h:403
bool GenerateContent()
Generate contents of current graphics objects.
Type
Enumeration for PDF graphics object type.
Definition: fs_pdfgraphicsobject.h:291
float GetUserUnitSize() const
Get the user unit.
graphics::GraphicsObjectArray GetGraphicsObjectsAtPoint(const PointF &point, float tolerance, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll)
Get all the graphics objects in specified point, with specified type filter.
bool RemoveGraphicsObject(graphics::GraphicsObject *graphics_object)
Remove a graphics object.
common::Bitmap LoadThumbnail()
Load the thumbnail bitmap.
objects::PDFDictionary * GetResources() const
Get the PDF dictionary of "Resources".
Crop Box for page boundary.
Definition: fs_pdfpage.h:368
Definition: fx_coordinates.h:30
bool Flatten(bool for_display, uint32 options=PDFPage::e_FlattenAll)
Flatten current PDF page: annotations or form fields may be made to be a part of the page contents ac...
Type
Enumeration for PDF annotation type.
Definition: fs_annot.h:756
void SetThumbnail(const common::Bitmap &thumbnail)
Set page thumbnail.
float GetHeight() const
Get the page height.
Bleed Box for page boundary.
Definition: fs_pdfpage.h:383
POSITION InsertGraphicsObject(POSITION position_insert_after, graphics::GraphicsObject *graphics_object)
Insert a graphics object after the specified position.
WIDE STRING CLASS.
Definition: fx_string.h:1459
Flatten a PDF page without form controls.
Definition: fs_pdfpage.h:350
Calculate margin by detecting paths or images.
Definition: fs_pdfpage.h:336
SignatureType
Enumeration for signature type.
Definition: fs_signature.h:235
graphics::GraphicsObject * GetGraphicsObjectAtDevicePoint(const PointF &point, float tolerance, const Matrix *matrix, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the topmost graphics object in specified point in device coordinate system, with specified type f...
objects::PDFObject * GetContents() const
Get the PDF object of "Contents".
BoxType
Enumeration for page box type.
Definition: fs_pdfpage.h:358
Definition: fs_pdfdoc.h:347
void SetRotation(common::Rotation rotate)
Set page rotation.
bool HasWatermark()
Check whether the current page has any watermark (not including Foxit PDF SDK trial watermark).
Page size: A4.
Definition: fs_pdfpage.h:401
GraphicsObjects & operator=(const GraphicsObjects &other)
Assign operator.
virtual void MoveAnnotToFirst(const annots::Annot &annot)
Change specified annotation to be the first one of all annotations.
Matrix GetDisplayMatrix(int left, int top, int width, int height, common::Rotation rotate)
Get the display matrix of PDF page, from PDF coordinate system to targeted device coordinate system.
bool operator!=(const GraphicsObjects &other) const
Not equal operator.
bool Transform(const Matrix &matrix, bool need_transform_clip_path)
Transform a PDF page, including annotations and form fields on the page.
Header file for image and bitmap related definitions and classes.
Represents all graphics object types, only used as filter.
Definition: fs_pdfgraphicsobject.h:293
Header file for LTV verifier related definitions and classes.
PDFPage(const PDFDoc &document, objects::PDFDictionary *page_dict)
Constructor, from a PDF dictionary which represents a PDF page and the PDF document which contains th...
Media Box for page boundary.
Definition: fs_pdfpage.h:363
PDFDoc GetDocument() const
Get the PDF document, to which current PDF page belongs.
RectF CalcContentBBox(CalcMarginMode mode)
Calculate the content area of PDF page.
int GetIndex() const
Get page index.
bool IsParsed() const
Check if current page has been parsed or not.
Trim Box for page boundary.
Definition: fs_pdfpage.h:373
FlattenOptions
Enumeration for flatten options.
Definition: fs_pdfpage.h:344
bool RemoveAnnot(const annots::Annot &annot)
Remove an annotation.
annots::Annot GetAnnotAtPoint(const PointF &position, float tolerance)
Get the annotation at a specified position, in PDF coordinate system.
RectF GetBox(BoxType box_type)
Get page box.
Page size: B4.
Definition: fs_pdfpage.h:411
int GetAnnotCount()
Get the count of annotations.
bool HasTransparency()
Check whether current PDF page has transparency or not.
objects::PDFStream * GetThumb() const
Get the PDF stream of "Thumb".
bool SetAnnotGroup(const annots::MarkupArray &annot_array, int header_index)
Group all the input markup annotations together.
Header file for annotation related definitions and classes.
float GetWidth() const
Get the page width.
Page size: A2.
Definition: fs_pdfpage.h:397
annots::Annot GetAnnotAtDevicePoint(const PointF &position, float tolerance, const Matrix *matrix=0)
Get the annotation at a specified position, in device coordination system.
Size
Enumeration for page size type.
Definition: fs_pdfpage.h:391
Definition: fx_basic.h:3736
foxit::pdf::Signature AddSignature(const foxit::RectF &rect)
Add an ordinary signature to PDF page.
Page size: A6.
Definition: fs_pdfpage.h:405
FX_POSITION POSITION
A value used to denote the position of an element in a collection.
Definition: fs_basictypes.h:208
Page size: B5.
Definition: fs_pdfpage.h:413
Page size: B3.
Definition: fs_pdfpage.h:409
Definition: fs_common.h:465
Art Box for page boundary.
Definition: fs_pdfpage.h:378
Definition: fx_basic.h:1287
bool RemoveAllWatermarks()
Remove all watermarks.
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:198
bool FlattenAnnot(annots::Annot annot)
Flatten an annotation: the annotation is made to be a part of the page contents and be removed then.
POSITION GetFirstGraphicsObjectPosition(graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the position of first graphics object in graphics object list, based on type filter.
Definition: fs_pdfpage.h:313
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:216
Header file for common definitions and classes.
common::Rotation GetRotation() const
Get the page rotation.
Parsing flag for normal mode, which means to parse all the contents in a PDF page.
Definition: fs_pdfpage.h:322
Definition: fs_annot.h:1563
objects::PDFArray * GetAnnots() const
Get the PDF array of "Annots".
Header file for PDF object related definitions and classes.
Definition: fs_basictypes.h:375
graphics::GraphicsObjectArray GetGraphicsObjectsAtDevicePoint(const PointF &point, float tolerance, const Matrix *matrix, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll)
Get all the graphics objects in specified point in device coordinate system, with specified type filt...
bool RemoveGraphicsObjectByPosition(POSITION position)
Remove a graphics object by position.
common::Progressive StartParse(uint32 flags=PDFPage::e_ParsePageNormal, common::PauseCallback *pause=0, bool is_reparse=false)
Start to parse current page.
graphics::GraphicsObject * GetGraphicsObjectAtPoint(const PointF &point, float tolerance, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the topmost graphics object in specified point, with specified type filter.
Flatten all contents of a PDF page.
Definition: fs_pdfpage.h:346
Definition: fs_annot.h:749
annots::Annot GetAnnot(int index)
Get an annotation by index.
Flatten a PDF page without annotations.
Definition: fs_pdfpage.h:348
Definition: fs_pdfobject.h:763
CalcMarginMode
Enumeration for calculating margin mode.
Definition: fs_pdfpage.h:332
void ClearRenderCache()
Clear render cache.
bool operator==(const GraphicsObjects &other) const
Equal operator.
Rotation
Enumeration for rotation.
Definition: fs_common.h:275
Foxit namespace.
Definition: fs_compare.h:27
Definition: fs_pdfobject.h:55
void SetSize(float width, float height)
Set page width and height.
virtual void MoveAnnotToPrev(const annots::Annot &annot)
Exchange the indexes of current annotation and its previous annotation.
POSITION GetPrevGraphicsObjectPosition(POSITION position, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the position of previous graphics object in graphics object list, based on type filter and specif...
Page size: B2.
Definition: fs_pdfpage.h:407
virtual void MoveAnnotToLast(const annots::Annot &annot)
Change specified annotation to be the last one of all annotations.
objects::PDFObject * GetInheritedAttribute(const char *attruibute_name) const
Get the PDF object for specified attribute which may be inherited from the ancestor node in the page ...
Page size: A3.
Definition: fs_pdfpage.h:399
#define NULL
The null-pointer value.
Definition: fx_system.h:771
Definition: fs_signature.h:93
Header file for PDF graphics object related definitions and classes.
Definition: fx_coordinates.h:1056
Parsing flag for text-only mode.
Definition: fs_pdfpage.h:324
Page size: letter.
Definition: fs_pdfpage.h:393
Page size: B6.
Definition: fs_pdfpage.h:415
virtual void MoveAnnotToNext(const annots::Annot &annot)
Exchange the indexes of current annotation and its next annotation.
graphics::GraphicsObject * GetGraphicsObject(POSITION position) const
Get the graphics object by position in graphics object list.
Definition: fs_pdfobject.h:575
void SetClipRect(const RectF &clip_rect)
Set clip rectangle for all graphics objects on current PDF page.
void SetBox(BoxType box_type, const RectF &box)
Set page box.
Definition: fs_image.h:430
POSITION GetNextGraphicsObjectPosition(POSITION position, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the position of next graphics object in graphics object list, based on type filter and specified ...
objects::PDFDictionary * GetDict() const
Get the page dictionary.
Page size: legal.
Definition: fs_pdfpage.h:395
bool AddImage(const common::Image &image, int frame_index, const PointF &position, float width, float height, bool auto_generate_content=true)
Add an image to current page.
Definition: fx_coordinates.h:766
Calculate margin according to bounding box of all contents.
Definition: fs_pdfpage.h:334
bool IsEmpty() const
Check whether current object is empty or not.