Browse Source

【2025】【Markup】签名列表处理

niehaoyu 3 months ago
parent
commit
253e6d862e
19 changed files with 555 additions and 137 deletions
  1. 52 0
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFSignatureAnnotation+PDFListView.swift
  2. 1 12
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFStampAnnotation+PDFListView.swift
  3. 24 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.swift
  4. 2 2
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMImageAccessoryController.xib
  5. 3 23
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignature.swift
  6. 5 22
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureAnnotationViewController.m
  7. 3 3
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureAnnotationViewController.xib
  8. 81 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureController.swift
  9. 91 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureController.xib
  10. 3 3
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureHelpViewController.xib
  11. 142 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureListController.swift
  12. 88 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureListController.xib
  13. 11 7
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureManager.swift
  14. 2 2
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSigntureViewItem.xib
  15. 0 17
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/Controllers/KMCreateStampController.swift
  16. 0 19
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/Controllers/KMCreateStampController.xib
  17. 1 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/CreateStamp/Controller/KMStampCreaterWindowController.swift
  18. 8 5
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/Views/KMStampListItem.swift
  19. 38 22
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

+ 52 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFSignatureAnnotation+PDFListView.swift

@@ -15,3 +15,55 @@ import Foundation
         return true
     }
 }
+
+//MARK: - Update
+extension CPDFSignatureAnnotation {
+     
+    class func rotateRight(_ annotations: [CPDFSignatureAnnotation], withPDFView pdfView: CPDFListView?) {
+        guard let pdfView = pdfView else {
+            return
+        }
+        
+        for annotation in annotations {
+            var rotation = annotation.annotationRotation
+            rotation += 90
+            annotation.annotationRotation = rotation
+            
+            var rect = annotation.bounds
+            let width = rect.size.width
+            let height = rect.size.height
+            rect.origin.x = rect.origin.x + (width - height)/2.0
+            rect.origin.y = rect.origin.y - (width - height)/2.0
+            rect.size.width = height
+            rect.size.height = width
+            annotation.bounds = rect
+            
+        }
+        pdfView.setNeedsDisplayMultiAnnotations(annotations)
+    }
+    
+    class func rotateLeft(_ annotations: [CPDFSignatureAnnotation], withPDFView pdfView: CPDFListView?) {
+        guard let pdfView = pdfView else {
+            return
+        }
+        
+        for annotation in annotations {
+            var rotation = annotation.annotationRotation
+            rotation -= 90
+            
+            annotation.annotationRotation = rotation
+            
+            var rect = annotation.bounds
+            let width = rect.size.width
+            let height = rect.size.height
+            rect.origin.x = rect.origin.x + (width - height)/2.0
+            rect.origin.y = rect.origin.y - (width - height)/2.0
+            rect.size.width = height
+            rect.size.height = width
+            annotation.bounds = rect
+            
+        }
+        pdfView.setNeedsDisplayMultiAnnotations(annotations)
+    }
+    
+}

+ 1 - 12
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFStampAnnotation+PDFListView.swift

