Selaa lähdekoodia

【2025】【Edit】水印自测优化

niehaoyu 2 kuukautta sitten
vanhempi
commit
6da2eeb082

+ 18 - 7
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/KMWatermarkController.swift

@@ -88,7 +88,7 @@ class KMWatermarkController: NSViewController {
             templatesController.reloadData()
         } else if editSubType == .add {
             propertyController.editSubType = editSubType
-            propertyController.watermarkData = KMPDFWatermarkData.defaultData()
+            propertyController.watermarkData = KMWatermarkManager.defaultManager.defaultWatermarkData
             propertyController.watermarkData.cPDFWatermark = CPDFWatermark(document: pdfDocument, type: .text)
             propertyController.reloadData()
             
@@ -100,6 +100,13 @@ class KMWatermarkController: NSViewController {
         refreshPDFDocumentWaterMark()
     }
     
+    func clearData() {
+        removeWatermark(currentWatermarkData?.cPDFWatermark)
+        
+        currentWatermarkData = nil
+        refreshPDFDocumentWaterMark()
+    }
+    
     func removeWatermark(_ watermark: CPDFWatermark?) {
         if let tempData = watermark {
             let document = documentPreview.pdfDocument
@@ -119,7 +126,7 @@ class KMWatermarkController: NSViewController {
         let document = documentPreview.pdfDocument
         
         if (model.watermarkType == .text) {
-            pdfWatermark.text = model.text
+            pdfWatermark.text = model.text ?? ""
             pdfWatermark.textColor = model.textColor
             pdfWatermark.cFont = CPDFFont(familyName: model.fontName, fontStyle: model.fontStyle ?? "Regular")
             if model.isScale {
@@ -127,8 +134,8 @@ class KMWatermarkController: NSViewController {
             } else {
                 pdfWatermark.fontSize = model.fontSize
             }
-        } else if model.watermarkType == .image {
-            pdfWatermark.image = model.image()
+        } else if model.watermarkType == .image, let image = model.image() {
+            pdfWatermark.image = image
             
             if model.isScale {
                 pdfWatermark.scale = model.scale
@@ -251,9 +258,13 @@ extension KMWatermarkController: KMNWatermarkTemplateControllerDelegate {
         resetUI()
         
         delegate?.kmWatermarkControllerDidUpdateMode?(self)
-       
-        propertyController.watermarkData = KMPDFWatermarkData.defaultData()
-        propertyController.watermarkData.cPDFWatermark = CPDFWatermark(document: pdfDocument, type: .text)
+        
+        propertyController.watermarkData = KMWatermarkManager.defaultManager.defaultWatermarkData
+        if let value = propertyController.watermarkData.imagePath {
+            propertyController.watermarkData.cPDFWatermark = CPDFWatermark(document: pdfDocument, type: .image)
+        } else {
+            propertyController.watermarkData.cPDFWatermark = CPDFWatermark(document: pdfDocument, type: .text)
+        }
         propertyController.reloadData()
         
         currentWatermarkData = propertyController.watermarkData

+ 3 - 3
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Model/KMPDFWatermarkData.swift

@@ -43,7 +43,7 @@ import Cocoa
     
     var cPDFWatermark: CPDFWatermark?
     
-    class func defaultData() -> KMPDFWatermarkData {
+    class func defaultWDData() -> KMPDFWatermarkData {
         let data = KMPDFWatermarkData()
         data.watermarkType = .text
         data.text = KMLocalizedString("Watermark")
@@ -149,8 +149,8 @@ import Cocoa
     }
     
     func isWatermarkModelChanged() -> Bool {
-        
-        let defaultModel = KMPDFWatermarkData.defaultData()
+         
+        let defaultModel = KMWatermarkManager.defaultManager.defaultWatermarkData
         
         if self.watermarkType == .text {
             if self.text != defaultModel.text {

+ 13 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Model/KMWatermarkManager.swift

@@ -56,6 +56,8 @@ class KMWatermarkManager: NSObject {
     
     var watermarks: Array<KMPDFWatermarkData> = []
     
+    var defaultWatermarkData = KMPDFWatermarkData.defaultWDData()
+    
     override init() {
         super.init()
         
@@ -662,8 +664,17 @@ class KMWatermarkManager: NSObject {
         }
         
         if let value = dict.object(forKey: KMWatermarkKey.textColor.rawValue) {
-            if model.textColor.colorToHexString() != (value as! String) {
-                return true
+            var modelColorText = model.textColor.colorToHexString()
+            if modelColorText.count > 7 {
+                modelColorText = modelColorText.substring(to: 7)
+            }
+            if var valueString = value as? String {
+                if valueString.count > 7 {
+                    valueString = valueString.substring(to: 7)
+                }
+                if valueString != modelColorText {
+                    return true
+                }
             }
         }
         

+ 9 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/KMNWatermarkPropertyController.swift

@@ -85,7 +85,7 @@ class KMNWatermarkPropertyController: NSViewController {
     
     private var familyNames = CPDFFont.familyNames
      
-    var watermarkData: KMPDFWatermarkData = KMPDFWatermarkData.defaultData()
+    var watermarkData: KMPDFWatermarkData = KMWatermarkManager.defaultManager.defaultWatermarkData
     
     public var editSubType: KMPDFEditSubModeType = .add
     
@@ -447,7 +447,7 @@ class KMNWatermarkPropertyController: NSViewController {
     }
     
     func clearData() {
-        watermarkData = KMPDFWatermarkData.defaultData()
+        watermarkData = KMPDFWatermarkData()
         
         reloadData()
     }
@@ -491,6 +491,13 @@ class KMNWatermarkPropertyController: NSViewController {
 
             delegate?.watermarkPropertyControllerSaveTemplateSuccess?(self, self.watermarkData)
         } else {
+            if watermarkData.watermarkType == .image, let _ = watermarkData.imagePath {
+                watermarkData.text = nil
+                watermarkData.watermarkType = .image
+            } else {
+                watermarkData.watermarkType = .text
+                watermarkData.imagePath = nil
+            }
             delegate?.watermarkPropertyControllerDidChangetoTemplate?(self)
         }
     }

+ 1 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/Templates/KMNWatermarkTemplateController.xib

@@ -29,7 +29,7 @@
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="SvK-Lz-bo0">
                             <rect key="frame" x="0.0" y="376" width="322" height="40"/>
                             <subviews>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eD9-Wi-qDA">
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eD9-Wi-qDA">
                                     <rect key="frame" x="128" y="12" width="67" height="16"/>
                                     <textFieldCell key="cell" lineBreakMode="clipping" title="Templates" id="iue-WW-Jay">
                                         <font key="font" usesAppearanceFont="YES"/>

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

@@ -4403,6 +4403,9 @@ extension KMMainViewController: KMEditToolbarViewDelegate {
         if view.editType == .watermark {
             watermarkViewController?.editSubType = editToolbarView?.editSubType ?? .template
             watermarkViewController?.resetUI()
+            if editToolbarView?.editSubType == .template {
+                watermarkViewController?.clearData()
+            }
             watermarkViewController?.reloadData()
         } else if view.editType == .background {
             backgroundViewController?.editSubType = editToolbarView?.editSubType ?? .template