Browse Source

PDFView(Windows) - 补充预览右键菜单

liyuxuan 1 year ago
parent
commit
faf464c5d6
1 changed files with 112 additions and 0 deletions
  1. 112 0
      compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/MainWindow.xaml.cs

+ 112 - 0
compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/MainWindow.xaml.cs

@@ -2,6 +2,8 @@
 using compdfkit_tools.Helper;
 using compdfkit_tools.PDFControl;
 using compdfkit_tools.PDFControlUI;
+using ComPDFKitViewer;
+using ComPDFKitViewer.AnnotEvent;
 using ComPDFKitViewer.PdfViewer;
 using Microsoft.Win32;
 using System;
@@ -55,6 +57,8 @@ namespace viewer_ctrl_demo
             PDFGrid.Child = pdfViewControl;
             pdfViewControl.PDFView.InfoChanged -= PdfViewer_InfoChanged;
             pdfViewControl.PDFView.InfoChanged += PdfViewer_InfoChanged;
+            pdfViewControl.PDFView.AnnotCommandHandler -= PDFView_AnnotCommandHandler;
+            pdfViewControl.PDFView.AnnotCommandHandler += PDFView_AnnotCommandHandler;
             PasswordUI.Closed += PasswordUI_Closed;
             PasswordUI.Canceled += PasswordUI_Canceled;
             PasswordUI.Confirmed += PasswordUI_Confirmed;
@@ -82,6 +86,114 @@ namespace viewer_ctrl_demo
 
         }
 
+        private void PDFView_AnnotCommandHandler(object sender,AnnotCommandArgs e)
+        {
+            if (e != null && e.CommandType == CommandType.Context)
+            {
+                e.Handle = true;
+                e.PopupMenu = new ContextMenu();
+
+                MenuItem fitWidthMenu = new MenuItem();
+                fitWidthMenu.Header = "Fit Width";
+                fitWidthMenu.Click += (o, p) =>
+                {
+                    if(pdfViewControl!=null)
+                    {
+                        pdfViewControl.PDFView?.ChangeFitMode(FitMode.FitWidth);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(fitWidthMenu);
+
+                MenuItem fitSizeMenu = new MenuItem();
+                fitSizeMenu.Header = "Actual Size";
+                fitSizeMenu.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        pdfViewControl.PDFView?.ChangeFitMode(FitMode.FitSize);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(fitSizeMenu);
+
+                MenuItem zoomInMenu = new MenuItem();
+                zoomInMenu.Header = "Zoom In";
+                zoomInMenu.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        double newZoom = CheckZoomLevel(pdfViewControl.PDFView.ZoomFactor - 0.01, false);
+                        pdfViewControl.PDFView?.Zoom(newZoom);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(zoomInMenu);
+
+                MenuItem zoomOutMenu = new MenuItem();
+                zoomOutMenu.Header = "Zoom Out";
+                zoomOutMenu.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        double newZoom = CheckZoomLevel(pdfViewControl.PDFView.ZoomFactor + 0.01, true);
+                        pdfViewControl.PDFView?.Zoom(newZoom);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(zoomOutMenu);
+                e.PopupMenu.Items.Add(new Separator());
+
+                MenuItem singleView = new MenuItem();
+                singleView.Header = "Single Page";
+                singleView.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        pdfViewControl.PDFView?.ChangeViewMode(ViewMode.Single);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(singleView);
+
+                MenuItem singleContinuousView = new MenuItem();
+                singleContinuousView.Header = "Single Continuous Page";
+                singleContinuousView.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        pdfViewControl.PDFView?.ChangeViewMode(ViewMode.SingleContinuous);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(singleContinuousView);
+
+                MenuItem doubleView = new MenuItem();
+                doubleView.Header = "Double Page";
+                doubleView.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        pdfViewControl.PDFView?.ChangeViewMode(ViewMode.Double);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(doubleView);
+
+                MenuItem doubleContinuousView = new MenuItem();
+                doubleContinuousView.Header = "Double Continuous Page";
+                doubleContinuousView.Click += (o, p) =>
+                {
+                    if (pdfViewControl != null)
+                    {
+                        pdfViewControl.PDFView?.ChangeViewMode(ViewMode.DoubleContinuous);
+                    }
+                };
+
+                e.PopupMenu.Items.Add(doubleContinuousView);
+            }
+        }
+
         private void PasswordUI_Confirmed(object sender, string e)
         {
             if(passwordViewer!=null && passwordViewer.PDFView!=null && passwordViewer.PDFView.Document!=null)