Browse Source

【fix】【转换】先将所有图片提取出来后,再次提取当前页的图片至同路径,覆盖文件后,覆盖失败

tangchao 6 months ago
parent
commit
4c63eff76a

+ 41 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/ExtractImage/Controller/KMExtractImageWindowController.swift

@@ -152,8 +152,13 @@ class KMExtractImageWindowController: NSWindowController,PDFConvertObjectDelegat
         let indeSet = self.selectIndexSet()
         if indeSet.count == 0 { return }
         let lastPathName = self.pdfDocument?.documentURL.deletingPathExtension().lastPathComponent ?? ""
-        let tFileName = (String(format: "%@_Extract Images", lastPathName))
+        var tFileName = (String(format: "%@_Extract Images", lastPathName))
         let outputSavePanel = NSSavePanel()
+        if let data = outputSavePanel.directoryURL?.appendingPathComponent(tFileName) {
+            let fileUrl = self.fetchUniquePath(data.path)
+            tFileName = fileUrl.lastPathComponent
+        }
+        
         outputSavePanel.title = NSLocalizedString("Save as PDF", comment: "")
         outputSavePanel.allowsOtherFileTypes = true
         outputSavePanel.isExtensionHidden = true
@@ -171,6 +176,41 @@ class KMExtractImageWindowController: NSWindowController,PDFConvertObjectDelegat
             }
         }
     }
+    
+    func fetchUniquePath(_ originalPath: String) -> String {
+        var path = originalPath
+        let dManager = FileManager.default
+        if !dManager.fileExists(atPath: path) {
+            if path.extension.count < 1 {
+                path = path.stringByAppendingPathExtension("pdf")
+            }
+            return path
+        } else {
+            let originalFullFileName = path.lastPathComponent
+            let url = URL(fileURLWithPath: path)
+//            let originalFileName = path.lastPathComponent.deletingPathExtension.lastPathComponent
+//            let originalFileName = url.deletingPathExtension().lastPathComponent
+            let originalFileName = originalFullFileName
+//            let originalExtension = path.extension
+            
+            let startIndex: Int = 0
+            let endIndex: Int = startIndex + originalPath.count - originalFullFileName.count - 1
+            let fileLocatePath = originalPath.substring(to: endIndex)
+            var i = 1
+            while (1 != 0) {
+                var newName = String(format: "%@(%ld)", originalFileName, i)
+//                newName = String(format: "%@%@", newName, originalExtension)
+                let newPath = fileLocatePath.stringByAppendingPathComponent(newName)
+                if !dManager.fileExists(atPath: newPath) {
+                    return newPath
+                } else {
+                    i+=1
+                    continue
+                }
+            }
+        }
+    }
+    
     func extractOK(_ folder: String) {
         self.hideWaitting()
         self.close()