Jelajahi Sumber

【2025】【Edit】
1、文字编辑模块处理
2、裁剪模式预处理

niehaoyu 2 hari lalu
induk
melakukan
769f87ed42
19 mengubah file dengan 410 tambahan dan 1600 penghapusan
  1. 1 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Extension.h
  2. 1 2
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Extension.m
  3. 9 9
      PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Snapshot.swift
  4. 17 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.swift
  5. 19 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.xib
  6. 17 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropCoverController.swift
  7. 19 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropCoverController.xib
  8. 17 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropPropertyController.swift
  9. 19 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropPropertyController.xib
  10. 9 2
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift
  11. 3 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift
  12. 13 1
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.swift
  13. 11 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.xib
  14. 33 2
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditPDFTextPropertyViewController.swift
  15. 1 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditPDFTextPropertyViewController.xib
  16. 0 52
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDFTextManager.swift
  17. 0 1494
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift
  18. 64 8
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj
  19. 157 29
      PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Extension.h

@@ -39,7 +39,7 @@
 - (BOOL)canPaste;
 
 - (void)takeSnapshot:(id)sender;
--(void)takeSnapshotSelectContent:(id)sender;
+- (void)takeSnapshotSelectContent:(id)sender;
 
 - (IBAction)autoSelectContent:(id)sender;
 

+ 1 - 2
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Extension.m

@@ -828,8 +828,7 @@ CGFloat DEFAULT_SNAPSHOT_HEIGHT = 200.0;
         [[self pdfListViewDelegate] PDFListView:self showSnapshotAtPageNumber:[page pageIndex] forRect:rect scaleFactor:[self scaleFactor] autoFits:autoFits];
 }
 
