Просмотр исходного кода

【综合】新增水印保存功能

tangchao 1 год назад
Родитель
Сommit
487591aed5

+ 22 - 0
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Other/KMImageNameWatermark.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "filename" : "Group 1000002766.pdf",
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "filename" : "Group 1000002767.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Other/KMImageNameWatermark.imageset/Group 1000002766.pdf


BIN
PDF Office/PDF Master/Class/Appearance/Image.xcassets/Other/KMImageNameWatermark.imageset/Group 1000002767.pdf


+ 56 - 0
PDF Office/PDF Master/Class/Document/KMMainDocument.swift

@@ -209,6 +209,62 @@ typealias KMMainDocumentCloudUploadHanddler = (@escaping(Bool, String)->()) -> (
         self._saveAsing = true
     }
     
+    override func save(_ sender: Any?) {
+        Task { @MainActor in
+            if await (KMLightMemberManager.manager.canPayFunction() == false) {
+                let _ = KMSubscribeWaterMarkWindowController.show(window: NSApp.mainWindow!) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                    if (isClose) {
+                        return
+                    }
+                    
+                    if (isSubscribeSuccess) {
+                        super.save(sender)
+                        return
+                    }
+                    
+                    // isWaterMarkExport
+                    if (isWaterMarkExport) {
+                        DispatchQueue.main.async {
+                            NSPanel.savePanel(NSApp.mainWindow!, true, panel:{ panel in
+                                panel.nameFieldStringValue = (self.mainViewController?.document?.documentURL.lastPathComponent)!
+                            }) { response, url, isOpen in
+                                if (response == .cancel) {
+                                    return
+                                }
+                                
+                                if let _document = self.mainViewController?.document {
+                                    let watermark = CPDFWatermark(document: _document, type: .image)
+                                    watermark?.image = NSImage(named: "KMImageNameWatermark")
+                                    watermark?.horizontalPosition = .left
+                                    watermark?.verticalPosition = .top
+                                    watermark?.scale = 0.3
+                                    _document.addWatermark(watermark)
+                                    
+                                    
+                                    let linkA = self.mainViewController?.listView.addAnnotation(with: .link, selection: nil, page: _document.page(at: 0), bounds: NSMakeRect(0, _document.page(at: 0).bounds.size.height-20, 70, 20))
+                                    if let _linka = linkA as? CPDFLinkAnnotation {
+                                        _linka.setURL("https://www.baidu.com")
+                                    }
+                                    
+                                    _document.write(to: url)
+                                    if (isOpen) {
+                                        NSDocumentController.shared.km_safe_openDocument(withContentsOf: url!, display: true) { _, _, _ in
+                                            
+                                        }
+                                    } else {
+                                        NSWorkspace.shared.activateFileViewerSelecting([url!])
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                return
+            }
+            super.save(sender)
+        }
+    }
+    
     override func read(from absoluteURL: URL, ofType typeName: String) throws {
         do {
             try super.read(from: absoluteURL, ofType: typeName)