فهرست منبع

ComPDFKit.Tool(pdftech) - 禁止FreeText输入和部分旋转效果

liyuxuan 9 ماه پیش
والد
کامیت
4267f41dfc

+ 20 - 1
Demo/Examples/ComPDFKit.Tool/CPDFToolManager.cs

@@ -20,6 +20,7 @@ using ComPDFKit.Tool.Help;
 using ComPDFKit.Measure;
 using System.Dynamic;
 using System.Globalization;
+using System.Windows.Controls;
 
 namespace ComPDFKit.Tool
 {
@@ -1782,6 +1783,23 @@ namespace ComPDFKit.Tool
             MouseMoveHandler?.Invoke(this, e);
         }
 
+        private void MakeTextBoxReadOnly(TextBox textBox)
+        {
+            try
+            {
+                DefaultSettingParam defaultSettingParam = viewerTool.GetDefaultSettingParam();
+                FreeTextParam textParam = defaultSettingParam.FreeTextParamDef;
+                if(textParam.IsReadOnly)
+                {
+                    textBox.IsReadOnly = true;
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
         private void ViewerTool_MouseLeftButtonDownHandler(object sender, MouseEventObject e)
         {
             viewerTool.RemoveSelectTextData();
@@ -1802,7 +1820,8 @@ namespace ComPDFKit.Tool
                                         viewerTool.CreateDefaultAnnot(cPDFAnnotation, createAnnotType, null);
                                         if (cPDFAnnotation != null && createAnnotType == C_ANNOTATION_TYPE.C_ANNOTATION_FREETEXT)
                                         {
-                                            viewerTool.CreateTextBox();
+                                            TextBox textui = viewerTool.CreateTextBox();
+                                            MakeTextBoxReadOnly(textui);
                                         }
                                         switch (createAnnotType)
                                         {

+ 9 - 3
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.Annot.cs

@@ -313,15 +313,17 @@ namespace ComPDFKit.Tool
             (baseLayer as CreateAnnotTool).MoveDraw(point, PDFViewer.GetZoom());
         }
 
-        public void CreateTextBox()
+        public TextBox CreateTextBox()
         {
             if (UnCheckAnnotViewerModel())
             {
-                return;
+                return null;
             }
             Point point = Mouse.GetPosition(this);
             BaseLayer baseLayer = PDFViewer.GetViewForTag(createAnnotTag);
-           (baseLayer as CreateAnnotTool).CreateTextBox();
+            TextBox textui = (baseLayer as CreateAnnotTool).CreateTextBox();
+
+            return textui;
         }
 
         public Rect EndDrawAnnot()
@@ -797,6 +799,10 @@ namespace ComPDFKit.Tool
                     {
                         createAnnotTool.Arrange();
                     };
+                    PopupControlInfo attachInfo=new PopupControlInfo();
+                    attachInfo.Annot = textAnnot;
+                    attachInfo.PopUpControl=textui;
+                    PopUpControlHandler?.Invoke(this, attachInfo);
                 }
             }
             catch (Exception ex)

+ 12 - 11
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.SelectedRect.cs

@@ -199,24 +199,25 @@ namespace ComPDFKit.Tool
             if (canRotateAnnot != canRotate)
             {
                 canRotateAnnot = canRotate;
-                try
-                {
-                    BaseLayer baseLayer = PDFViewer.GetViewForTag(selectedRectViewTag);
-                    SelectedRect selectedRect = CommonHelper.FindVisualChild<SelectedRect>(baseLayer as CustomizeLayer);
-                    selectedRect.CanRotate = canRotate;
-                }
-                catch (Exception ex)
-                {
-                }
-                return false;
+                BaseLayer baseLayer = PDFViewer.GetViewForTag(selectedRectViewTag);
+                SelectedRect selectedRect = CommonHelper.FindVisualChild<SelectedRect>(baseLayer as CustomizeLayer);
+                selectedRect.CanRotate = canRotate;
+                return true;
             }
 
-            return true;
+            return false;
         }
 
         public bool GetRotateAnnot()
         {
             return canRotateAnnot;
         }
+
+        public SelectedRect GetAnnotSelectRect()
+        {
+            BaseLayer baseLayer = PDFViewer.GetViewForTag(selectedRectViewTag);
+            SelectedRect selectedRect = CommonHelper.FindVisualChild<SelectedRect>(baseLayer as CustomizeLayer);
+            return selectedRect;
+        }
     }
 }

+ 1 - 1
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.xaml

@@ -10,7 +10,7 @@
              Loaded="CPDFViewerTool_Loaded"
              Unloaded="CPDFViewerTool_Unloaded"
              >
-    <ScrollViewer Focusable="False" CanContentScroll="True"
+    <ScrollViewer Name="ScrollContainer" Focusable="False" CanContentScroll="True"
                   HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
                   MouseUp="ScrollViewer_MouseUp" MouseDown="ScrollViewer_MouseDown">
         <compdfkitviewer:CPDFViewer x:Name="PDFViewer">