--(void)takeSnapshotSelectContent:(id)sender
-{
+- (void)takeSnapshotSelectContent:(id)sender {
     if (self.toolMode == CSelectToolMode && NSIsEmptyRect(self.selectionRect) == NO && self.selectionPageIndex != NSNotFound) {
          [self takeSnapshot:sender];
      } else {

+ 9 - 9
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Snapshot.swift

@@ -347,15 +347,15 @@ extension KMLeftSideViewController: KMSnapshotWindowControllerDelegate {
     }
     
     func snapshotControllerDidFinishSetup(_ controller: KMSnapshotWindowController) {
-        let image = controller.thumbnailWithSize(self.snapshotCacheSize)
-        controller.thumbnail = image
-        
-        let model = KMSnapshotModel()
-        model.windowC = controller
-        self.snapshots.append(model)
-        Task { @MainActor in
-            self.snapshotTableView.ks_reloadData()
-        }
+//        let image = controller.thumbnailWithSize(self.snapshotCacheSize)
+//        controller.thumbnail = image
+//        
+//        let model = KMSnapshotModel()
+//        model.windowC = controller
+//        self.snapshots.append(model)
+//        Task { @MainActor in
+//            self.snapshotTableView.ks_reloadData()
+//        }
     }
     
     func snapshotController(_ controller: KMSnapshotWindowController, miniaturizedRect isMiniaturize: Bool) -> NSRect {

+ 17 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.swift

@@ -0,0 +1,17 @@
+//
+//  KMCropController.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/11/20.
+//
+
+import Cocoa
+
+class KMCropController: NSViewController {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+    
+}

+ 19 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/KMCropController.xib

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCropController" customModuleProvider="target">
+            <connections>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="Hz6-mo-xeY">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+        </customView>
+    </objects>
+</document>

+ 17 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropCoverController.swift

@@ -0,0 +1,17 @@
+//
+//  KMCropCoverController.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/11/20.
+//
+
+import Cocoa
+
+class KMCropCoverController: NSViewController {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+    
+}

+ 19 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropCoverController.xib

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCropCoverController" customModuleProvider="target">
+            <connections>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="Hz6-mo-xeY">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+        </customView>
+    </objects>
+</document>

+ 17 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropPropertyController.swift

@@ -0,0 +1,17 @@
+//
+//  KMCropPropertyController.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/11/20.
+//
+
+import Cocoa
+
+class KMCropPropertyController: NSViewController {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+    
+}

+ 19 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Crop/Views/KMCropPropertyController.xib

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11134" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11134"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMCropPropertyController" customModuleProvider="target">
+            <connections>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="Hz6-mo-xeY">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+        </customView>
+    </objects>
+</document>

+ 9 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift

@@ -11,7 +11,7 @@ class KMEditDocumentController: NSViewController {
 
     var pdfDocument: CPDFDocument?
     
-    private var pdfView: CPDFView = CPDFView.init()
+    private var pdfView: CPDFListView = CPDFListView.init()
     
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -29,11 +29,18 @@ class KMEditDocumentController: NSViewController {
         guard let pdfDocument = self.pdfDocument else { return }
         
         pdfView.document = pdfDocument
-         
+        
     }
     
     func refreshUI() {
         pdfView.updateRender(true)
+        let page = pdfView.document.page(at: 0)
+        let bounds = page?.bounds
+        
+        pdfView.convertRect(toScreen: bounds!)
+        pdfView.convert(bounds!, from: page)
+        print("111")
+        
     }
     
     func layoutDocumentView() {

+ 3 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -389,6 +389,9 @@ import KMComponentLibrary
                 
                 listView.annotationType = .link
                 
+            } else if subToolMode == .Edit_Crop {
+                listView.toolMode = .selectToolMode
+                
             }
              
             

+ 13 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.swift

@@ -13,10 +13,13 @@ class KMRightSideController: NSViewController {
     @IBOutlet var contendView: NSView!
     @IBOutlet var contendLeftDivider: ComponentDivider!
     
+    @IBOutlet var headerBGView: NSView!
     @IBOutlet var titleLabel: NSTextField!
     
     @IBOutlet var infoContendView: NSView!
     
+    @IBOutlet var emptyView: ComponentEmpty!
+    
     var annotations: [CPDFAnnotation] {
         get {
             return self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? []
@@ -60,7 +63,8 @@ class KMRightSideController: NSViewController {
         
         titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
         titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
-        
+      
+        emptyView.properties = ComponentEmptyProperty(emptyType: .noWatermark, text: KMLocalizedString("No identical attributes"), subText: "")
     }
     
     func updateTitleLabel() {
@@ -82,6 +86,7 @@ class KMRightSideController: NSViewController {
         contentViewController = nil
         
         if viewManager?.toolMode == .Edit {
+            
             if pdfView?.km_EditingAreas().isEmpty == true {
                 
             } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
@@ -119,6 +124,13 @@ class KMRightSideController: NSViewController {
             contendVC.view.frame = infoContendView.bounds
             contendVC.view.autoresizingMask = [.width, .height]
             infoContendView.addSubview(contendVC.view)
+            
+            headerBGView.isHidden = false
+            emptyView.isHidden = true
+        } else {
+            headerBGView.isHidden = true
+            emptyView.isHidden = false
+            
         }
         
     }

+ 11 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.xib

@@ -10,6 +10,8 @@
             <connections>
                 <outlet property="contendLeftDivider" destination="dWX-cw-Vye" id="kiw-vI-6EW"/>
                 <outlet property="contendView" destination="Sx1-Eg-QqT" id="6gg-wx-Pn7"/>
+                <outlet property="emptyView" destination="caV-0D-KSQ" id="y5j-1P-GHx"/>
+                <outlet property="headerBGView" destination="TcN-JR-Ldb" id="0Ok-kE-c9g"/>
                 <outlet property="infoContendView" destination="5et-6F-yVg" id="ibb-Ic-3DS"/>
                 <outlet property="titleLabel" destination="Rtf-SN-4Bo" id="ddV-ja-Zc8"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
@@ -60,9 +62,17 @@
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="5et-6F-yVg">
                             <rect key="frame" x="0.0" y="0.0" width="264" height="560"/>
                         </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="caV-0D-KSQ" customClass="ComponentEmpty" customModule="KMComponentLibrary">
+                            <rect key="frame" x="16" y="228" width="232" height="184"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="232" id="2dV-OZ-Wfi"/>
+                                <constraint firstAttribute="height" constant="184" id="ZPF-gr-ITH"/>
+                            </constraints>
+                        </customView>
                     </subviews>
                     <constraints>
                         <constraint firstItem="TcN-JR-Ldb" firstAttribute="top" secondItem="Sx1-Eg-QqT" secondAttribute="top" id="132-Pn-4jc"/>
+                        <constraint firstItem="caV-0D-KSQ" firstAttribute="centerX" secondItem="Sx1-Eg-QqT" secondAttribute="centerX" id="90h-pt-GqT"/>
                         <constraint firstAttribute="trailing" secondItem="TcN-JR-Ldb" secondAttribute="trailing" id="G1x-eP-gh9"/>
                         <constraint firstItem="5et-6F-yVg" firstAttribute="top" secondItem="TcN-JR-Ldb" secondAttribute="bottom" id="IVU-aY-91O"/>
                         <constraint firstItem="dWX-cw-Vye" firstAttribute="leading" secondItem="Sx1-Eg-QqT" secondAttribute="leading" id="SW9-wy-hTa"/>
@@ -71,6 +81,7 @@
                         <constraint firstItem="dWX-cw-Vye" firstAttribute="top" secondItem="Sx1-Eg-QqT" secondAttribute="top" id="aZY-xw-ye3"/>
                         <constraint firstAttribute="trailing" secondItem="5et-6F-yVg" secondAttribute="trailing" id="aeX-g5-tMt"/>
                         <constraint firstAttribute="bottom" secondItem="dWX-cw-Vye" secondAttribute="bottom" id="dbl-wc-vkD"/>
+                        <constraint firstItem="caV-0D-KSQ" firstAttribute="centerY" secondItem="Sx1-Eg-QqT" secondAttribute="centerY" constant="-20" id="gv9-gp-Tm3"/>
                         <constraint firstItem="TcN-JR-Ldb" firstAttribute="leading" secondItem="Sx1-Eg-QqT" secondAttribute="leading" id="lWM-Lx-e5G"/>
                     </constraints>
                 </customView>

+ 33 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditPDFTextPropertyViewController.swift

@@ -28,7 +28,11 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     @IBOutlet var colorGroup: ComponentCColorGroup!
     @IBOutlet var colorSlider: ComponentSlider!
     @IBOutlet var colorOpacitySelect: ComponentSelect!
-     
+    
+    @IBOutlet var alignmentBGView: NSView!
+    
+    private var alignmentController: KMNAlignmentController?
+    
     private var familyNames = CPDFFont.familyNames
     
     private let fontStyle_boldItem: ComponentCSelectorProperty = ComponentCSelectorProperty.init(size: .m, state: .normal, iconImage: NSImage(named: "fontStyle_bold"), identifier: "fontStyle_bold")
@@ -157,6 +161,15 @@ class KMEditPDFTextPropertyViewController: NSViewController {
             colorOpacitySelect.updateMenuItemsArr(opacityItems)
         }
         colorOpacitySelect.delegate = self
+        
+        
+        if alignmentController == nil {
+            alignmentController = KMNAlignmentController.init()
+        }
+        alignmentController?.view.frame = alignmentBGView.bounds
+        alignmentController?.view.autoresizingMask = [.width, .height]
+        alignmentController?.delegate = self
+        alignmentBGView.addSubview(alignmentController!.view)
     }
     
     func reloadData() {
@@ -166,7 +179,16 @@ class KMEditPDFTextPropertyViewController: NSViewController {
             currentArea = nil
         } else if areas.count == 1 {
             currentArea = areas.first
-        } else if areas.count == 2 {
+            
+            alignmentBGView.isHidden = true
+        } else if areas.count > 1 {
+            alignmentBGView.isHidden = false
+            if areas.count == 2 {
+                alignmentController?.updateMulti(false)
+            } else {
+                alignmentController?.updateMulti(true)
+            }
+            
             currentArea = nil
         }
         
@@ -388,3 +410,12 @@ extension KMEditPDFTextPropertyViewController: ComponentCSelectorGroupDelegate {
         
     }
 }
+
+
+//MARK: - KMNAlignmentControllerDelegate
+extension KMEditPDFTextPropertyViewController: KMNAlignmentControllerDelegate {
+    func alignmentControllerDidClick(_ controller: KMNAlignmentController, _ alignmentType: KMPDFActiveFormsAlignType) {
+        pdfView?.changeEditingAreas(alignmentType)
+        
+    }
+}

+ 1 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditPDFTextPropertyViewController.xib

@@ -8,6 +8,7 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMEditPDFTextPropertyViewController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
+                <outlet property="alignmentBGView" destination="1CD-Du-dse" id="Lsm-Z3-p9V"/>
                 <outlet property="backgroundView" destination="TEL-xs-Bvc" id="Ycv-he-P2R"/>
                 <outlet property="colorBGView" destination="rHP-Qg-AU6" id="cbC-Fc-nTM"/>
                 <outlet property="colorGroup" destination="aGL-sp-GfS" id="eOk-Ld-bl8"/>

+ 0 - 52
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDFTextManager.swift

@@ -93,11 +93,6 @@ enum KMEditPDFTextFontType: String, CaseIterable {
         let values = KMEditPDFTextFontType.allValues()
         return values
     }
-
-//    @objc static func typeOfRawValue(_ value: NSString) -> KMEditPDFTextFontType {
-//        let stringValue = value as String
-//        return KMEditPDFTextFontType(rawValue: stringValue) ?? .customize
-//    }
 }
 
 //默认字体样式
@@ -137,26 +132,6 @@ let defaultFontStyles: Array = ["Regular", "Bold", "Italic", "Bold Italic"]
     var textPresuppositionFontNameArray: [String] = []
 }
 
-//MARK: - Text FontNamees Data
-extension KMEditPDFTextManager {
-    func fetchTextFontNames() -> [String] {
-        return textFontNames
-    }
-    
-    func updateTextFontNames(listView: CPDFListView?) -> [String] {
-        if textFontNames.count == 0 {
-            
-            var fontNameArray: [String] = []
-            for font in CPDFAnnotationModel.supportFonts() {
-                let fontName = (font as? NSDictionary)!.allKeys.first
-                fontNameArray.append(fontName as! String)
-            }
-            textFontNames = fontNameArray
-             
-        }
-        return textFontNames
-    }
-}
 
 //MARK: - public
 //MARK: OC
@@ -549,30 +524,3 @@ extension KMEditPDFTextManager {
         return resultModel
     }
 }
-
-extension KMEditPDFTextManager {
-    func transformAreaTextFontName(fontName: String, fontNames: [String] = []) -> String {
-        var resultString = fontName
-        var name = KMEditPDFTextManager.manager.fetchFontName(fontName: resultString)
-        var style = KMEditPDFTextManager.manager.fetchFontStyle(fontName: resultString)
-        
-        if !fontNames.contains(name) || fontName == "SimSun" {
-            name = "Helvetica"
-        }
-        
-        if name.contains("SimSun") {
-            name = name.replacingOccurrences(of: "SimSun", with: "Helvetica")
-        }
-        
-        if name.contains("Arial") {
-            name = name.replacingOccurrences(of: "Arial", with: "Helvetica")
-        }
-        
-        if style.count == 0 {
-            resultString = name
-        } else {
-            resultString = name + "-" + style
-        }
-        return resultString
-    }
-}

File diff ditekan karena terlalu besar
+ 0 - 1494
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift


+ 64 - 8
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -3794,9 +3794,6 @@
 		BB69C962299116FD0001A9B1 /* horizontal_line.pdf in Resources */ = {isa = PBXBuildFile; fileRef = BB69C95B299116FD0001A9B1 /* horizontal_line.pdf */; };
 		BB69C963299116FD0001A9B1 /* horizontal_line.pdf in Resources */ = {isa = PBXBuildFile; fileRef = BB69C95B299116FD0001A9B1 /* horizontal_line.pdf */; };
 		BB69C964299116FD0001A9B1 /* horizontal_line.pdf in Resources */ = {isa = PBXBuildFile; fileRef = BB69C95B299116FD0001A9B1 /* horizontal_line.pdf */; };
-		BB6AAF4E2C217249009C4CB1 /* KMEditPDfHanddler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6AAF4D2C217248009C4CB1 /* KMEditPDfHanddler.swift */; };
-		BB6AAF4F2C217249009C4CB1 /* KMEditPDfHanddler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6AAF4D2C217248009C4CB1 /* KMEditPDfHanddler.swift */; };
-		BB6AAF502C217249009C4CB1 /* KMEditPDfHanddler.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6AAF4D2C217248009C4CB1 /* KMEditPDfHanddler.swift */; };
 		BB6AAF532C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6AAF512C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift */; };
 		BB6AAF542C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6AAF512C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift */; };
 		BB6AAF552C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6AAF512C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift */; };
