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 
262  POSITION MoveGraphicsObjectByPosition(POSITION current_position, POSITION position_move_after);
263 
272 
279  int GetGraphicsObjectCount() const;
280 
290  int GetGraphicsObjectIndex(graphics::GraphicsObject* graphics_object) const;
291 
301 
319  bool GenerateContent();
320 };
321 
367 class PDFPage FS_FINAL : public GraphicsObjects {
368  public:
374  typedef enum _ParseFlags {
379  } ParseFlags;
380 
386  typedef enum _CalcMarginMode {
391  } CalcMarginMode;
392 
398  typedef enum _FlattenOptions {
405  } FlattenOptions;
406 
412  typedef enum _BoxType {
432  e_ArtBox = 3,
438  } BoxType;
439 
445  typedef enum _Size {
451  e_SizeA2 = 3,
453  e_SizeA3 = 4,
455  e_SizeA4 = 5,
457  e_SizeA5 = 6,
459  e_SizeA6 = 7,
461  e_SizeB2 = 8,
463  e_SizeB3 = 9,
465  e_SizeB4 = 10,
467  e_SizeB5 = 11,
469  e_SizeB6 = 12
470  } Size;
471 
480  PDFPage(const PDFDoc& document, objects::PDFDictionary* page_dict);
481 
482  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
483  explicit PDFPage(FS_HANDLE handle = NULL);
484 
490  explicit PDFPage(const foxit::pdf::GraphicsObjects& other);
491 
493  virtual ~PDFPage();
494 
500  PDFDoc GetDocument() const;
507 
514  bool IsParsed() const;
541  bool is_reparse = false);
542 
548  int GetIndex() const;
554  float GetHeight() const;
560  float GetWidth() const;
575 
589  Matrix GetDisplayMatrix(int left, int top, int width, int height, common::Rotation rotate);
590 
607 #ifndef __EMSCRIPTEN_RENDER__
608 
613  int GetAnnotCount();
614 
623  annots::Annot GetAnnot(int index);
624 
639  annots::Annot GetAnnotAtPoint(const PointF& position, float tolerance);
640 
659  annots::Annot GetAnnotAtDevicePoint(const PointF& position, float tolerance, const Matrix* matrix = NULL);
660 
710  annots::Annot AddAnnot(annots::Annot::Type type, const RectF& rect);
711 
726  bool RemoveAnnot(const annots::Annot& annot);
727 
743  void MoveAnnotToFirst(const annots::Annot& annot);
744 
760  void MoveAnnotToLast(const annots::Annot& annot);
761 
777  void MoveAnnotToPrev(const annots::Annot& annot);
778 
794  void MoveAnnotToNext(const annots::Annot& annot);
795 
804  void UpdateAnnotList();
805 #endif
806 
814  bool HasTransparency();
815 
849  bool Flatten(bool for_display, uint32 options = PDFPage::e_FlattenAll);
850 #ifndef __EMSCRIPTEN_RENDER__
851 
860  bool FlattenAnnot(annots::Annot annot);
861 
887  bool SetAnnotGroup(const annots::MarkupArray& annot_array, int header_index);
888 
904 
920  foxit::pdf::Signature AddSignature(const foxit::RectF& rect, const foxit::WString& field_name);
921 
943 #endif
944 
953  bool HasWatermark();
954 
962  bool RemoveAllWatermarks();
963 
972  void SetRotation(common::Rotation rotate);
973 
988  void SetSize(float width, float height);
1004 
1014  void SetBox(BoxType box_type, const RectF& box);
1015 
1024  RectF GetBox(BoxType box_type);
1025 
1034  float GetUserUnitSize() const;
1035 
1047  void SetUserUnitSize(float user_unit);
1048 
1062  bool Transform(const Matrix& matrix, bool need_transform_clip_path);
1063 
1074  void SetClipRect(const RectF& clip_rect);
1075 
1087  void SetThumbnail(const common::Bitmap& thumbnail);
1088 
1102  graphics::GraphicsObject* GetGraphicsObjectAtPoint(const PointF& point, float tolerance,
1104 
1118  graphics::GraphicsObjectArray GetGraphicsObjectsAtPoint(const PointF& point, float tolerance,
1120 
1137  graphics::GraphicsObject* GetGraphicsObjectAtDevicePoint(const PointF& point, float tolerance,const Matrix* matrix ,
1139 
1156  graphics::GraphicsObjectArray GetGraphicsObjectsAtDevicePoint(const PointF& point, float tolerance,const Matrix* matrix,
1158 
1173 
1211  bool AddImage(const common::Image& image, int frame_index, const PointF& position, float width, float height,
1212  bool auto_generate_content = true);
1213 
1234  bool AddImageFromFilePath(const char* file_path, const PointF& position, float width, float height,
1235  bool auto_generate_content = true);
1236 
1257  bool AddImageFromFilePath(const wchar_t* file_path, const PointF& position, float width, float height,
1258  bool auto_generate_content = true);
1259 
1267  objects::PDFArray* GetAnnots() const;
1268 
1277 
1287 
1295  objects::PDFStream* GetThumb() const;
1296 
1308  objects::PDFObject* GetInheritedAttribute(const char* attruibute_name) const;
1309 
1315  void ClearRenderCache();
1316 };
1317 } // namespace pdf
1318 } // namespace foxit
1319 #endif // FS_PDFPAGE_H_
1320 
Definition: fs_pdfgraphicsobject.h:241
annots::Annot AddAnnot(annots::Annot::Type type, const RectF &rect)
Add an annotation to PDF page.
Definition: fs_pdfobject.h:407
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:374
virtual ~GraphicsObjects()
Destructor.
Page size: A5.
Definition: fs_pdfpage.h:457
bool GenerateContent()
Generate contents of current graphics objects.
Type
Enumeration for PDF graphics object type.
Definition: fs_pdfgraphicsobject.h:378
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".
void MoveAnnotToPrev(const annots::Annot &annot)
Exchange the indexes of current annotation and its previous annotation.
Crop Box for page boundary.
Definition: fs_pdfpage.h:422
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:972
int GetGraphicsObjectCount() const
Get the count of graphics objects in graphics object list.
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:437
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:1452
void UpdateAnnotList()
Update the annotation list.
Flatten a PDF page without form controls.
Definition: fs_pdfpage.h:404
Calculate margin by detecting paths or images.
Definition: fs_pdfpage.h:390
SignatureType
Enumeration for signature type.
Definition: fs_signature.h:239
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:412
Definition: fs_pdfdoc.h:389
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:455
POSITION GetGraphicsObjectPosition(graphics::GraphicsObject *graphics_object)
Get the position of the specified graphics object.
GraphicsObjects & operator=(const GraphicsObjects &other)
Assign operator.
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:380
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:417
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:427
FlattenOptions
Enumeration for flatten options.
Definition: fs_pdfpage.h:398
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:465
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:451
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:445
Definition: fx_basic.h:3752
foxit::pdf::Signature AddSignature(const foxit::RectF &rect)
Add an ordinary signature to PDF page.
Page size: A6.
Definition: fs_pdfpage.h:459
FX_POSITION POSITION
A value used to denote the position of an element in a collection.
Definition: fs_basictypes.h:206
Page size: B5.
Definition: fs_pdfpage.h:467
Page size: B3.
Definition: fs_pdfpage.h:463
Definition: fs_common.h:281
Art Box for page boundary.
Definition: fs_pdfpage.h:432
Definition: fx_basic.h:1288
bool RemoveAllWatermarks()
Remove all watermarks.
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:196
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:367
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:214
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:376
Definition: fs_annot.h:1791
objects::PDFArray * GetAnnots() const
Get the PDF array of "Annots".
void MoveAnnotToLast(const annots::Annot &annot)
Change specified annotation to be the last one of all annotations.
graphics::GraphicsObjectArray GetGraphicsObjectsAtRectangle(const RectF &rect, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll)
Get all the graphics objects whose rectangles intersect with a specified rectangle,...
Header file for PDF object related definitions and classes.
Definition: fs_basictypes.h:397
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:400
Definition: fs_annot.h:965
annots::Annot GetAnnot(int index)
Get an annotation by index.
Flatten a PDF page without annotations.
Definition: fs_pdfpage.h:402
Definition: fs_pdfobject.h:785
CalcMarginMode
Enumeration for calculating margin mode.
Definition: fs_pdfpage.h:386
void ClearRenderCache()
Clear render cache.
bool operator==(const GraphicsObjects &other) const
Equal operator.
Rotation
Enumeration for rotation.
Definition: fs_common.h:56
void MoveAnnotToNext(const annots::Annot &annot)
Exchange the indexes of current annotation and its next annotation.
Foxit namespace.
Definition: fs_compare.h:27
Definition: fs_pdfobject.h:55
int GetGraphicsObjectIndex(graphics::GraphicsObject *graphics_object) const
Get the index of a specified graphics object in graphics object list.
void SetSize(float width, float height)
Set page width and height.
void MoveAnnotToFirst(const annots::Annot &annot)
Change specified annotation to be the first one of all annotations.
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:461
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 ...
graphics::GraphicsObject * GetGraphicsObjectAtRectangle(const RectF &rect, graphics::GraphicsObject::Type filter=graphics::GraphicsObject::e_TypeAll) const
Get the topmost graphics object whose rectangle interasects with a specified rectangle,...
Page size: A3.
Definition: fs_pdfpage.h:453
#define NULL
The null-pointer value.
Definition: fx_system.h:767
Definition: fs_signature.h:93
Header file for PDF graphics object related definitions and classes.
Definition: fx_coordinates.h:1076
Parsing flag for text-only mode.
Definition: fs_pdfpage.h:378
Page size: letter.
Definition: fs_pdfpage.h:447
Page size: B6.
Definition: fs_pdfpage.h:469
graphics::GraphicsObject * GetGraphicsObject(POSITION position) const
Get the graphics object by position in graphics object list.
POSITION MoveGraphicsObjectByPosition(POSITION current_position, POSITION position_move_after)
Move a graphics object from a position to another position.
Definition: fs_pdfobject.h:597
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:449
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:771
Calculate margin according to bounding box of all contents.
Definition: fs_pdfpage.h:388
bool IsEmpty() const
Check whether current object is empty or not.