@@ -90,18 +90,7 @@ import Foundation
 
 //MARK: - Update
 extension CPDFStampAnnotation {
-    
-    class func update(_ annotations: [CPDFStampAnnotation], _ opacity: CGFloat, withPDFView pdfView: CPDFListView?) {
-        guard let pdfView = pdfView else {
-            return
-        }
-        for annotation in annotations {
-            annotation.opacity = opacity
-            
-        }
-        pdfView.setNeedsDisplayMultiAnnotations(annotations)
-    }
-    
+     
     class func rotateRight(_ annotations: [CPDFStampAnnotation], withPDFView pdfView: CPDFListView?) {
         guard let pdfView = pdfView else {
             return

+ 24 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.swift

@@ -40,9 +40,13 @@ class KMRightSideController: NSViewController {
     var rectangle_Controller: KMRectangleController?
     var line_Controller: KMLineController?
     var freeText_Controller: KMTextBoxController?
+    
     var stamplist_Controller: KMStampListController?
     var stamp_Controller: KMStampController?
     
+    var signature_Controller: KMSignatureController?
+    var signatureList_Controller: KMSignatureListController?
+    
     //Edit
     var edit_textController: KMEditPDFTextPropertyViewController?
     var edit_imageController: KMEditImageController?
@@ -176,6 +180,8 @@ class KMRightSideController: NSViewController {
             titleLabel.stringValue = KMLocalizedString("Crop")
         } else if (contentViewController is KMStampListController) || (contentViewController is KMStampController) {
             titleLabel.stringValue = KMLocalizedString("Stamp")
+        } else if (contentViewController is KMSignatureListController) || (contentViewController is KMSignatureController) {
+            titleLabel.stringValue = KMLocalizedString("Sign")
         }
         
     }
@@ -342,6 +348,20 @@ class KMRightSideController: NSViewController {
                 stamplist_Controller?.pdfView = self.pdfView
                 
                 contentViewController = stamplist_Controller
+            } else if firstAnnotation is CPDFSignatureAnnotation {
+                if signature_Controller == nil {
+                    signature_Controller = KMSignatureController.init()
+                }
+                signature_Controller?.pdfView = self.pdfView
+                
+                contentViewController = signature_Controller
+            } else if subToolMode == .Sign {
+                if signatureList_Controller == nil {
+                    signatureList_Controller = KMSignatureListController.init()
+                }
+                signatureList_Controller?.pdfView = self.pdfView
+                
+                contentViewController = signatureList_Controller
             }
             else {
                 
@@ -366,6 +386,7 @@ class KMRightSideController: NSViewController {
         
     }
     
+    //MARK: - reloadData
     func reloadData() {
         let toolMode = viewManager?.toolMode ?? .None
         
@@ -400,6 +421,9 @@ class KMRightSideController: NSViewController {
         } else if (contentViewController is KMStampController) {
             (contentViewController as? KMStampController)?.reloadData()
             
+        } else if (contentViewController is KMSignatureListController) {
+            (contentViewController as? KMSignatureListController)?.reloadData()
+            
         }
         
         if toolMode == .Markup {

+ 2 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMImageAccessoryController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>

+ 3 - 23
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignature.swift

@@ -46,31 +46,12 @@ import Cocoa
     override class func classForArchiver() -> AnyClass? {
         return NSClassFromString("KMSignature")
     }
-    
-   // override class func classForKeyedUnarchiver() -> AnyClass {
-//        if let cls = objc_allocateClassPair(NSObject.self, "KMSignature", 0) {
-//            objc_registerClassPair(cls)
-////            let sel = #selector(required init(coder: NSCoder))
-//            let sel = NSSelectorFromString("initWithCoder:")
-//            let method = class_getInstanceMethod(KMSignature.self, sel)
-//            class_addMethod(cls, sel, method_getImplementation(method!), method_getTypeEncoding(method!))
-//
-//            let sel2 = NSSelectorFromString("encodeWithCoder:")
-//            let method2 = class_getInstanceMethod(KMSignature.self, sel2)
-//            class_addMethod(cls, sel2, method_getImplementation(method2!), method_getTypeEncoding(method2!))
-//
-//            return cls
-//        }
-//        return NSClassFromString("KMSignature")!
-        //return self.KMSignatureOCClass
-    //}
-    
+      
     class var KMSignatureOCClass: AnyClass {
         get {
             if let cls = objc_allocateClassPair(NSObject.self, "KMSignature", 0) {
                 objc_registerClassPair(cls)
-    //            let sel = #selector(required init(coder: NSCoder))
-                let sel = NSSelectorFromString("initWithCoder:")
+                 let sel = NSSelectorFromString("initWithCoder:")
                 let method = class_getInstanceMethod(KMSignature.self, sel)
                 class_addMethod(cls, sel, method_getImplementation(method!), method_getTypeEncoding(method!))
                 
@@ -81,8 +62,7 @@ import Cocoa
                 return cls
             }
             return NSClassFromString("KMSignature")!
-//            return KMSignature.self
-        }
+         }
     }
 
     override init() {

+ 5 - 22
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureAnnotationViewController.m

@@ -64,28 +64,22 @@ KMSigntureViewItemDelegate>
     
     [self setup];
     [self updateLanguage];
-    
-//    [self insertSignatureButton_Click:nil];
+     
 }
 
 - (void)setup {
     self.signatureLabel.font = [NSFont SFProTextSemiboldFont: 14.0];
     self.signatureLabel.textColor = [KMAppearance KMColor_Layout_H0];
-//    [NSColor km_initWithHex:@"#252629" alpha:1];
-    
+ 
     self.emptyTipLabel.font = [NSFont SFProTextRegularFont: 14.0];
     self.emptyTipLabel.textColor = [NSColor km_initWithHex:@"#616469" alpha:1];
     
     _addButton.wantsLayer = YES;
-    _addButton.layer.backgroundColor = [NSColor colorWithRed:78/255. green:127/255. blue:219/255. alpha:1.0].CGColor;//[KMAppearance KMColor_Interactive_M0].CGColor;
+    _addButton.layer.backgroundColor = [NSColor colorWithRed:78/255. green:127/255. blue:219/255. alpha:1.0].CGColor;
     _addButton.title = [NSString stringWithFormat:@"  %@", NSLocalizedString(@"New Signature", nil)];
     [_addButton setTitleColor:[NSColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:1.0]];
     _addButton.image = [NSImage imageNamed:@"KMImageNameUXIconBtnAddWhite"];
-//    self.addButtonLayer = [CALayer layer];
-//    [self.addButton.layer addSublayer:self.addButtonLayer];
-//    self.addButtonLayer.backgroundColor = [KMAppearance KMColor_Status_Hov].CGColor;
-//    self.addButtonLayer.cornerRadius = 0;
-//    self.addButtonLayer.hidden = YES;
+
 }
 
 - (void)updateLanguage {
@@ -114,17 +108,7 @@ KMSigntureViewItemDelegate>
 
 - (void)tableViewMenu {
     NSMenu *menu = [[NSMenu alloc] init];
-//    NSMenuItem *item = [menu addItemWithTitle:NSLocalizedString(@"Export stamp", nil) action:nil target:self];
-//    NSMenu *tSubMenu = [[NSMenu alloc] init];
-//    NSMenuItem *tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PNG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:0];
-//    tMenuItem.tag = 0;
-//    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"JPG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:1];
-//    tMenuItem.tag = 1;
-//    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PDF", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:2];
-//    tMenuItem.tag = 2;
-//    item.submenu = tSubMenu;
-//    [menu addItem:[NSMenuItem separatorItem]];
-//    [menu addItemWithTitle:NSLocalizedString(@"Delete stamp", nil) action:@selector(deleteCustomizeStamp) target:self];
+ 
     [menu addItemWithTitle:NSLocalizedString(@"Remove All", nil) action:@selector(deleteAllCustomizeStamp) target:self];
     self.collectionView.menu = menu;
 }
@@ -383,7 +367,6 @@ KMSigntureViewItemDelegate>
             if ([editAnnotation isKindOfClass:[CPDFSignatureWidgetAnnotation class]]) {
                 signatureaAnnotation = (CPDFSignatureWidgetAnnotation *)editAnnotation;
             } else {
-//                signatureaAnnotation= [[CPDFSignatureWidgetAnnotation alloc] initKMNoteWithBounds:editAnnotation.bounds document:self.pdfView.document];
                 signatureaAnnotation = [[CPDFSignatureWidgetAnnotation alloc] initWithKMNoteBounds:editAnnotation.bounds document:self.pdfView.document];
                 signatureaAnnotation.fieldName = [(CPDFSignatureWidgetAnnotation *)editAnnotation fieldName];
                 signatureaAnnotation.backgroundColor = [(CPDFSignatureWidgetAnnotation *)editAnnotation backgroundColor];

+ 3 - 3
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureAnnotationViewController.xib

@@ -43,7 +43,7 @@
                                         <action selector="insertSignatureButton_Click:" target="-2" id="mFv-NR-mrz"/>
                                     </connections>
                                 </button>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2BZ-Qt-bmp">
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2BZ-Qt-bmp">
                                     <rect key="frame" x="83" y="17" width="62" height="16"/>
                                     <textFieldCell key="cell" lineBreakMode="clipping" title="Signature" id="d1y-xG-Jfy">
                                         <font key="font" usesAppearanceFont="YES"/>
@@ -116,7 +116,7 @@
                                                 </constraints>
                                                 <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptySign" id="rfd-We-aPr"/>
                                             </imageView>
-                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Tbj-Oa-HOw">
+                                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Tbj-Oa-HOw">
                                                 <rect key="frame" x="39" y="68" width="90" height="16"/>
                                                 <textFieldCell key="cell" lineBreakMode="clipping" title="No Signatures" id="K2k-0V-W78">
                                                     <font key="font" metaFont="system"/>
@@ -124,7 +124,7 @@
                                                     <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                                 </textFieldCell>
                                             </textField>
-                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vd7-mZ-jin">
+                                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vd7-mZ-jin">
                                                 <rect key="frame" x="-2" y="18" width="172" height="48"/>
                                                 <constraints>
                                                     <constraint firstAttribute="width" constant="168" id="WK4-mV-ZGn"/>

+ 81 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureController.swift

@@ -0,0 +1,81 @@
+//
+//  KMSignatureController.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/12/5.
+//
+
+import Cocoa
+import KMComponentLibrary
+
+class KMSignatureController: NSViewController {
+    @IBOutlet var rotateBGView: NSView!
+    @IBOutlet var rotateLabel: NSTextField!
+    @IBOutlet var rotateRightButton: ComponentButton!
+    @IBOutlet var rotateLeftButton: ComponentButton!
+     
+    private var annotations: [CPDFSignatureAnnotation] = []
+    var pdfView: CPDFListView?
+    
+    
+    //MARK: - func
+    override func viewDidAppear() {
+        super.viewDidAppear()
+        
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        
+        setupProperty()
+    }
+    
+    func setupProperty() {
+        
+        rotateLabel.stringValue = KMLocalizedString("Rotate")
+        rotateLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
+        rotateLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
+        
+        rotateRightButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .s, onlyIcon: true, icon: NSImage(named: "pageEdit_rotateRight"), keepPressState: false)
+        rotateRightButton.setTarget(self, action: #selector(buttonClicked(_ :)))
+        
+        rotateLeftButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .s, onlyIcon: true, icon: NSImage(named: "pageEdit_rotateLeft"), keepPressState: false)
+        rotateLeftButton.setTarget(self, action: #selector(buttonClicked(_ :)))
+       
+        
+    }
+    
+    func reloadData() {
+        guard let pdfView = self.pdfView else {
+            return
+        }
+        
+        self.annotations.removeAll()
+        let allAnnotations: [CPDFAnnotation] = pdfView.activeAnnotations as? [CPDFAnnotation] ?? []
+        for annotation in allAnnotations {
+            if annotation is CPDFSignatureAnnotation {
+                 annotations.append((annotation as! CPDFSignatureAnnotation))
+             }
+        }
+        var firstAnnotation: CPDFSignatureAnnotation? = nil
+        if annotations.count > 0 {
+            firstAnnotation = annotations.first
+        }
+        
+    }
+    
+    //MARK: - Action
+    @objc func buttonClicked(_ button: ComponentButton) {
+        if button == rotateLeftButton {
+            CPDFSignatureAnnotation.rotateLeft(annotations, withPDFView: pdfView)
+        } else if button == rotateRightButton {
+            CPDFSignatureAnnotation.rotateRight(annotations, withPDFView: pdfView)
+        }
+        
+    }
+    
+    
+    
+    
+}

+ 91 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureController.xib

@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMSignatureController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="rotateBGView" destination="hKT-pW-tTL" id="qMQ-4K-bma"/>
+                <outlet property="rotateLabel" destination="KsC-Pz-UQB" id="EHM-b8-9tz"/>
+                <outlet property="rotateLeftButton" destination="upr-NS-vOU" id="f6L-6c-bQG"/>
+                <outlet property="rotateRightButton" destination="204-LT-gb6" id="Ddf-qm-fnw"/>
+                <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"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="3tx-bc-Gwi">
+                    <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="hKT-pW-tTL">
+                            <rect key="frame" x="124" y="200" width="232" height="72"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ljs-eZ-Jks">
+                                    <rect key="frame" x="0.0" y="32" width="232" height="40"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KsC-Pz-UQB">
+                                            <rect key="frame" x="-2" y="12" width="44" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Rotate" id="0BU-zA-pC8">
+                                                <font key="font" usesAppearanceFont="YES"/>
+                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                        </textField>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="S9X-Ev-khz"/>
+                                        <constraint firstItem="KsC-Pz-UQB" firstAttribute="centerY" secondItem="ljs-eZ-Jks" secondAttribute="centerY" id="ebM-qq-HXr"/>
+                                        <constraint firstItem="KsC-Pz-UQB" firstAttribute="leading" secondItem="ljs-eZ-Jks" secondAttribute="leading" id="fBT-EN-G19"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="204-LT-gb6" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                    <rect key="frame" x="0.0" y="0.0" width="112" height="32"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="112" id="Bgq-W0-geP"/>
+                                        <constraint firstAttribute="height" constant="32" id="vd8-mE-qBK"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="upr-NS-vOU" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                    <rect key="frame" x="120" y="0.0" width="112" height="32"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="32" id="Xg5-Of-U2P"/>
+                                        <constraint firstAttribute="width" constant="112" id="iHt-g9-Lm7"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="204-LT-gb6" firstAttribute="top" secondItem="ljs-eZ-Jks" secondAttribute="bottom" id="0jy-Dw-jLx"/>
+                                <constraint firstAttribute="trailing" secondItem="upr-NS-vOU" secondAttribute="trailing" id="2ZX-rW-xaI"/>
+                                <constraint firstAttribute="width" constant="232" id="8cV-MB-FM9"/>
+                                <constraint firstItem="ljs-eZ-Jks" firstAttribute="leading" secondItem="hKT-pW-tTL" secondAttribute="leading" id="Eb3-9m-D1f"/>
+                                <constraint firstItem="204-LT-gb6" firstAttribute="leading" secondItem="hKT-pW-tTL" secondAttribute="leading" id="TZh-fY-TEe"/>
+                                <constraint firstAttribute="trailing" secondItem="ljs-eZ-Jks" secondAttribute="trailing" id="W4d-tu-bgP"/>
+                                <constraint firstItem="upr-NS-vOU" firstAttribute="top" secondItem="ljs-eZ-Jks" secondAttribute="bottom" id="ftU-kt-Zu8"/>
+                                <constraint firstAttribute="height" constant="72" id="yIL-tb-I9l"/>
+                                <constraint firstItem="ljs-eZ-Jks" firstAttribute="top" secondItem="hKT-pW-tTL" secondAttribute="top" id="zAg-U3-mf0"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="hKT-pW-tTL" firstAttribute="centerX" secondItem="3tx-bc-Gwi" secondAttribute="centerX" id="1Cn-Jl-c0T"/>
+                        <constraint firstItem="hKT-pW-tTL" firstAttribute="top" secondItem="3tx-bc-Gwi" secondAttribute="top" id="gDx-nW-qDL"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="3tx-bc-Gwi" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="F8I-NI-bXf"/>
+                <constraint firstAttribute="bottom" secondItem="3tx-bc-Gwi" secondAttribute="bottom" id="Nrf-6C-dda"/>
+                <constraint firstAttribute="trailing" secondItem="3tx-bc-Gwi" secondAttribute="trailing" id="ZEK-CT-5fq"/>
+                <constraint firstItem="3tx-bc-Gwi" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="hrF-pW-upG"/>
+            </constraints>
+            <point key="canvasLocation" x="98" y="154"/>
+        </customView>
+    </objects>
+</document>

+ 3 - 3
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureHelpViewController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -18,7 +18,7 @@
             <rect key="frame" x="0.0" y="0.0" width="280" height="32"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="ske-oW-ZNH">
+                <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="ske-oW-ZNH">
                     <rect key="frame" x="14" y="8" width="252" height="16"/>
                     <textFieldCell key="cell" selectable="YES" alignment="center" title="Multiline Label" id="lBS-WA-vWs">
                         <font key="font" usesAppearanceFont="YES"/>

+ 142 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureListController.swift

@@ -0,0 +1,142 @@
+//
+//  KMSignatureListController.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/12/5.
+//
+
+import Cocoa
+import KMComponentLibrary
+
+class KMSignatureListController: NSViewController {
+    
+    @IBOutlet var scrollView: NSScrollView!
+    @IBOutlet var collectionView: NSCollectionView!
+   
+    var allObjects: [KMSignature] = []
+    
+    var pdfView: CPDFListView?
+    var selectedObject: KMSignature?
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        
+        reloadUI()
+        
+        collectionView.backgroundColors = [NSColor.clear]
+        collectionView.wantsLayer = true
+        collectionView.layer?.backgroundColor = NSColor.clear.cgColor
+        collectionView.delegate = self
+        collectionView.dataSource = self
+        collectionView.allowsEmptySelection = true
+        collectionView.allowsMultipleSelection = false
+        
+        collectionView.register(KMStampListItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMStampListItem"))
+        
+        setupProperty()
+        
+        reloadData()
+    }
+     
+    func setupProperty() {
+ 
+    }
+    
+    func reloadUI() {
+        self.view.wantsLayer = true
+        self.view.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor
+      
+    }
+    
+    //MARK: - reloadData
+    func reloadData() {
+        self.allObjects.removeAll()
+        
+        for signature in KMSignatureManager.manager.signatureList {
+            self.allObjects.append(signature)
+        }
+      
+        self.collectionView.reloadData()
+    }
+    
+    private func collectionViewSelectedChanged() {
+        let indexs = collectionView.selectionIndexPaths
+        
+        if indexs.count > 0 {
+            for index in indexs {
+                
+                
+            }
+        } else {
+            
+        }
+        DispatchQueue.main.async {
+            
+        }
+    }
+    
+    //MARK: - Action
+    @IBAction func testClick(_ sender: Any) {
+        self.showDynamicSetting()
+        
+//        self.createCustomStamp()
+    }
+    
+    func showDynamicSetting() {
+ 
+        
+    }
+    
+    func createCustomStamp() {
+        
+    }
+    
+    
+}
+ 
+ 
+//MARK: - NSCollectionViewDelegate, NSCollectionViewDataSource
+extension KMSignatureListController: NSCollectionViewDelegate, NSCollectionViewDataSource, NSCollectionViewDelegateFlowLayout {
+    public func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
+         return allObjects.count
+    }
+    
+    public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
+        if indexPath.item >= allObjects.count {
+            return NSCollectionViewItem()
+        }
+        
+        let item: KMStampListItem = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMStampListItem"), for: indexPath) as! KMStampListItem
+        item.signObject = allObjects[indexPath.item]
+        item.reloadData()
+        
+        return item
+    }
+    
+    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
+        return CGSize(width: 232, height: 88)
+    }
+    
+    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
+        return 8
+    }
+    
+    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
+        return 8
+    }
+    
+    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets {
+        return NSEdgeInsets(top: 0, left: 0, bottom: 8, right: 0)
+    }
+    
+    public func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
+        collectionViewSelectedChanged()
+    }
+    
+    public func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) {
+        collectionViewSelectedChanged()
+    }
+    
+}
+