@@ -4285,6 +4282,24 @@
 		BB90E4F62AF3B71800B04B9F /* KMPDFWatermarkData.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB90E4F52AF3B71800B04B9F /* KMPDFWatermarkData.swift */; };
 		BB90E4F72AF3B71800B04B9F /* KMPDFWatermarkData.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB90E4F52AF3B71800B04B9F /* KMPDFWatermarkData.swift */; };
 		BB90E4F82AF3B71800B04B9F /* KMPDFWatermarkData.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB90E4F52AF3B71800B04B9F /* KMPDFWatermarkData.swift */; };
+		BB9138362CEE089C00BAB4A7 /* KMCropController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9138342CEE089C00BAB4A7 /* KMCropController.swift */; };
+		BB9138372CEE089C00BAB4A7 /* KMCropController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9138342CEE089C00BAB4A7 /* KMCropController.swift */; };
+		BB9138382CEE089C00BAB4A7 /* KMCropController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9138342CEE089C00BAB4A7 /* KMCropController.swift */; };
+		BB9138392CEE089C00BAB4A7 /* KMCropController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB9138352CEE089C00BAB4A7 /* KMCropController.xib */; };
+		BB91383A2CEE089C00BAB4A7 /* KMCropController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB9138352CEE089C00BAB4A7 /* KMCropController.xib */; };
+		BB91383B2CEE089C00BAB4A7 /* KMCropController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB9138352CEE089C00BAB4A7 /* KMCropController.xib */; };
+		BB91383F2CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB91383D2CEE08C100BAB4A7 /* KMCropPropertyController.swift */; };
+		BB9138402CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB91383D2CEE08C100BAB4A7 /* KMCropPropertyController.swift */; };
+		BB9138412CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB91383D2CEE08C100BAB4A7 /* KMCropPropertyController.swift */; };
+		BB9138422CEE08C100BAB4A7 /* KMCropPropertyController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB91383E2CEE08C100BAB4A7 /* KMCropPropertyController.xib */; };
+		BB9138432CEE08C100BAB4A7 /* KMCropPropertyController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB91383E2CEE08C100BAB4A7 /* KMCropPropertyController.xib */; };
+		BB9138442CEE08C100BAB4A7 /* KMCropPropertyController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB91383E2CEE08C100BAB4A7 /* KMCropPropertyController.xib */; };
+		BB9138472CEE08D400BAB4A7 /* KMCropCoverController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9138452CEE08D400BAB4A7 /* KMCropCoverController.swift */; };
+		BB9138482CEE08D400BAB4A7 /* KMCropCoverController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9138452CEE08D400BAB4A7 /* KMCropCoverController.swift */; };
+		BB9138492CEE08D400BAB4A7 /* KMCropCoverController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9138452CEE08D400BAB4A7 /* KMCropCoverController.swift */; };
+		BB91384A2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB9138462CEE08D400BAB4A7 /* KMCropCoverController.xib */; };
+		BB91384B2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB9138462CEE08D400BAB4A7 /* KMCropCoverController.xib */; };
+		BB91384C2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB9138462CEE08D400BAB4A7 /* KMCropCoverController.xib */; };
 		BB93C3162B9EFC9800A926E6 /* AITranslateTipWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB93C3142B9EFC9800A926E6 /* AITranslateTipWindowController.swift */; };
 		BB93C3172B9EFC9800A926E6 /* AITranslateTipWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB93C3142B9EFC9800A926E6 /* AITranslateTipWindowController.swift */; };
 		BB93C3182B9EFC9800A926E6 /* AITranslateTipWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB93C3142B9EFC9800A926E6 /* AITranslateTipWindowController.swift */; };
