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 #include "pdf/annots/fs_annot.h"
23 
29 namespace foxit {
33 namespace pdf {
34 // forward declaration
35 namespace interform {
36 class Control;
37 } // namespace interform
38 class PDFDoc;
39 class Signature;
40 
59 class GraphicsObjects : public Base {
60  public:
61  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
62  explicit GraphicsObjects(FS_HANDLE handle = NULL);
64  virtual ~GraphicsObjects();
65 
71  GraphicsObjects(const GraphicsObjects& other);
72 
81 
89  bool IsEmpty() const;
90 
98  bool operator==(const GraphicsObjects& other) const;
99 
107  bool operator!=(const GraphicsObjects& other) const;
108 
144 
161 
181 
191 
208  POSITION InsertGraphicsObject(POSITION position_insert_after, graphics::GraphicsObject* graphics_object);
209 
225  bool RemoveGraphicsObject(graphics::GraphicsObject* graphics_object);
226 
243 
259  bool GenerateContent();
260 };
261 
306 class PDFPage FS_FINAL : public GraphicsObjects {
307  public:
313  typedef enum _ParseFlags {
318  } ParseFlags;
319 
325  typedef enum _CalcMarginMode {
330  } CalcMarginMode;
331 
337  typedef enum _FlattenOptions {
344  } FlattenOptions;
345 
351  typedef enum _BoxType {
375  e_ArtBox = 3,
382  } BoxType;
383 
389  typedef enum _Size {
395  e_SizeA2 = 3,
397  e_SizeA3 = 4,
399  e_SizeA4 = 5,
401  e_SizeA5 = 6,
403  e_SizeA6 = 7,
405  e_SizeB2 = 8,
407  e_SizeB3 = 9,
409  e_SizeB4 = 10,
411  e_SizeB5 = 11,
413  e_SizeB6 = 12
414  } Size;
415 
424  PDFPage(const PDFDoc& document, objects::PDFDictionary* page_dict);
425 
426  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
427  explicit PDFPage(FS_HANDLE handle = NULL);
428 
434  explicit PDFPage(const foxit::pdf::GraphicsObjects& other);
435 
437  virtual ~PDFPage();
438 
444  PDFDoc GetDocument() const;
451 
458  bool IsParsed() const;
485  bool is_reparse = false);
486 
492  int GetIndex() const;
498  float GetHeight() const;
504  float GetWidth() const;
519 
533  Matrix GetDisplayMatrix(int left, int top, int width, int height, common::Rotation rotate);
534 
551 
557  int GetAnnotCount();
558 
567  annots::Annot GetAnnot(int index);
568 
583  annots::Annot GetAnnotAtPoint(const PointF& position, float tolerance);
584 
603  annots::Annot GetAnnotAtDevicePoint(const PointF& position, float tolerance, const Matrix* matrix = NULL);
604 
654  annots::Annot AddAnnot(annots::Annot::Type type, const RectF& rect);
655 
670  bool RemoveAnnot(const annots::Annot& annot);
671 
687  virtual void MoveAnnotToFirst(const annots::Annot& annot);
688 
704  virtual void MoveAnnotToLast(const annots::Annot& annot);
705 
721  virtual void MoveAnnotToPrev(const annots::Annot& annot);
722 
738  virtual void MoveAnnotToNext(const annots::Annot& annot);
739 
748  bool HasTransparency();
749 
783  bool Flatten(bool for_display, uint32 options = PDFPage::e_FlattenAll);
784 
810  bool SetAnnotGroup(const annots::MarkupArray& annot_array, int header_index);
811 
826  Signature AddSignature(const RectF& rect);
827 
836  bool HasWatermark();
837 
845  bool RemoveAllWatermarks();
846 
855  void SetRotation(common::Rotation rotate);
856 
871  void SetSize(float width, float height);
887 
897  void SetBox(BoxType box_type, const RectF& box);
898 
907  RectF GetBox(BoxType box_type);
908 
917  float GetUserUnitSize() const;
918 
930  void SetUserUnitSize(float user_unit);
931 
945  bool Transform(const Matrix& matrix, bool need_transform_clip_path);
946 
957  void SetClipRect(const RectF& clip_rect);
958 
970  void SetThumbnail(const common::Bitmap& thumbnail);
971 
985  graphics::GraphicsObject* GetGraphicsObjectAtPoint(const PointF& point, float tolerance,
987 
1001  graphics::GraphicsObjectArray GetGraphicsObjectsAtPoint(const PointF& point, float tolerance,
1003 
1028  bool AddImage(const common::Image& image, int frame_index, const PointF& position, float width, float height,
1029  bool auto_generate_content = true);
1030 
1051  bool AddImageFromFilePath(const char* file_path, const PointF& position, float width, float height,
1052  bool auto_generate_content = true);
1053 
1074  bool AddImageFromFilePath(const wchar_t* file_path, const PointF& position, float width, float height,
1075  bool auto_generate_content = true);
1076 
1084  objects::PDFArray* GetAnnots() const;
1085 
1094 
1104 
1112  objects::PDFStream* GetThumb() const;
1113 
1125  objects::PDFObject* GetInheritedAttribute(const char* attruibute_name) const;
1126 };
1127 } // namespace pdf
1128 } // namespace foxit
1129 #endif // FS_PDFPAGE_H_
1130 
Definition: fs_pdfgraphicsobject.h:153
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:59
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:313
virtual ~GraphicsObjects()
Destructor.
Page size: A5.
Definition: fs_pdfpage.h:401
bool GenerateContent()
Generate contents of current graphics objects.
Type
Enumeration for PDF graphics object type.
Definition: fs_pdfgraphicsobject.h:298
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:363
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:763
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:381
POSITION InsertGraphicsObject(POSITION position_insert_after, graphics::GraphicsObject *graphics_object)
Insert a graphics object after the specified position.
Flatten a PDF page without form controls.
Definition: fs_pdfpage.h:343
Calculate margin by detecting paths or images.
Definition: fs_pdfpage.h:329
objects::PDFObject * GetContents() const
Get the PDF object of "Contents".
BoxType
Enumeration for page box type.
Definition: fs_pdfpage.h:351
Definition: fs_pdfdoc.h:338
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:399
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:300
Signature AddSignature(const RectF &rect)
Add a signature to PDF page.
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:357
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:369
FlattenOptions
Enumeration for flatten options.
Definition: fs_pdfpage.h:337
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:409
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.
CFX_PointF PointF
Point information, in float.
Definition: fs_basictypes.h:353
Header file for annotation related definitions and classes.
float GetWidth() const
Get the page width.
Page size: A2.
Definition: fs_pdfpage.h:395
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:389
Definition: fx_basic.h:3566
Page size: A6.
Definition: fs_pdfpage.h:403
FX_POSITION POSITION
A value used to denote the position of an element in a collection.
Definition: fs_basictypes.h:205
Page size: B5.
Definition: fs_pdfpage.h:411
Page size: B3.
Definition: fs_pdfpage.h:407
Definition: fs_common.h:382
Art Box for page boundary.
Definition: fs_pdfpage.h:375
Definition: fx_basic.h:1246
bool RemoveAllWatermarks()
Remove all watermarks.
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:195
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:306
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:213
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:315
Definition: fs_annot.h:1578
objects::PDFArray * GetAnnots() const
Get the PDF array of "Annots".
Header file for PDF object related definitions and classes.
Definition: fs_basictypes.h:333
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:339
Definition: fs_annot.h:756
annots::Annot GetAnnot(int index)
Get an annotation by index.
Flatten a PDF page without annotations.
Definition: fs_pdfpage.h:341
Definition: fs_pdfobject.h:762
CalcMarginMode
Enumeration for calculating margin mode.
Definition: fs_pdfpage.h:325
bool operator==(const GraphicsObjects &other) const
Equal operator.
Rotation
Enumeration for rotation.
Definition: fs_common.h:219
Foxit namespace.
Definition: fs_connectedpdf.h:26
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:405
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:397
#define NULL
The null-pointer value.
Definition: fx_system.h:767
Definition: fs_signature.h:83
Header file for PDF graphics object related definitions and classes.
Definition: fx_coordinates.h:914
Parsing flag for text-only mode.
Definition: fs_pdfpage.h:317
Page size: letter.
Definition: fs_pdfpage.h:391
Page size: B6.
Definition: fs_pdfpage.h:413
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:574
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:426
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:393
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:627
Calculate margin according to bounding box of all contents.
Definition: fs_pdfpage.h:327
bool IsEmpty() const
Check whether current object is empty or not.

Foxit Software Corporation Logo
@2018 Foxit Software Incorporated. All rights reserved.