+ 88 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureListController.xib

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMSignatureListController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="collectionView" destination="OLK-21-odJ" id="pwi-dH-pBY"/>
+                <outlet property="scrollView" destination="0Ot-qZ-lNC" id="EuP-vp-0nv"/>
+                <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="423" height="466"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="sjQ-Qg-9Ta">
+                    <rect key="frame" x="0.0" y="0.0" width="423" height="466"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="RgJ-CA-Q5a">
+                            <rect key="frame" x="0.0" y="0.0" width="423" height="466"/>
+                            <subviews>
+                                <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Ot-qZ-lNC">
+                                    <rect key="frame" x="0.0" y="0.0" width="423" height="466"/>
+                                    <clipView key="contentView" id="YmG-uw-KIF">
+                                        <rect key="frame" x="0.0" y="0.0" width="423" height="466"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <collectionView selectable="YES" allowsMultipleSelection="YES" id="OLK-21-odJ">
+                                                <rect key="frame" x="0.0" y="0.0" width="423" height="386"/>
+                                                <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
+                                                <collectionViewFlowLayout key="collectionViewLayout" id="WC6-PC-G06">
+                                                    <size key="itemSize" width="1" height="1"/>
+                                                </collectionViewFlowLayout>
+                                                <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </collectionView>
+                                        </subviews>
+                                    </clipView>
+                                    <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Kvw-sd-X5c">
+                                        <rect key="frame" x="-100" y="-100" width="233" height="15"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                    </scroller>
+                                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="SPE-VY-rEy">
+                                        <rect key="frame" x="307" y="0.0" width="15" height="305"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                    </scroller>
+                                </scrollView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="0Ot-qZ-lNC" firstAttribute="top" secondItem="RgJ-CA-Q5a" secondAttribute="top" id="7Xj-5W-piO"/>
+                                <constraint firstAttribute="trailing" secondItem="0Ot-qZ-lNC" secondAttribute="trailing" id="b1F-oU-uX8"/>
+                                <constraint firstAttribute="bottom" secondItem="0Ot-qZ-lNC" secondAttribute="bottom" id="d6F-WF-BPx"/>
+                                <constraint firstItem="0Ot-qZ-lNC" firstAttribute="leading" secondItem="RgJ-CA-Q5a" secondAttribute="leading" id="yvt-QY-NX8"/>
+                            </constraints>
+                        </customView>
+                        <button translatesAutoresizingMaskIntoConstraints="NO" id="OzG-Oj-qnw">
+                            <rect key="frame" x="0.0" y="440" width="45" height="16"/>
+                            <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="3Fn-Vl-jBT">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                        </button>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="RgJ-CA-Q5a" firstAttribute="leading" secondItem="sjQ-Qg-9Ta" secondAttribute="leading" id="CdR-Ot-AGb"/>
+                        <constraint firstItem="OzG-Oj-qnw" firstAttribute="top" secondItem="sjQ-Qg-9Ta" secondAttribute="top" constant="10" id="GiF-uM-Yus"/>
+                        <constraint firstItem="OzG-Oj-qnw" firstAttribute="leading" secondItem="sjQ-Qg-9Ta" secondAttribute="leading" id="IDJ-kc-1W6"/>
+                        <constraint firstAttribute="trailing" secondItem="RgJ-CA-Q5a" secondAttribute="trailing" id="QTI-Px-1SU"/>
+                        <constraint firstAttribute="bottom" secondItem="RgJ-CA-Q5a" secondAttribute="bottom" id="SXp-jT-028"/>
+                        <constraint firstItem="RgJ-CA-Q5a" firstAttribute="top" secondItem="sjQ-Qg-9Ta" secondAttribute="top" id="ykA-01-Qfx"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="sjQ-Qg-9Ta" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="SvU-lh-7kH"/>
+                <constraint firstAttribute="bottom" secondItem="sjQ-Qg-9Ta" secondAttribute="bottom" id="ddT-NP-vdb"/>
+                <constraint firstAttribute="trailing" secondItem="sjQ-Qg-9Ta" secondAttribute="trailing" id="pd5-Dg-JMs"/>
+                <constraint firstItem="sjQ-Qg-9Ta" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="qIO-Xr-4sF"/>
+            </constraints>
+            <point key="canvasLocation" x="103.5" y="25"/>
+        </customView>
+    </objects>
+</document>