@@ -7270,7 +7285,6 @@
 		BB69C959299116FD0001A9B1 /* five_line_score.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = five_line_score.pdf; sourceTree = "<group>"; };
 		BB69C95A299116FD0001A9B1 /* plaid.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = plaid.pdf; sourceTree = "<group>"; };
 		BB69C95B299116FD0001A9B1 /* horizontal_line.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = horizontal_line.pdf; sourceTree = "<group>"; };
-		BB6AAF4D2C217248009C4CB1 /* KMEditPDfHanddler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMEditPDfHanddler.swift; sourceTree = "<group>"; };
 		BB6AAF512C2175A3009C4CB1 /* KMEditPDFPopToolBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMEditPDFPopToolBarController.swift; sourceTree = "<group>"; };
 		BB6AAF522C2175A3009C4CB1 /* KMEditPDFPopToolBarController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMEditPDFPopToolBarController.xib; sourceTree = "<group>"; };
 		BB6B43652A04919200E02B54 /* KMBaseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBaseViewController.swift; sourceTree = "<group>"; };
@@ -7476,6 +7490,12 @@
 		BB90E4ED2AF3546500B04B9F /* NSUserDefaultsController+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSUserDefaultsController+KMExtension.swift"; sourceTree = "<group>"; };
 		BB90E4F12AF37F9F00B04B9F /* KMCustomViewButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCustomViewButton.swift; sourceTree = "<group>"; };
 		BB90E4F52AF3B71800B04B9F /* KMPDFWatermarkData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFWatermarkData.swift; sourceTree = "<group>"; };
+		BB9138342CEE089C00BAB4A7 /* KMCropController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropController.swift; sourceTree = "<group>"; };
+		BB9138352CEE089C00BAB4A7 /* KMCropController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMCropController.xib; sourceTree = "<group>"; };
+		BB91383D2CEE08C100BAB4A7 /* KMCropPropertyController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropPropertyController.swift; sourceTree = "<group>"; };
+		BB91383E2CEE08C100BAB4A7 /* KMCropPropertyController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMCropPropertyController.xib; sourceTree = "<group>"; };
+		BB9138452CEE08D400BAB4A7 /* KMCropCoverController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropCoverController.swift; sourceTree = "<group>"; };
+		BB9138462CEE08D400BAB4A7 /* KMCropCoverController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMCropCoverController.xib; sourceTree = "<group>"; };
 		BB93C3142B9EFC9800A926E6 /* AITranslateTipWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AITranslateTipWindowController.swift; sourceTree = "<group>"; };
 		BB93C3152B9EFC9800A926E6 /* AITranslateTipWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AITranslateTipWindowController.xib; sourceTree = "<group>"; };
 		BB93CDE42AE757A000B29C57 /* KMToolbarItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarItemView.swift; sourceTree = "<group>"; };
@@ -10060,7 +10080,6 @@
 			isa = PBXGroup;
 			children = (
 				BB7185492C2B0DC500C1156B /* KMEditPDFModel.swift */,
