Loading...
Searching...
No Matches
PDFView.h
Go to the documentation of this file.
1//---------------------------------------------------------------------------------------
2// Copyright (c) 2001-2025 by Apryse Software Inc. All Rights Reserved.
3// Consult legal.txt regarding legal and license information.
4//---------------------------------------------------------------------------------------
5#ifndef PDFTRON_H_CPPPDFPDFView
6#define PDFTRON_H_CPPPDFPDFView
7
8#include <Common/BasicTypes.h>
9#include <PDF/PDFDoc.h>
11#include <PDF/PDFRasterizer.h>
12#include <PDF/Highlights.h>
13#include <PDF/LinkInfo.h>
14#include <PDF/OCG/Context.h>
15#include <C/PDF/TRN_PDFView.h>
16#include <PDF/Selection.h>
18#include <SDF/ObjSet.h>
20#include <PDF/ActionParameter.h>
21#ifdef SWIG
22#include <PDF/Callback.h>
23#endif
24
25namespace pdftron {
26 namespace PDF {
27
73{
74public:
75
82
88 void SetDoc(PDFDoc& doc);
89
97
99
103 void CloseDoc();
104
109
114 void DocLock(bool cancel_threads);
115
119 void DocUnlock();
120
126 bool DocTryLock( int milliseconds = 0 );
127
140
145
151 bool DocTryLockRead( int milliseconds = 0 );
152
157 {
158 e_single_page = 1, //<<< Display one page at a time.
159 e_single_continuous, //<<< Display the pages in one column.
160 e_facing, //<<< Display the pages two at a time, with odd-numbered pages on the left.
161 e_facing_continuous, //<<< Display the pages in two columns, with odd-numbered pages on the left.
162 e_facing_cover, //<<< Display the pages two at a time, with odd-numbered pages on the right.
163 e_facing_continuous_cover //<<< Display the pages in two columns, with odd-numbered pages on the right.
164 };
165
173
178
189
190
205
214
227 void SetColorPostProcessColors(unsigned int white_color, unsigned int black_color);
228
233
237 int GetCurrentPage() const;
238
242 int GetPageCount() const;
243
250
257
264
271
277 bool SetCurrentPage(int page_num);
278
286 bool ShowRect( int page_num, const Rect& rect );
287
293 std::vector<int> GetVisiblePages() const ;
294
300 double GetZoom() const;
301
309 bool SetZoom(double zoom);
310
338 bool SetZoom(int x, int y, double zoom);
339
356 bool SmartZoom(int x, int y);
361
366
371
377 int GetPageNumberFromScreenPt(double x, double y) const;
378
383
384#ifndef SWIG
385 void ConvScreenPtToCanvasPt(double& x, double& y) const;
386#endif
387
392
393#ifndef SWIG
394 void ConvCanvasPtToScreenPt(double& x, double& y) const;
395#endif
396
404 Point ConvCanvasPtToPagePt(const Point& pt, int page_num = -1) const;
405
406#ifndef SWIG
407 void ConvCanvasPtToPagePt(double& x, double& y, int page_num = -1) const;
408#endif
409
417 Point ConvPagePtToCanvasPt(const Point& pt, int page_num = -1) const;
418
419#ifndef SWIG
420 void ConvPagePtToCanvasPt(double& x, double& y, int page_num = -1) const;
421#endif
422
430 Point ConvScreenPtToPagePt(const Point& pt, int page_num = -1) const;
431
432#ifndef SWIG
433 void ConvScreenPtToPagePt(double& x, double& y, int page_num = -1) const;
434#endif
435
445 Point ConvPagePtToScreenPt(const Point& pt, int page_num = -1) const;
446
447#ifndef SWIG
448 void ConvPagePtToScreenPt(double& x, double& y, int page_num = -1) const;
449#endif
450
455 Point SnapToNearestInDoc(const Point& screen_pt);
456
463 void SetSnappingMode(UInt32 mode_flags);
464
480 Common::Matrix2D GetDeviceTransform(int page_num = -1) const;
481
489#ifdef SWIG
490 void SetErrorReportProc(Callback* instance);
491#else
493#endif
494
503 typedef void (*CurrentPageProc) (int current_page, int num_pages, void* data);
504
513#ifdef SWIG
514 void SetCurrentPageProc(Callback* instance);
515#else
516 void SetCurrentPageProc(CurrentPageProc curr_pagenum_proc, void* data);
517#endif
518
528 typedef void(*JavaScriptEventProc) (const char* event_type, const char* json, void* data);
529
537#ifdef SWIG
538 void SetJavaScriptEventCallBack(Callback* instance);
539#else
541#endif
542
550 typedef void (*CurrentZoomProc) (double curr_zoom_proc, void* data);
551
560#ifdef SWIG
561 void SetCurrentZoomProc(Callback* instance);
562#else
563 void SetCurrentZoomProc(CurrentZoomProc curr_zoom_proc, void* data);
564#endif
565
571 void ExecuteAction(Action& action);
572
573 void ExecuteAction(ActionParameter& action_param);
574
578 double GetCanvasWidth() const;
579
583 double GetCanvasHeight() const;
584
588 double GetHScrollPos() const;
589
593 double GetVScrollPos() const;
594
601 void OnScroll(int pix_dx, int pix_dy);
602
609 void SetHScrollPos(double pos);
610
633 void SetVScrollPos(double pos);
634
642 void OnSize(int width, int height);
643
652 bool IsFinishedRendering(bool visible_region_only) const;
653
659
663 void Update(bool all = false);
664
669 void Update(const Rect& update);
670
676 void Update(const Annot& annot, int page_num);
677
682 void Update(const Field& field);
683
691
697#ifdef SWIG
698 std::vector<unsigned char> GetBuffer() const;
699#else
700 const char* GetBuffer() const;
701#endif
702
716
721 int GetBufferWidth() const;
722
727 int GetBufferHeight() const;
728
733 int GetBufferStride() const;
734
742
750
757 void SetDrawAnnotations(bool render_annots);
758
771 void SetUrlExtraction(bool enabled);
772
785 LinkInfo GetLinkAt(int x, int y);
786
796 void SetFieldHighlightColor(const ColorPt& new_field_highlight_color);
797
803 void SetHighlightFields(bool highlight_fields);
804
813 void SetRequiredFieldBorderColor(const ColorPt& new_border_color);
814
824 void SetSignatureHighlightColor(const ColorPt& new_signature_highlight_color);
825
835 void SetAntiAliasing(bool enable_aa);
836
845 void SetPathHinting(bool enable_hinting);
846
857 void SetThinLineAdjustment(bool pixel_grid_fit, bool stroke_adjust);
858
872 void SetImageSmoothing(bool smoothing_enabled = true);
873
881 void SetCaching(bool enabled);
882
892
905 void SetGamma(double exp);
906
917
933 void SetOCGContext(const OCG::Context& ctx);
934
943
950
951
958 typedef void (*RenderBeginEventProc) (void* data);
959
971 typedef void (*RenderFinishEventProc) (void* data, bool canceled);
972
985#ifdef SWIG
986 void SetRenderBeginProc(class Callback* instance);
987#else
989#endif
990
1003#ifdef SWIG
1004 void SetRenderFinishProc(class Callback* instance);
1005#else
1007#endif
1008
1009
1022
1028
1033
1039 void SetRightToLeftLanguage(bool flag);
1040
1047
1055 bool Select(double x1, double y1, double x2, double y2);
1056
1065 bool SelectWithSnapping(double x1, double y1, double x2, double y2, bool snap_to_start, bool snap_to_end);
1066
1074 bool SelectWithSmartSnapping(double x1, double y1, double x2, double y2);
1075
1083 bool Select(double x1, double y1, int page1, double x2, double y2, int page2);
1084
1093 bool SelectWithSnapping(double x1, double y1, int page1, double x2, double y2, int page2,
1094 bool snap_to_start, bool snap_to_end);
1095
1103 bool SelectWithSmartSnapping(double x1, double y1, int page1, double x2, double y2, int page2);
1104
1111 bool Select(const Highlights& highlights);
1112
1119 bool Select(const Selection& select);
1120
1126
1131
1135 bool HasSelection() const;
1136
1141
1145 Selection GetSelection( int pagenum = -1 ) const;
1146
1152
1158
1163 bool HasSelectionOnPage( int ipage ) const;
1164
1171 void PrepareWords(int page_num);
1172
1177 bool WereWordsPrepared(int page_num) const;
1178
1183 bool IsThereTextInRect(double x1, double y1, double x2, double y2) const;
1184
1195 void PrepareAnnotsForMouse(int page_num, double distance_threshold, double minimum_line_weight);
1196
1201 bool WereAnnotsForMousePrepared(int page_num) const;
1202
1208 Annot::Type GetAnnotTypeUnder(double x, double y);
1209
1214 void SetPageBorderVisibility(bool border_visible);
1215
1221 void SetPageTransparencyGrid(bool trans_grid_visible);
1222
1228
1234 void SetBackgroundColor(UInt8 r, UInt8 g, UInt8 b, UInt8 a = 255);
1235
1245 void SetHorizontalAlign(int align);
1246
1256 void SetVerticalAlign(int align);
1257
1270 void SetPageSpacing(int horiz_col_space, int vert_col_space, int horiz_pad, int vert_pad);
1271
1284 static void SetViewerCache(SDF::SDFDoc& document, size_t max_cache_size, bool on_disk);
1285
1289 void Destroy();
1290
1294 void SetDevicePixelDensity(double dpi, double scale_factor);
1295
1304 Rect GetScreenRectForAnnot(Annot annot, int page_num = -1);
1305
1316 Annot GetAnnotationAt(int x, int y, double distanceThreshold, double minimumLineWeight);
1317
1328 {
1333 PVM_SIZE //must stay as the last element
1334 };
1335
1343
1348
1355 void RefreshAndUpdate(const ViewChangeCollection& view_change);
1356
1370
1376
1390 void SetupThumbnails(bool use_embedded, bool generate_at_runtime, bool use_disk_cache, int thumb_max_side_length, size_t max_abs_cache_size, double max_perc_cache_size);
1391
1396
1408 typedef void (*ThumbAsyncHandler) (int page_num, bool was_thumb_found, const char* thumb_buf, int thumb_width, int thumb_height, void* custom_data);
1409
1418#ifdef SWIG
1419 void GetThumbAsync(int page_num, Callback* instance);
1420#else
1421 void GetThumbAsync(int page_num, ThumbAsyncHandler proc, void* custom_data);
1422#endif
1423
1431 size_t GetThumbInCacheSize(int page_num);
1432
1443 bool GetThumbInCache(int page_num, UChar* buf, UInt32& out_width, UInt32& out_height);
1444
1445 /*
1446 * Cancel all pending GetThumbAsync requests. Your callback function will still be called
1447 * for each canceled request, but 'was_thumb_found' will be set to 'false'.
1448 */
1450
1456 typedef void (*RequestRenderInWorkerThreadProc) (void* custom_data);
1457
1466#ifdef SWIG
1467 void SetRequestRenderInWorkerThreadProc(Callback* instance);
1468#else
1470#endif
1471
1477 typedef void (*FindTextHandler)(bool success, PDF::Selection selection, void* custom_data);
1478
1479
1480#ifdef SWIG
1487 void SetFindTextHandler(Callback* instance);
1488#else // SWIG
1496 void SetFindTextHandler(PDFView::FindTextHandler proc, void* custom_data);
1497#endif // SWIG
1498
1510 void FindTextAsync(const UString& search_str, bool match_case, bool match_whole_word, bool search_up, bool reg_exp);
1511
1520 std::vector<Annot> GetAnnotationsOnPage(int page_num);
1521
1534 std::vector<Annot> GetAnnotationListAt(int x1, int y1, int x2, int y2);
1535
1540
1548
1555
1562
1568 void TakeSnapshot(const UString& meta_info);
1569
1578
1587
1593 bool CanUndo();
1594
1600 bool CanRedo();
1601
1609
1614
1616
1617
1618 // @cond PRIVATE_DOC
1619private:
1620 TRN_PDFView mp_view;
1621 TRN_PDFDoc temp_doc;
1622
1623 // PDFView should not be copied
1624 PDFView(const PDFView&);
1625 PDFView& operator= (const PDFView&);
1626
1627 FindTextHandler mp_findtexthandler;
1628 void* mp_findtextdata;
1629
1630 static void StaticTRNPDFViewFindTextHandler(TRN_Bool success, TRN_PDFViewSelection selection, void* custom_data);
1631
1632 //for internal use only
1633#if defined(__iOS__)
1634public:
1635 #include <Impl/PDFView.internal>
1636#endif // defined(__iOS__)
1637 // @endcond
1638};
1639
1640#include <Impl/PDFView.inl>
1641
1642 }; // namespace PDF
1643}; // namespace pdftron
1644
1645#endif // PDFTRON_H_CPPPDFPDFView
void(* ErrorReportProc)(const char *message, void *data)
Point SnapToNearestInDoc(const Point &screen_pt)
bool IsFinishedRendering(bool visible_region_only) const
void SetCurrentPageProc(CurrentPageProc curr_pagenum_proc, void *data)
void(* CurrentZoomProc)(double curr_zoom_proc, void *data)
Definition PDFView.h:550
bool GetThumbInCache(int page_num, UChar *buf, UInt32 &out_width, UInt32 &out_height)
Page::Rotate GetRotation() const
void ConvPagePtToScreenPt(double &x, double &y, int page_num=-1) const
void ExecuteAction(Action &action)
bool Select(const Selection &select)
Rect GetScreenRectForAnnot(Annot annot, int page_num=-1)
void SetDrawAnnotations(bool render_annots)
void ConvScreenPtToPagePt(double &x, double &y, int page_num=-1) const
void SetDefaultPageColor(UInt8 r, UInt8 g, UInt8 b)
void SetRenderFinishProc(RenderFinishEventProc proc, void *data)
PDFRasterizer::ColorPostProcessMode GetColorPostProcessMode() const
void SetRasterizerType(PDFRasterizer::Type type)
void SetPageRefViewMode(PageViewMode mode)
bool ShowRect(int page_num, const Rect &rect)
std::vector< Annot > GetAnnotationsOnPage(int page_num)
void Update(const Rect &update)
void SetBackgroundColor(UInt8 r, UInt8 g, UInt8 b, UInt8 a=255)
void SetPathHinting(bool enable_hinting)
PageViewMode GetPageViewMode() const
void SetRequiredFieldBorderColor(const ColorPt &new_border_color)
int GetBufferHeight() const
PageViewMode GetPageRefViewMode() const
void PrepareAnnotsForMouse(int page_num, double distance_threshold, double minimum_line_weight)
void(* RequestRenderInWorkerThreadProc)(void *custom_data)
Definition PDFView.h:1456
void SetJavaScriptEventCallBack(JavaScriptEventProc js_proc, void *data)
void SetDoc(PDFDoc &doc)
void TakeSnapshot(const UString &meta_info)
void SetHighlightFields(bool highlight_fields)
void SetHorizontalAlign(int align)
Selection GetSelection(int pagenum=-1) const
std::vector< Annot > GetAnnotationListAt(int x1, int y1, int x2, int y2)
bool GetRightToLeftLanguage() const
void SetThinLineAdjustment(bool pixel_grid_fit, bool stroke_adjust)
bool Select(double x1, double y1, int page1, double x2, double y2, int page2)
void RefreshAndUpdate(const ViewChangeCollection &view_change)
void SetPagePresentationMode(PagePresentationMode mode)
Annot GetAnnotationAt(int x, int y, double distanceThreshold, double minimumLineWeight)
double GetCanvasWidth() const
Point ConvPagePtToCanvasPt(const Point &pt, int page_num=-1) const
int GetSelectionBeginPage() const
bool SelectWithSmartSnapping(double x1, double y1, int page1, double x2, double y2, int page2)
void GetThumbAsync(int page_num, ThumbAsyncHandler proc, void *custom_data)
bool SetZoom(double zoom)
static void SetViewerCache(SDF::SDFDoc &document, size_t max_cache_size, bool on_disk)
void(* RenderFinishEventProc)(void *data, bool canceled)
Definition PDFView.h:971
OCG::Context GetOCGContext()
bool DocTryLockRead(int milliseconds=0)
void ConvCanvasPtToPagePt(double &x, double &y, int page_num=-1) const
void RevertChangesSinceSnapshot()
void SetGamma(double exp)
void SetVerticalAlign(int align)
void(* JavaScriptEventProc)(const char *event_type, const char *json, void *data)
Definition PDFView.h:528
void DocLock(bool cancel_threads)
void SetCurrentZoomProc(CurrentZoomProc curr_zoom_proc, void *data)
bool HasSelectionOnPage(int ipage) const
void ShowAnnotation(Annot annot)
void(* RenderBeginEventProc)(void *data)
Definition PDFView.h:958
Annot::Type GetAnnotTypeUnder(double x, double y)
void SetPageTransparencyGrid(bool trans_grid_visible)
void SetUrlExtraction(bool enabled)
void SetOverprint(PDFRasterizer::OverprintPreviewMode op)
bool DocTryLock(int milliseconds=0)
bool Select(const Highlights &highlights)
TextSelectionMode GetTextSelectionMode() const
void SetPageBorderVisibility(bool border_visible)
void ConvPagePtToCanvasPt(double &x, double &y, int page_num=-1) const
void Update(const Annot &annot, int page_num)
int GetSelectionEndPage() const
void SetAntiAliasing(bool enable_aa)
bool WereWordsPrepared(int page_num) const
size_t GetThumbInCacheSize(int page_num)
Point ConvCanvasPtToScreenPt(const Point &pt) const
bool HasSelection() const
void SetFieldHighlightColor(const ColorPt &new_field_highlight_color)
void SetErrorReportProc(PDFRasterizer::ErrorReportProc error_proc, void *data)
void OnScroll(int pix_dx, int pix_dy)
bool SmartZoom(int x, int y)
Point ConvCanvasPtToPagePt(const Point &pt, int page_num=-1) const
void SetHScrollPos(double pos)
LinkInfo GetLinkAt(int x, int y)
void SetPageViewMode(PageViewMode mode)
void ExecuteAction(ActionParameter &action_param)
bool WereAnnotsForMousePrepared(int page_num) const
bool SetCurrentPage(int page_num)
int GetCurrentPage() const
double GetHScrollPos() const
void SetSnappingMode(UInt32 mode_flags)
void(* CurrentPageProc)(int current_page, int num_pages, void *data)
Definition PDFView.h:503
void ConvCanvasPtToScreenPt(double &x, double &y) const
void(* ThumbAsyncHandler)(int page_num, bool was_thumb_found, const char *thumb_buf, int thumb_width, int thumb_height, void *custom_data)
Definition PDFView.h:1408
void HideAnnotation(Annot annot)
double GetCanvasHeight() const
bool SelectWithSmartSnapping(double x1, double y1, double x2, double y2)
ExternalAnnotManager GetExternalAnnotManager(const UString &author, ExternalAnnotManager::Mode mode=ExternalAnnotManager::e_admin_undo_own)
void SetTextSelectionMode(TextSelectionMode tm)
int GetBufferStride() const
void SetOCGContext(const OCG::Context &ctx)
void SetupThumbnails(bool use_embedded, bool generate_at_runtime, bool use_disk_cache, int thumb_max_side_length, size_t max_abs_cache_size, double max_perc_cache_size)
double GetVScrollPos() const
bool SelectWithSnapping(double x1, double y1, double x2, double y2, bool snap_to_start, bool snap_to_end)
void PrepareWords(int page_num)
void FindTextAsync(const UString &search_str, bool match_case, bool match_whole_word, bool search_up, bool reg_exp)
void ConvScreenPtToCanvasPt(double &x, double &y) const
void SetPageSpacing(int horiz_col_space, int vert_col_space, int horiz_pad, int vert_pad)
void Update(const Field &field)
Common::Matrix2D GetDeviceTransform(int page_num=-1) const
void(* FindTextHandler)(bool success, PDF::Selection selection, void *custom_data)
Definition PDFView.h:1477
Point ConvScreenPtToCanvasPt(const Point &pt) const
void SetVScrollPos(double pos)
void SetSignatureHighlightColor(const ColorPt &new_signature_highlight_color)
bool SetZoom(int x, int y, double zoom)
ColorPt GetPostProcessedColor(const ColorPt &color) const
bool Select(double x1, double y1, double x2, double y2)
void SetDevicePixelDensity(double dpi, double scale_factor)
void SetColorPostProcessColors(unsigned int white_color, unsigned int black_color)
bool SelectWithSnapping(double x1, double y1, int page1, double x2, double y2, int page2, bool snap_to_start, bool snap_to_end)
int GetBufferWidth() const
PagePresentationMode GetPagePresentationMode() const
void SetColorPostProcessMode(PDFRasterizer::ColorPostProcessMode mode)
void SetRenderBeginProc(RenderBeginEventProc proc, void *data)
Point ConvScreenPtToPagePt(const Point &pt, int page_num=-1) const
void Update(bool all=false)
void OnSize(int width, int height)
Point ConvPagePtToScreenPt(const Point &pt, int page_num=-1) const
const char * GetBuffer() const
void SetCaching(bool enabled)
void SetColorPostProcessMapFile(Filters::Filter image_file_contents)
void SetRequestRenderInWorkerThreadProc(RequestRenderInWorkerThreadProc proc, void *custom_data)
void SetImageSmoothing(bool smoothing_enabled=true)
int GetPageCount() const
void SetRightToLeftLanguage(bool flag)
double GetZoom() const
void SetFindTextHandler(PDFView::FindTextHandler proc, void *custom_data)
void OpenUniversalDoc(DocumentConversion &conversion)
int GetPageNumberFromScreenPt(double x, double y) const
std::vector< int > GetVisiblePages() const
bool IsThereTextInRect(double x1, double y1, double x2, double y2) const
TRN_UInt32 UInt32
Definition BasicTypes.h:13
TRN_UInt8 UInt8
Definition BasicTypes.h:15
TRN_UChar UChar
Definition BasicTypes.h:12