+ 24 - 0
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.xaml.cs

@@ -62,6 +62,13 @@ namespace ComPDFKit.Tool
         SelectedPage,
     }
 
+
+    public class PopupControlInfo
+    {
+        public BaseAnnot Annot { get; set; }
+        public UIElement PopUpControl { get; set; }
+    }
+
     public partial class CPDFViewerTool : UserControl
     {
         public bool IsDocumentModified
@@ -91,6 +98,22 @@ namespace ComPDFKit.Tool
             InsertPageSelectedRectView();
         }
 
+        public void ReplaceCPDFViewer(CPDFViewer newViewer)
+        {
+            ScrollContainer.Content = newViewer;
+            PDFViewer = newViewer;
+            InsertSelectImageView();
+            InsertAnnotView();
+            InsertAnnotEditView();
+            InsertWidgetView();
+            InsertSelectedRectView();
+            InsertMultiSelectedRectView();
+            InsertCustomizeToolView();
+            InsertSelectTextView();
+            InsertTextEditView();
+            InsertPageSelectedRectView();
+        }
+
         private void Current_Exit(object sender, ExitEventArgs e)
         {
             GetCPDFViewer().Dispose();
@@ -109,6 +132,7 @@ namespace ComPDFKit.Tool
         public event EventHandler<MouseEventObject> MouseRightButtonDownHandler;
         public event EventHandler DrawChanged;
         public event EventHandler DocumentModifiedChanged;
+        public event EventHandler<PopupControlInfo> PopUpControlHandler;
 
         private ToolType currentModel = ToolType.Viewer;
 

+ 4 - 2
Demo/Examples/ComPDFKit.Tool/DrawTool/CreateAnnotTool.cs

@@ -1442,7 +1442,7 @@ namespace ComPDFKit.Tool.DrawTool
             return maxRect;
         }
 
-        public void CreateTextBox()
+        public TextBox CreateTextBox()
         {
             try
             {
@@ -1580,13 +1580,15 @@ namespace ComPDFKit.Tool.DrawTool
                     {
                         createAnnotTool.Arrange();
                     };
+
+                    return textui;
                 }
             }
             catch
             {
 
             }
-
+            return null;
         }
 
         public void RemoveTextBox()

+ 17 - 5
Demo/Examples/ComPDFKit.Tool/DrawTool/SelectedRect.cs

@@ -309,12 +309,15 @@ namespace ComPDFKit.Tool.DrawTool
 
         private void DrawRotate(DrawingContext drawDC)
         {
-            double centerX = drawRect.Left + drawRect.Width / 2;
-            double centerY = drawRect.Top + drawRect.Height / 2;
+            if (CanRotate)
+            {
+                double centerX = drawRect.Left + drawRect.Width / 2;
+                double centerY = drawRect.Top + drawRect.Height / 2;
 
-            Pen PointPen = DrawParam.AnnotPointPen;
-            drawDC.DrawLine(PointPen, new Point(centerX, drawRect.Top), new Point(centerX, drawRect.Top - rotateline));
-            drawDC.DrawEllipse(PointPen.Brush, PointPen, new Point(centerX, drawRect.Top - rotateline), pointSize * 2, pointSize * 2);
+                Pen PointPen = DrawParam.AnnotPointPen;
+                drawDC.DrawLine(PointPen, new Point(centerX, drawRect.Top), new Point(centerX, drawRect.Top - rotateline));
+                drawDC.DrawEllipse(PointPen.Brush, PointPen, new Point(centerX, drawRect.Top - rotateline), pointSize * 2, pointSize * 2);
+            }
         }
 
         public void Draw()
@@ -855,5 +858,14 @@ namespace ComPDFKit.Tool.DrawTool
             }
             return PointControlType.None;
         }
+
+        public void SetRotateAngle(double newAngle)
+        {
+            if (angle != newAngle)
+            {
+                angle = newAngle;
+                Draw();
+            }
+        }
     }
 }

+ 2 - 1
Demo/Examples/ComPDFKit.Tool/SettingParam/AnnotParam/FreeTextParam.cs

@@ -22,6 +22,7 @@ namespace ComPDFKit.Tool
         public double FontSize { get; set; }
         public C_TEXT_ALIGNMENT Alignment {  get; set; }
 
+        public bool IsReadOnly { get; set; }
         public override bool CopyTo(AnnotParam transfer)
         {
             
@@ -58,7 +59,7 @@ namespace ComPDFKit.Tool
             freetextTransfer.FontName = FontName;
             freetextTransfer.FontSize = FontSize;
             freetextTransfer.Alignment = Alignment;
-
+            freetextTransfer.IsReadOnly = IsReadOnly;
             return true;
         }
     }