-				BB6AAF4D2C217248009C4CB1 /* KMEditPDfHanddler.swift */,
 				ADA910292A272CE2003352F0 /* KMEditPDFTextManager.swift */,
 			);
 			path = Manager;
@@ -11449,6 +11468,7 @@
 			children = (
 				BBD14F552CDA02570077D52E /* KMEditToolbarView.swift */,
 				BBD14F592CDA02640077D52E /* KMEditToolbarView.xib */,
+				BB9138332CEE07D200BAB4A7 /* Crop */,
 				BB8AA5342CC65C310084F183 /* KMNAlignmentController */,
 				BB0F585F2CDB70BD00B4D353 /* SinglePagePDFController */,
 				BBEC00AB295C2AB500A26C98 /* Bates */,
@@ -13580,6 +13600,27 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		BB9138332CEE07D200BAB4A7 /* Crop */ = {
+			isa = PBXGroup;
+			children = (
+				BB9138342CEE089C00BAB4A7 /* KMCropController.swift */,
+				BB9138352CEE089C00BAB4A7 /* KMCropController.xib */,
+				BB91383C2CEE08AA00BAB4A7 /* Views */,
+			);
+			path = Crop;
+			sourceTree = "<group>";
+		};
+		BB91383C2CEE08AA00BAB4A7 /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				BB91383D2CEE08C100BAB4A7 /* KMCropPropertyController.swift */,
+				BB91383E2CEE08C100BAB4A7 /* KMCropPropertyController.xib */,
+				BB9138452CEE08D400BAB4A7 /* KMCropCoverController.swift */,
+				BB9138462CEE08D400BAB4A7 /* KMCropCoverController.xib */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
 		BB93C3132B9EFC9800A926E6 /* AITranslateTipWindowController */ = {
 			isa = PBXGroup;
 			children = (
@@ -15457,6 +15498,7 @@
 				BB1969D12B2833FF00922736 /* KMProgressWindowController.xib in Resources */,
 				ADE86A7B2B0221E100414DFA /* KMSecurityWindowController.xib in Resources */,
 				BBC8A7752B0640C200FA9377 /* KMBotaSearchViewController.xib in Resources */,
+				BB9138392CEE089C00BAB4A7 /* KMCropController.xib in Resources */,
 				BBAFDA7D2B4CDE1D00278BC3 /* KMPDFCropWindowController.xib in Resources */,
 				9F69DBBD2B55014F003D4C45 /* KMAnnotationButtonWidgetAppearanceViewController.xib in Resources */,
 				BBA9223B2B4E97540061057A /* KMPurchaseLimitWindowController.xib in Resources */,
@@ -15474,6 +15516,7 @@
 				BB1B0AEF2B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */,
 				AD7D5CF02B96B9E1006562CD /* KMBookmarkOutlineRowView.xib in Resources */,
 				F328C0B92CA16F0500BFDD23 /* KMPresentationTopViewController.xib in Resources */,
+				BB9138422CEE08C100BAB4A7 /* KMCropPropertyController.xib in Resources */,
 				ADBC372429CA923E00D93208 /* KMComparative.plist in Resources */,
 				653647B62CDCA5DE00CDB13E /* KMBatchOperateBaseWindowController.xib in Resources */,
 				AD3AAD562B0D87E500DE5FE7 /* KMCompareThumbItem.xib in Resources */,
@@ -15619,6 +15662,7 @@
 				BBFE14D22BFD7FC300176992 /* KMCouponDueWindowController.xib in Resources */,
 				BB4F7E912B0C80000077EC8C /* KMNoteColorCollectionViewItem.xib in Resources */,
 				ADF1569C29A63CBF001D1018 /* KMLightMember.xcassets in Resources */,
+				BB91384A2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */,
 				899700EB28F3E4D3009AF911 /* MainWindowController.xib in Resources */,
 				9FF371C42C69A6BB005F9CC5 /* CAreaSettingWindowController.xib in Resources */,
 				ADD1B6AE2941E97F00C3FFF7 /* KMPrintWindowController.xib in Resources */,
@@ -16004,6 +16048,7 @@
 				BB7F7C0129AA586900A3E4E7 /* signAdd.png in Resources */,
 				BB6DD81029347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				ADBC2D16299CCD10006280C8 /* KMTextfieldButton.xib in Resources */,
+				BB91384B2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */,
 				F3A0F85D2CC940DD00E7373F /* KMNPDFInsertBlankWindowController.xib in Resources */,
 				BB183DDB2B4EBE1B00F99C7E /* KMTrialSuccessController.xib in Resources */,
 				9FF94F0D29A62B5000B1EF69 /* KMDesignSelect.xib in Resources */,
@@ -16232,6 +16277,7 @@
 				BBBE20982B21B1DF00509C4E /* KMPDFInsertWindowController.xib in Resources */,
 				BBDF18002CD47F8500ACDB15 /* KMEditDocumentController.xib in Resources */,
 				BBE7890C2CBD2464008086E2 /* TooltipVC.xib in Resources */,
+				BB9138432CEE08C100BAB4A7 /* KMCropPropertyController.xib in Resources */,
 				BB031B822C47BB090099F7AD /* KMUserFbListHeaderItemView.xib in Resources */,
 				BB51074329A61B4100978662 /* ProgressSheet.xib in Resources */,
 				BBBE20902B2164CD00509C4E /* KMPDFEditWindowController.xib in Resources */,
@@ -16358,6 +16404,7 @@
 				BB3A429B2B4BC75D006D0642 /* NotesPanel.xib in Resources */,
 				BBB789B82BE8BF2400F7E09C /* AIChatDefaultTIpItem.xib in Resources */,
 				657865F72CE1E7DD00AFE2DB /* KMBookMarkViewController.xib in Resources */,
+				BB91383A2CEE089C00BAB4A7 /* KMCropController.xib in Resources */,
 				89316826296D73CC0073EA59 /* KMSignatureAnnotationViewController.xib in Resources */,
 				BB2EDF50296E63E5003BCF58 /* KMPageEditInsertCustomPageWindowController.xib in Resources */,
 				AD3AAD572B0D87E500DE5FE7 /* KMCompareThumbItem.xib in Resources */,
@@ -16428,6 +16475,7 @@
 				BB2F9AA82AFC8D5A00F9DD93 /* KMProfileInfoWindowController.xib in Resources */,
 				BB89723F294B3C840045787C /* KMWatermarkPropertyController.xib in Resources */,
 				BBE0688F2CDDF116000512BC /* KMBatesController.xib in Resources */,
+				BB91384C2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */,
 				BBE7890A2CBD2464008086E2 /* NavigationDemoVC.xib in Resources */,
 				9FF371D32C69B8BC005F9CC5 /* CDistanceMeasureInfoWindowController.xib in Resources */,
 				9F853A042947137500DF644E /* default-icon.pdf in Resources */,
@@ -16863,6 +16911,7 @@
 				BB51074429A61B4100978662 /* ProgressSheet.xib in Resources */,
 				BBFA1CD32B609EC50053AD4A /* KMScreenShotMaskWindowController.xib in Resources */,
 				89316857296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
+				BB9138442CEE08C100BAB4A7 /* KMCropPropertyController.xib in Resources */,
 				9FBA0EEB28FFC2FE001117AF /* Image.xcassets in Resources */,
 				BBA922172B4E783F0061057A /* KMPurchaseCompareDMGWindowController.xib in Resources */,
 				AD055E8F2B88304E0035F824 /* BookmarkSheet.xib in Resources */,
@@ -16918,6 +16967,7 @@
 				BB52F5942CC245B3007418DB /* KMLinkPopupEmailView.xib in Resources */,
 				BB5EC3672C2BDC9D0090EF27 /* KMTextAlignmentController.xib in Resources */,
 				BB42A5DC2B8F0F8C0092C524 /* KMTabbingHintWindowController.xib in Resources */,
+				BB91383B2CEE089C00BAB4A7 /* KMCropController.xib in Resources */,
 				BB716D652CDDB710009787ED /* KMHFTemplateController.xib in Resources */,
 				BBB376A92B10A7FD009539CC /* a_3b.png in Resources */,
 				9F8539F82947137500DF644E /* sadfavicon.png in Resources */,
@@ -17290,6 +17340,7 @@
 				BBE7889C2CBD2463008086E2 /* DropdownDemoVC.swift in Sources */,
 				9F53D54F2AD677A000CCF9D8 /* CPDFListViewConfig.swift in Sources */,
 				AD7D5CB32B9070AF006562CD /* KMSyncDot.swift in Sources */,
+				BB91383F2CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */,
 				BB2A98522B270B3300647AF3 /* KMBatchAddBackgroundOperation.swift in Sources */,
 				9F0CB4C4298625F400007028 /* NSColor+KMExtensions.swift in Sources */,
 				BBD1F78F296FE6A500343885 /* KMPageEditSplitWindowController.swift in Sources */,
@@ -17315,6 +17366,7 @@
 				BB8810762B4F785200AFA63E /* KMUnlockAlertViewController.m in Sources */,
 				BB2C846F2BAE716600AF6142 /* KMButtonLayer.swift in Sources */,
 				9FCFEC9C2AD152FA00EAD2CB /* CustomAlertView.swift in Sources */,
+				BB9138472CEE08D400BAB4A7 /* KMCropCoverController.swift in Sources */,
 				ADDF83592B391A5C00A81A4E /* CDSignatureCertificateStateViewController.swift in Sources */,
 				9FD0D2A32AD4ECA800DA3FF8 /* KMPDFEditAppendCustomView.swift in Sources */,
 				9FCFEC842AD0EF6700EAD2CB /* KMCustomButtonPopMenuViewController.swift in Sources */,
@@ -17446,6 +17498,7 @@
 				9F1FE4A829406E4700E952CA /* CTBrowserWindowController.m in Sources */,
 				BBFEF71B2B3A784200C28AC0 /* KMSystemEditMenu.swift in Sources */,
 				9FF371BF2C69A6BB005F9CC5 /* CAreaMeasureInfoWindowController.swift in Sources */,
+				BB9138362CEE089C00BAB4A7 /* KMCropController.swift in Sources */,
 				9FDD0F802952FC36000C4DAD /* KMDesignToken.swift in Sources */,
 				BB8810CA2B4F97D000AFA63E /* VerificationManager.m in Sources */,
 				F30B22852CB8D9630041002E /* KMNQuickToolCollectionViewItem.swift in Sources */,
@@ -17705,7 +17758,6 @@
 				BB5A9D3C2CB6520100F64C1F /* KMNHomeViewController.swift in Sources */,
 				BBE788CF2CBD2463008086E2 /* InputDemoVC.swift in Sources */,
 				BB147005299DC0D100784A6A /* OIDFieldMapping.m in Sources */,
-				BB6AAF4E2C217249009C4CB1 /* KMEditPDfHanddler.swift in Sources */,
 				BBB9B32E299A5D6D004F3235 /* GTMAppAuthFetcherAuthorization.m in Sources */,
 				BB3198162AC55E6D00107371 /* CPDFDocument+KMExtension.swift in Sources */,
 				F3A0F8592CC940DD00E7373F /* KMNPDFInsertBlankWindowController.swift in Sources */,
@@ -19096,7 +19148,6 @@
 				89E4E7832967BF5A002DBA6F /* KMCustomizeStampViewController.m in Sources */,
 				BB897252294C3F660045787C /* KMMenuTableView.swift in Sources */,
 				9FCFEC912AD11E5F00EAD2CB /* KMSplitView.swift in Sources */,
-				BB6AAF4F2C217249009C4CB1 /* KMEditPDfHanddler.swift in Sources */,
 				9F1FE4CD29406E4700E952CA /* CTTabContentsController.m in Sources */,
 				AD7D5CE52B96B394006562CD /* KMBookmarkOutlineSeparatorCellView.swift in Sources */,
 				ADDF83332B391A5C00A81A4E /* CPDFAnnotation+PDFListView.m in Sources */,
@@ -19275,6 +19326,7 @@
 				BB146FEB299DC0D100784A6A /* GTLRDuration.m in Sources */,
 				BB89726E294DB67D0045787C /* KMWatermarkAdjectiveBaseView.swift in Sources */,
 				ADDDCE282B43A32A005B4AB5 /* AppSandboxFileAccessOpenSavePanelDelegate.m in Sources */,
+				BB9138402CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */,
 				BB853C9A2AF8E39D009C20C1 /* KMRemovePasswordOperationQueue.swift in Sources */,
 				89D2D2C6294972B900BFF5FE /* KMFormCellView.swift in Sources */,
 				ADAFDA432AE8F3C400F084BC /* KMAdvertisementTimeStampConversion.swift in Sources */,
@@ -19413,6 +19465,7 @@
 				BB79E71A2CE617CB0052CAD5 /* KMEditImageController.swift in Sources */,
 				9F9461882BD644BF0076574B /* KMTableCellData.m in Sources */,
 				ADDF837E2B391A5D00A81A4E /* DSignatureDetailsViewController.swift in Sources */,
+				BB9138372CEE089C00BAB4A7 /* KMCropController.swift in Sources */,
 				9F1FE50029406E4700E952CA /* CTTabStripModel.m in Sources */,
 				BB03D69D2B0249A2008C9976 /* KMPDFEditInsertPageWindow.swift in Sources */,
 				BB147042299DC0D200784A6A /* OIDClientMetadataParameters.m in Sources */,
@@ -19495,6 +19548,7 @@
 				656C1E322CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */,
 				651675E42CE3313500019A20 /* KMOutlineEditViewController.swift in Sources */,
 				BB2EDF6B296ECE17003BCF58 /* KMPageEditInsertTypeItemView.swift in Sources */,
+				BB9138482CEE08D400BAB4A7 /* KMCropCoverController.swift in Sources */,
 				9F3D818829A0A9A60087B5AD /* KMDesignButton.swift in Sources */,
 				AD7D5CA12B8F34EC006562CD /* SKPDFSynchronizer.m in Sources */,
 				BB14703C299DC0D200784A6A /* OIDErrorUtilities.m in Sources */,
@@ -19695,6 +19749,7 @@
 				BBB14A592978E75D00936EDB /* KMRedactMutilPageFlagWindowController.swift in Sources */,
 				9FCFEC8E2AD10A4400EAD2CB /* KMTextFieldSheetController.swift in Sources */,
 				BB2F9AB52AFCC2F800F9DD93 /* KMProfileInfoWindowController.swift in Sources */,
+				BB9138412CEE08C100BAB4A7 /* KMCropPropertyController.swift in Sources */,
 				ADE86A822B02220700414DFA /* KMSecurityView.swift in Sources */,
 				BB671A032AD2D2A0003D44D5 /* CPDFStampAnnotation+PDFListView.swift in Sources */,
 				BB8F4578295AFA2D0037EA22 /* KMHeaderFooterAdjectiveInfoBaseView.swift in Sources */,
@@ -20264,7 +20319,6 @@
 				F3DB85F42CCA209600D0AFDE /* KMNBaseWindowController.swift in Sources */,
 				BB5A9D3E2CB6520100F64C1F /* KMNHomeViewController.swift in Sources */,
 				BBE788D12CBD2463008086E2 /* InputDemoVC.swift in Sources */,
-				BB6AAF502C217249009C4CB1 /* KMEditPDfHanddler.swift in Sources */,
 				9FAAA340290FECA70046FFCE /* NSImage+QuickLook.swift in Sources */,
 				651675D82CE3312000019A20 /* KMTocOutlineView.swift in Sources */,
 				BB5BE4EF2B060E3000D51BF2 /* KMLanguageViewController.swift in Sources */,
@@ -20365,6 +20419,7 @@
 				AD58F4102B1DAAA800299EE0 /* KMPrintDefaultView.swift in Sources */,
 				BBBAED0D2B57D55300266BD3 /* SKTransitionController.m in Sources */,
 				BBB3FF9E2B56852700145C4A /* NSDocument+KMExtensions.swift in Sources */,
+				BB9138382CEE089C00BAB4A7 /* KMCropController.swift in Sources */,
 				9FDD0F7E2952F2D8000C4DAD /* KMBaseParser.swift in Sources */,
 				BB1A916C2AFB7868005E5FD8 /* KMConvertWindowController.swift in Sources */,
 				9FCFEC7E2AC579F600EAD2CB /* CPDFListSignatureAnnotation.swift in Sources */,
@@ -20372,6 +20427,7 @@
 				9FDCD8182B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */,
 				BB1B0AEE2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				BB2C848A2BAE753F00AF6142 /* KMBotaTools.swift in Sources */,
+				BB9138492CEE08D400BAB4A7 /* KMCropCoverController.swift in Sources */,
 				9FCFEC9A2AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				BBC745EC295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */,
 				BB90E4F02AF3546500B04B9F /* NSUserDefaultsController+KMExtension.swift in Sources */,

+ 157 - 29
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -2216,22 +2216,6 @@
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "CE1776F6-C173-4274-87D5-731DC2D7E98D"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/NSObject/TextFieldFormatter.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "30"
-            endingLineNumber = "30"
-            landmarkName = "-stringForObjectValue:"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -2306,13 +2290,13 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "935"
-            endingLineNumber = "935"
+            startingLineNumber = "938"
+            endingLineNumber = "938"
             landmarkName = "removePDFWatermark()"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bdaeb1"
+                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bdaf12"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -2322,12 +2306,12 @@
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "935"
-                  endingLineNumber = "935"
-                  offsetFromSymbolStart = "1740">
+                  startingLineNumber = "938"
+                  endingLineNumber = "938"
+                  offsetFromSymbolStart = "1464">
                </Location>
                <Location
-                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bdaeb1"
+                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bdaf12"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -2337,8 +2321,8 @@
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "935"
-                  endingLineNumber = "935"
+                  startingLineNumber = "938"
+                  endingLineNumber = "938"
                   offsetFromSymbolStart = "1496">
                </Location>
             </Locations>
@@ -3296,10 +3280,42 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "2014"
-            endingLineNumber = "2014"
+            startingLineNumber = "2017"
+            endingLineNumber = "2017"
             landmarkName = "pdfViewEditingAddImageArea(_:add:add:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "842AC4D6-5CA6-440F-A002-6D891884C3CD - 144f1057c5281bee"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "2017"
+                  endingLineNumber = "2017"
+                  offsetFromSymbolStart = "172">
+               </Location>
+               <Location
+                  uuid = "842AC4D6-5CA6-440F-A002-6D891884C3CD - 144f1057c5281bee"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "2017"
+                  endingLineNumber = "2017"
+                  offsetFromSymbolStart = "184">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
@@ -3312,10 +3328,122 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1994"
-            endingLineNumber = "1994"
+            startingLineNumber = "1997"
+            endingLineNumber = "1997"
             landmarkName = "pdfViewEditingSelectionDidChanged(_:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "18021D19-EAF7-4279-A121-953E8941B3AE - ce71ce32deb310a"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingSelectionDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1999"
+                  endingLineNumber = "1999"
+                  offsetFromSymbolStart = "36">
+               </Location>
+               <Location
+                  uuid = "18021D19-EAF7-4279-A121-953E8941B3AE - ce71ce32deb32f5"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingSelectionDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1998"
+                  endingLineNumber = "1998"
+                  offsetFromSymbolStart = "36">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "E375F48F-0F5A-4802-A11B-D3EF9212774B"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/Toolbar/KMToolbarViewController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "237"
+            endingLineNumber = "237"
+            landmarkName = "leftControllButtonAction(item:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "3D525535-AA5C-4369-994C-79BB75E05132"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "42"
+            endingLineNumber = "42"
+            landmarkName = "refreshUI()"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "3D525535-AA5C-4369-994C-79BB75E05132 - aecda427e4a55e2e"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditDocumentController.layoutDocumentView() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "42"
+                  endingLineNumber = "42"
+                  offsetFromSymbolStart = "36">
+               </Location>
+               <Location
+                  uuid = "3D525535-AA5C-4369-994C-79BB75E05132 - cb599578e03d3622"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditDocumentController.refreshUI() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/SinglePagePDFController/KMEditDocumentController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "42"
+                  endingLineNumber = "42"
+                  offsetFromSymbolStart = "884">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "CA1F07F0-52C0-4B88-AC73-5FBF0858023E"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "842"
+            endingLineNumber = "842"
+            landmarkName = "customCropModel(sender:)"
+            landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
    </Breakpoints>