+ 11 - 7
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSignatureManager.swift

@@ -8,12 +8,19 @@
 import Foundation
 
 @objcMembers class KMSignatureManager: NSObject {
+    
+    static let manager = KMSignatureManager()
+    
     var signatureList: [KMSignature] = []
-
+    
     override init() {
+        super.init()
+        
         signatureList = []
+        
+        loadAllSignatureList()
     }
-
+    
     @objc func loadAllSignatureList() {
         signatureList.removeAll()
         if let fileDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
@@ -25,7 +32,6 @@ import Foundation
                 if FileManager.default.fileExists(atPath: filePath.path) {
                     NSKeyedUnarchiver.setClass(KMSignature.self, forClassName: "KMSignature")
                     if let array = NSKeyedUnarchiver.unarchiveObject(withFile: filePath.path) as? [KMSignature] {
-                        //                    signatureList = array
                         for model in array {
                             signatureList.append(model)
                         }
@@ -37,9 +43,7 @@ import Foundation
         if let fileDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
             let filePath = fileDirectory.appendingPathComponent("NewSignatureList")
             if FileManager.default.fileExists(atPath: filePath.path) {
-//                NSKeyedUnarchiver.setClass(KMSignature.self, forClassName: "KMSignature")
                 if let array = NSKeyedUnarchiver.unarchiveObject(withFile: filePath.path) as? [KMSignature] {
-//                    signatureList = array
                     for model in array {
                         signatureList.append(model)
                     }
@@ -55,11 +59,11 @@ import Foundation
     func removeObject(index: Int) {
         signatureList.remove(at: index)
     }
-
+    
     @objc func addSignature(_ signature: KMSignature) {
         signatureList.append(signature)
     }
-
+    
     @objc func saveSingaturesToFile() {
         if let fileDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
             let filePath = fileDirectory.appendingPathComponent("NewSignatureList")

+ 2 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Signature/KMSigntureViewItem.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>

+ 0 - 17
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/Controllers/KMCreateStampController.swift

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

+ 0 - 19
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/Controllers/KMCreateStampController.xib

@@ -1,19 +0,0 @@
-<?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="KMCreateStampController" 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>

+ 1 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/CreateStamp/Controller/KMStampCreaterWindowController.swift

@@ -48,6 +48,7 @@ class KMStampCreaterWindowController: NSWindowController, NSTextViewDelegate{
     convenience init(){
         self.init(windowNibName: "KMStampCreaterWindowController")
     }
+    
     private func changeBoardViewWithBounds(_ frame: CGRect) {
         if boardView == nil {
             boardView = NSView()

+ 8 - 5
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/StampList/Views/KMStampListItem.swift

@@ -18,6 +18,8 @@ class KMStampListItem: NSCollectionViewItem {
     
     var stampObject: CStampObject?
     
+    var signObject: KMSignature?
+    
     
     
     deinit {
@@ -44,12 +46,13 @@ class KMStampListItem: NSCollectionViewItem {
     }
 
     func reloadData() {
-        guard let stampObject = stampObject else {
-            return
+        if let stampObject = stampObject {
+            let image = stampObject.stampPreImage()
+            iconImage.image = image
+        } else if let signObject = signObject {
+            let image = signObject.pathsImage
+            iconImage.image = image
         }
-        
-        let image = stampObject.stampPreImage()
-        iconImage.image = image
          
     }
     

+ 38 - 22
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -3095,12 +3095,6 @@
 		BB1BFF8E2AEA547B003EB179 /* NSButton+CustomAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1BFF8D2AEA547B003EB179 /* NSButton+CustomAppearance.swift */; };
 		BB1BFF8F2AEA547B003EB179 /* NSButton+CustomAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1BFF8D2AEA547B003EB179 /* NSButton+CustomAppearance.swift */; };
 		BB1BFF902AEA547B003EB179 /* NSButton+CustomAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1BFF8D2AEA547B003EB179 /* NSButton+CustomAppearance.swift */; };
-		BB1C96F92D01568F00F1EFAD /* KMCreateStampController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1C96F72D01568F00F1EFAD /* KMCreateStampController.swift */; };
-		BB1C96FA2D01568F00F1EFAD /* KMCreateStampController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1C96F72D01568F00F1EFAD /* KMCreateStampController.swift */; };
-		BB1C96FB2D01568F00F1EFAD /* KMCreateStampController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1C96F72D01568F00F1EFAD /* KMCreateStampController.swift */; };
-		BB1C96FC2D01568F00F1EFAD /* KMCreateStampController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1C96F82D01568F00F1EFAD /* KMCreateStampController.xib */; };
-		BB1C96FD2D01568F00F1EFAD /* KMCreateStampController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1C96F82D01568F00F1EFAD /* KMCreateStampController.xib */; };
-		BB1C96FE2D01568F00F1EFAD /* KMCreateStampController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1C96F82D01568F00F1EFAD /* KMCreateStampController.xib */; };
 		BB1C97012D01704600F1EFAD /* KMStampSettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1C96FF2D01704600F1EFAD /* KMStampSettingWindowController.swift */; };
 		BB1C97022D01704600F1EFAD /* KMStampSettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1C96FF2D01704600F1EFAD /* KMStampSettingWindowController.swift */; };
 		BB1C97032D01704600F1EFAD /* KMStampSettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1C96FF2D01704600F1EFAD /* KMStampSettingWindowController.swift */; };
@@ -4635,6 +4629,18 @@
 		BBC4F9F62AEB69940098A1A8 /* NSArray+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC4F9F52AEB69940098A1A8 /* NSArray+Extension.swift */; };
 		BBC4F9F72AEB69940098A1A8 /* NSArray+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC4F9F52AEB69940098A1A8 /* NSArray+Extension.swift */; };
 		BBC4F9F82AEB69940098A1A8 /* NSArray+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC4F9F52AEB69940098A1A8 /* NSArray+Extension.swift */; };
+		BBC5ABD72D01C411008BA0CB /* KMSignatureListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ABD52D01C411008BA0CB /* KMSignatureListController.swift */; };
+		BBC5ABD82D01C411008BA0CB /* KMSignatureListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ABD52D01C411008BA0CB /* KMSignatureListController.swift */; };
+		BBC5ABD92D01C411008BA0CB /* KMSignatureListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ABD52D01C411008BA0CB /* KMSignatureListController.swift */; };
+		BBC5ABDA2D01C411008BA0CB /* KMSignatureListController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC5ABD62D01C411008BA0CB /* KMSignatureListController.xib */; };
+		BBC5ABDB2D01C411008BA0CB /* KMSignatureListController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC5ABD62D01C411008BA0CB /* KMSignatureListController.xib */; };
+		BBC5ABDC2D01C411008BA0CB /* KMSignatureListController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC5ABD62D01C411008BA0CB /* KMSignatureListController.xib */; };
+		BBC5ABDF2D01C950008BA0CB /* KMSignatureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ABDD2D01C950008BA0CB /* KMSignatureController.swift */; };
+		BBC5ABE02D01C950008BA0CB /* KMSignatureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ABDD2D01C950008BA0CB /* KMSignatureController.swift */; };
+		BBC5ABE12D01C950008BA0CB /* KMSignatureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ABDD2D01C950008BA0CB /* KMSignatureController.swift */; };
+		BBC5ABE22D01C950008BA0CB /* KMSignatureController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC5ABDE2D01C950008BA0CB /* KMSignatureController.xib */; };
+		BBC5ABE32D01C950008BA0CB /* KMSignatureController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC5ABDE2D01C950008BA0CB /* KMSignatureController.xib */; };
+		BBC5ABE42D01C950008BA0CB /* KMSignatureController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC5ABDE2D01C950008BA0CB /* KMSignatureController.xib */; };
 		BBC70EA92AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */; };
 		BBC70EAA2AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */; };
 		BBC70EAB2AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */; };
@@ -6793,8 +6799,6 @@
 		BB1B0ABD2B4FC6E800889528 /* KMGuideInfoWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMGuideInfoWindow.xib; sourceTree = "<group>"; };
 		BB1B0ABE2B4FC6E800889528 /* KMGuideInfoWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMGuideInfoWindowController.xib; sourceTree = "<group>"; };
 		BB1BFF8D2AEA547B003EB179 /* NSButton+CustomAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSButton+CustomAppearance.swift"; sourceTree = "<group>"; };
-		BB1C96F72D01568F00F1EFAD /* KMCreateStampController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCreateStampController.swift; sourceTree = "<group>"; };
-		BB1C96F82D01568F00F1EFAD /* KMCreateStampController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMCreateStampController.xib; sourceTree = "<group>"; };
 		BB1C96FF2D01704600F1EFAD /* KMStampSettingWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMStampSettingWindowController.swift; sourceTree = "<group>"; };
 		BB1C97002D01704600F1EFAD /* KMStampSettingWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMStampSettingWindowController.xib; sourceTree = "<group>"; };
 		BB1CA5CA298E5F540059E31C /* KMMergeTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMergeTools.swift; sourceTree = "<group>"; };
@@ -7412,6 +7416,10 @@
 		BBC4F9E92AEB58290098A1A8 /* KMAlertWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAlertWindowController.swift; sourceTree = "<group>"; };
 		BBC4F9ED2AEB58470098A1A8 /* KMAlertWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMAlertWindowController.xib; sourceTree = "<group>"; };
 		BBC4F9F52AEB69940098A1A8 /* NSArray+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSArray+Extension.swift"; sourceTree = "<group>"; };
+		BBC5ABD52D01C411008BA0CB /* KMSignatureListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSignatureListController.swift; sourceTree = "<group>"; };
+		BBC5ABD62D01C411008BA0CB /* KMSignatureListController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMSignatureListController.xib; sourceTree = "<group>"; };
+		BBC5ABDD2D01C950008BA0CB /* KMSignatureController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSignatureController.swift; sourceTree = "<group>"; };
+		BBC5ABDE2D01C950008BA0CB /* KMSignatureController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMSignatureController.xib; sourceTree = "<group>"; };
 		BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMToolbarCustomWindowController.xib; sourceTree = "<group>"; };
 		BBC70EAF2AEA80EC00AC1585 /* KMToolbarCustomWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarCustomWindowController.swift; sourceTree = "<group>"; };
 		BBC70EB32AEA847500AC1585 /* KMToolbarCustomViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarCustomViewController.swift; sourceTree = "<group>"; };
@@ -8281,24 +8289,28 @@
 		8931681E296D73C10073EA59 /* Signature */ = {
 			isa = PBXGroup;
 			children = (
+				ADDEEA592AD399BB00EF675D /* KMSignature.swift */,
+				ADDEEA5D2AD39DC500EF675D /* KMSignatureManager.swift */,
 				BB7F7BFD29AA585E00A3E4E7 /* images */,
-				8931681F296D73CC0073EA59 /* KMSignatureAnnotationViewController.h */,
-				89316820296D73CC0073EA59 /* KMSignatureAnnotationViewController.m */,
-				89316821296D73CC0073EA59 /* KMSignatureAnnotationViewController.xib */,
+				BBC5ABD52D01C411008BA0CB /* KMSignatureListController.swift */,
+				BBC5ABD62D01C411008BA0CB /* KMSignatureListController.xib */,
+				BBC5ABDD2D01C950008BA0CB /* KMSignatureController.swift */,
+				BBC5ABDE2D01C950008BA0CB /* KMSignatureController.xib */,
 				ADDEEA6D2AD3E16100EF675D /* KMSigntureViewItem.swift */,
 				BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */,
 				ADDEEA692AD3CF3A00EF675D /* KMDrawSignatureView.swift */,
 				ADDEEA652AD3C4BE00EF675D /* KMPDFSignatureImageView.swift */,
 				ADDEEA612AD3A6E700EF675D /* KMPDFSignatureTextView.swift */,
-				ADDEEA592AD399BB00EF675D /* KMSignature.swift */,
-				ADDEEA5D2AD39DC500EF675D /* KMSignatureManager.swift */,
+				ADDEEA482AD38BDB00EF675D /* KMSignatureHelpViewController.swift */,
 				BB2E665E29C885550000FEBC /* KMSignatureHelpViewController.xib */,
 				ADDEEA7D2AD3FB1D00EF675D /* KMImageAccessoryController.swift */,
 				89316851296E45CA0073EA59 /* KMImageAccessoryController.xib */,
-				ADDEEA482AD38BDB00EF675D /* KMSignatureHelpViewController.swift */,
 				BB67105F2BC672240018CE54 /* KMSignatureWindowController.h */,
 				BB6710602BC672250018CE54 /* KMSignatureWindowController.m */,
 				BB67105E2BC672230018CE54 /* KMSignatureWindowController.xib */,
+				8931681F296D73CC0073EA59 /* KMSignatureAnnotationViewController.h */,
+				89316820296D73CC0073EA59 /* KMSignatureAnnotationViewController.m */,
+				89316821296D73CC0073EA59 /* KMSignatureAnnotationViewController.xib */,
 			);
 			path = Signature;
 			sourceTree = "<group>";
@@ -11696,8 +11708,6 @@
 			children = (
 				BB1C96FF2D01704600F1EFAD /* KMStampSettingWindowController.swift */,
 				BB1C97002D01704600F1EFAD /* KMStampSettingWindowController.xib */,
-				BB1C96F72D01568F00F1EFAD /* KMCreateStampController.swift */,
-				BB1C96F82D01568F00F1EFAD /* KMCreateStampController.xib */,
 			);
 			path = Controllers;
 			sourceTree = "<group>";
@@ -14805,6 +14815,7 @@
 				AD1D483E2AFB81F4007AC1F0 /* KMMergeBlankView.xib in Resources */,
 				9F1FE4DE29406E4700E952CA /* .gclient in Resources */,
 				BB6EA2942B70AF48000D4490 /* KMConvertCompareViewController.xib in Resources */,
+				BBC5ABE22D01C950008BA0CB /* KMSignatureController.xib in Resources */,
 				9F8810902B56614600F69815 /* KMAnnotationChoiceWidgetAppearanceViewController.xib in Resources */,
 				BB5E2EFC2C2BF3FF00657A61 /* KMEditPDFCropComfirmWindowController.xib in Resources */,
 				BB955EC82CD8ED0F0042FDE1 /* KMNWatermarkTemplateItem.xib in Resources */,
@@ -15176,7 +15187,6 @@
 				BBFE14D22BFD7FC300176992 /* KMCouponDueWindowController.xib in Resources */,
 				BB4F7E912B0C80000077EC8C /* KMNoteColorCollectionViewItem.xib in Resources */,
 				ADF1569C29A63CBF001D1018 /* KMLightMember.xcassets in Resources */,
-				BB1C96FC2D01568F00F1EFAD /* KMCreateStampController.xib in Resources */,
 				BB91384A2CEE08D400BAB4A7 /* KMCropCoverController.xib in Resources */,
 				899700EB28F3E4D3009AF911 /* MainWindowController.xib in Resources */,
 				9FF371C42C69A6BB005F9CC5 /* CAreaSettingWindowController.xib in Resources */,
@@ -15188,6 +15198,7 @@
 				BB1EC8012967B26700EC0BC3 /* KMPDFEditViewController.xib in Resources */,
 				AD1D48132AFB1912007AC1F0 /* KMCompressView.xib in Resources */,
 				9FDCD8112B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */,
+				BBC5ABDA2D01C411008BA0CB /* KMSignatureListController.xib in Resources */,
 				BBA19F3629ADACC5001A285A /* signPicture_nor.pdf in Resources */,
 				BB1B0AE32B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */,
 				BBC4F9EE2AEB58470098A1A8 /* KMAlertWindowController.xib in Resources */,
@@ -15448,6 +15459,7 @@
 				ADFCEB492B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
 				BB52F5932CC245B3007418DB /* KMLinkPopupEmailView.xib in Resources */,
+				BBC5ABE32D01C950008BA0CB /* KMSignatureController.xib in Resources */,
 				BB03D6912B01C7AB008C9976 /* KMPDFEditInsertBlankPageWindow.xib in Resources */,
 				BBE788822CBD2463008086E2 /* WCCompWindowController.xib in Resources */,
 				BBFE6E792930E53000142C01 /* KMMergePopoverViewController.xib in Resources */,
@@ -15649,6 +15661,7 @@
 				653647782CDCA47300CDB13E /* KMBatchOperateImageToPDFViewController.xib in Resources */,
 				BB254D5B2B2A985A00C37B3B /* KMTTSWindowController.xib in Resources */,
 				BB183DD52B4EAD5400F99C7E /* Ubuntu-Bold.ttf in Resources */,
+				BBC5ABDB2D01C411008BA0CB /* KMSignatureListController.xib in Resources */,
 				BB0FE03B2B734DD1001E0F88 /* AITipIconView.xib in Resources */,
 				BB2EDF74296ECE17003BCF58 /* KMPageEditThumbnailItem.xib in Resources */,
 				BB19A7472CB7B7A0008204DC /* KMHomeFilesHeaderView.xib in Resources */,
@@ -15848,7 +15861,6 @@
 				BB5A9D652CB6521400F64C1F /* KMPDFSecToolbarController.xib in Resources */,
 				BB451AE12CF5AF9A003E1565 /* KMLineController.xib in Resources */,
 				ADDF834B2B391A5C00A81A4E /* DSignatureDetailsViewController.xib in Resources */,
-				BB1C96FD2D01568F00F1EFAD /* KMCreateStampController.xib in Resources */,
 				BBFA1CD22B609EC50053AD4A /* KMScreenShotMaskWindowController.xib in Resources */,
 				BBB789B22BE8BF2400F7E09C /* AIChatTranslateResultItem.xib in Resources */,
 				9F8539E8294712D600DF644E /* KMChromiumTabContents.xib in Resources */,
@@ -16020,6 +16032,7 @@
 				BB031B802C47BB090099F7AD /* KMUserListItemCellView.xib in Resources */,
 				BB7648EA29ECECBF00931039 /* Color.xcassets in Resources */,
 				F328C0BF2CA177DD00BFDD23 /* PresentImage.xcassets in Resources */,
+				BBC5ABE42D01C950008BA0CB /* KMSignatureController.xib in Resources */,
 				BBB2ACE22B5943F800098854 /* Quick Start Guide.pdf in Resources */,
 				ADD1B6F22946C06C00C3FFF7 /* KMPrintChoosePageSizeSizeView.xib in Resources */,
 				AD7D5CE12B957693006562CD /* KMBookmarkOutlineFileCellView.xib in Resources */,
@@ -16221,6 +16234,7 @@
 				9F56648C2988B16F00020985 /* KMTextfieldVC.xib in Resources */,
 				9FA607E328FD4C9F00B46586 /* KMHomePopViewController.xib in Resources */,
 				F356720A29AF184A00740FF3 /* CPDFListAnnotationNoteWindowController.xib in Resources */,
+				BBC5ABDC2D01C411008BA0CB /* KMSignatureListController.xib in Resources */,
 				BB8AA53D2CC65C900084F183 /* KMNAlignmentController.xib in Resources */,
 				658FDBB72C9D90CE00EFA72E /* KMNoteFilterStateCollevtionViewItem.xib in Resources */,
 				BB10FAF42AFE23BE00F18D65 /* LineInspector.xib in Resources */,
@@ -16420,7 +16434,6 @@
 				BBB789982BE8BF2400F7E09C /* AIInfoInputView.xib in Resources */,
 				BB451AE22CF5AF9A003E1565 /* KMLineController.xib in Resources */,
 				AD867FAC29DFB78200F00440 /* KMAnnotationOutlineView.xib in Resources */,
-				BB1C96FE2D01568F00F1EFAD /* KMCreateStampController.xib in Resources */,
 				BB10E16C2CDC94E300471D47 /* KMBGTemplateItem.xib in Resources */,
 				BBF811E62B0717970074874F /* KMExtractImageWindowController.xib in Resources */,
 				ADBC376329CC637900D93208 /* KMReadModelView.xib in Resources */,
@@ -17062,7 +17075,6 @@
 				BBBE208B2B21649100509C4E /* KMPDFEditWindowController.swift in Sources */,
 				65C404362CFDE1E600B32BDC /* KMNBotaSearchCellView.swift in Sources */,
 				AD3AAD632B0DA3F600DE5FE7 /* KMCompareTextHeaderView.swift in Sources */,
-				BB1C96F92D01568F00F1EFAD /* KMCreateStampController.swift in Sources */,
 				BB3A668C2B06FD0100575343 /* KMBotaEnum.swift in Sources */,
 				BBFEF7172B3A77E700C28AC0 /* KMSystemFileMenu.swift in Sources */,
 				9FDD0F882952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
@@ -17348,6 +17360,7 @@
 				BBDE52BB2BF3676C000545B2 /* KMPresentTableViewCell.swift in Sources */,
 				BB0FE0372B734DD1001E0F88 /* AIConfigWindowController.swift in Sources */,
 				AD7D5CE42B96B394006562CD /* KMBookmarkOutlineSeparatorCellView.swift in Sources */,
+				BBC5ABDF2D01C950008BA0CB /* KMSignatureController.swift in Sources */,
 				BB6013902AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */,
 				BB2EDF79296ECE17003BCF58 /* KMPageEditThumbnailItem.swift in Sources */,
 				653647C22CDCA5DE00CDB13E /* KMBatchOperateLeftViewController.swift in Sources */,
@@ -17618,6 +17631,7 @@
 				9F0CB4E12986556400007028 /* KMDesignToken+PaddingTop.swift in Sources */,
 				BB3D97162B3023C5007094C8 /* KMCustomButton.swift in Sources */,
 				BBBAED0B2B57D55300266BD3 /* SKTransitionController.m in Sources */,
+				BBC5ABD72D01C411008BA0CB /* KMSignatureListController.swift in Sources */,
 				BB1969D72B2842AD00922736 /* KMSnapshotWindowController.swift in Sources */,
 				BB146FF9299DC0D100784A6A /* OIDExternalUserAgentMac.m in Sources */,
 				ADDEEA9A2AD7BB2D00EF675D /* KMAnnotationPropertiesColorManager.swift in Sources */,
@@ -17794,6 +17808,7 @@
 				BB8810BF2B4F872500AFA63E /* KMVerificationWindowController.m in Sources */,
 				ADE614AD29779C5200F62ED7 /* KMImageTitleButton.swift in Sources */,
 				9FF94F0A29A62B5000B1EF69 /* KMDesignSelect.swift in Sources */,
+				BBC5ABD82D01C411008BA0CB /* KMSignatureListController.swift in Sources */,
 				BB146FBE299DC0D100784A6A /* GTMGatherInputStream.m in Sources */,
 				9FB220ED2B185B3100A5B208 /* KMButtomCell.swift in Sources */,
 				9F1FE51229407B4000E952CA /* KMFileSearchView.swift in Sources */,
@@ -18068,7 +18083,6 @@
 				ADFCEB562B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				BB955EC62CD8ED0F0042FDE1 /* KMNWatermarkTemplateItem.swift in Sources */,
 				AD8DD2A42A9C35B2007CC9D0 /* KMThumbnailManager.swift in Sources */,
-				BB1C96FA2D01568F00F1EFAD /* KMCreateStampController.swift in Sources */,
 				89D2D2E3294C452B00BFF5FE /* KMPDFThumbnailView.swift in Sources */,
 				BB6B4C0D292F62B20071CA06 /* KMPDFThumbnialPageView.swift in Sources */,
 				9F8539D72943180000DF644E /* KMTabAppearance.swift in Sources */,
@@ -18586,6 +18600,7 @@
 				BB2C84602BAE70C400AF6142 /* KMLeftSideViewSearchField.swift in Sources */,
 				9FBA0EF628FFC8A0001117AF /* KMCollectionView.swift in Sources */,
 				AD85D1A52AF09864000F4D28 /* KMHomeQuickToolsWindowController.swift in Sources */,
+				BBC5ABE02D01C950008BA0CB /* KMSignatureController.swift in Sources */,
 				6536FDE82C9C49A6004A0FB9 /* KMNoteFooterCellView.swift in Sources */,
 				ADD1B7072946CBB600C3FFF7 /* KMBaseTextFormatter.swift in Sources */,
 				BB003010298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */,
@@ -19285,6 +19300,7 @@
 				BB6D2DAD2B674D7900624C24 /* CPDFPage+KMExtension.swift in Sources */,
 				BB67EE252B54FFEF00573BF0 /* ASIInputStream.m in Sources */,
 				BB146FDA299DC0D100784A6A /* GTLRFramework.m in Sources */,
+				BBC5ABD92D01C411008BA0CB /* KMSignatureListController.swift in Sources */,
 				BB5A9D542CB6521400F64C1F /* SettingsWindowController.swift in Sources */,
 				AD85D1A02AEF927D000F4D28 /* KMQucikToolsModel.swift in Sources */,
 				BBE788982CBD2463008086E2 /* TabbarDemoVC.swift in Sources */,
@@ -19505,7 +19521,6 @@
 				BBF729912B1960FF00576AC5 /* KMCompressOperationQueue.swift in Sources */,
 				F337CC312CC64BD600D46AF4 /* KMNPageEditViewController.swift in Sources */,
 				BB8810C62B4F95A900AFA63E /* NSObject+DeviceInfo.m in Sources */,
-				BB1C96FB2D01568F00F1EFAD /* KMCreateStampController.swift in Sources */,
 				BBB7899B2BE8BF2400F7E09C /* AIInfoInputView.swift in Sources */,
 				9F221ED129A85D3700978A59 /* KMDesignBase.swift in Sources */,
 				BBBE209D2B21E5F100509C4E /* KMAlertTool.swift in Sources */,
@@ -19786,6 +19801,7 @@
 				BB2EDF48296E4618003BCF58 /* KMPageEditTools.swift in Sources */,
 				BBF729C12B19783600576AC5 /* KMBatchRemoveHeaderFooterOperation.swift in Sources */,
 				BB2C846E2BAE716600AF6142 /* KMBotaTableRowView.swift in Sources */,
+				BBC5ABE12D01C950008BA0CB /* KMSignatureController.swift in Sources */,
 				BB88E45A29404752002B3655 /* KMPDFConvert.swift in Sources */,
 				F321C2122CDA0C5F009982C8 /* BaseXibView.swift in Sources */,
 				BB147004299DC0D100784A6A /* OIDScopeUtilities.m in Sources */,