Browse Source

【转换】OCR语言目前是乱序,需要按名称排序(已修复)

tangchao 1 year ago
parent
commit
c364a10562

+ 16 - 0
PDF Office/PDF Master.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -212,5 +212,21 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "6D882254-A034-4687-A258-DA938BC0D78B"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/PDFTools/Convert/Common/KMPDFConvert.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "510"
+            endingLineNumber = "510"
+            landmarkName = "startConvert()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 6 - 0
PDF Office/PDF Master/Class/Common/KMCommonEnum.swift

@@ -64,3 +64,9 @@ import Foundation
     case cut
     case paste
 }
+
+@objc enum KMSortMode: Int {
+    case none = 0   // 无
+    case ascending  // 升序
+    case descending // 降序
+}

+ 75 - 0
PDF Office/PDF Master/Class/PDFTools/Convert/Common/KMPDFConvertManager.swift

@@ -32,6 +32,54 @@ class KMPDFConvertManager: NSObject {
         return array
     }()
     
+    private var _languages_asc: [COCRLanguage] = []
+    var languages_asc: [COCRLanguage] {
+        get {
+            if (!self._languages_asc.isEmpty) {
+                return self._languages_asc
+            }
+            
+            self._languages_asc = self.getOCRLanguages(sortMode: .ascending)
+            return self._languages_asc
+        }
+    }
+    
+    private var _languages_desc: [COCRLanguage] = []
+    var languages_desc: [COCRLanguage] {
+        get {
+            if (!self._languages_desc.isEmpty) {
+                return self._languages_desc
+            }
+            
+            self._languages_desc = self.getOCRLanguages(sortMode: .descending)
+            return self._languages_desc
+        }
+    }
+    
+    private var _languages_asc_strings: [String] = []
+    var languages_asc_strings: [String] {
+        get {
+            if (!self._languages_asc_strings.isEmpty) {
+                return self._languages_asc_strings
+            }
+            
+            self._languages_asc_strings = self.getOCRLanguageStrings(sortMode: .ascending)
+            return self._languages_asc_strings
+        }
+    }
+    
+    private var _languages_desc_strings: [String] = []
+    var languages_desc_strings: [String] {
+        get {
+            if (!self._languages_desc_strings.isEmpty) {
+                return self._languages_desc_strings
+            }
+            
+            self._languages_desc_strings = self.getOCRLanguageStrings(sortMode: .descending)
+            return self._languages_desc_strings
+        }
+    }
+    
     override init() {
         super.init()
         
@@ -367,6 +415,33 @@ class KMPDFConvertManager: NSObject {
 //    }
 }
 
+extension KMPDFConvertManager {
+    func getOCRLanguages(sortMode: KMSortMode = .none) -> [COCRLanguage] {
+        if (sortMode == .none) {
+            return self.ocrLanguages
+        }
+        
+        let result = self.ocrLanguages.sorted {[unowned self] lan1, lan2 in
+            if self.ocrLanguageString(ocrLanguage: lan1) > self.ocrLanguageString(ocrLanguage: lan2) {
+                return sortMode != .ascending
+            }
+            return sortMode == .ascending
+        }
+        
+        return result
+    }
+    
+    func getOCRLanguageStrings(sortMode: KMSortMode = .none) -> [String] {
+        let ocrLanguages = self.getOCRLanguages(sortMode: sortMode)
+        
+        var array: [String] = []
+        for ocrLanguage in ocrLanguages {
+            array.append(self.ocrLanguageString(ocrLanguage: ocrLanguage))
+        }
+        return array
+    }
+}
+
 /*
  return [.chinese, .chineseTraditional, .english, .japanese, .korean,
          // // Latin

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/Controller/KMConvertBaseWindowController.swift

@@ -390,7 +390,7 @@ class KMConvertBaseWindowController: KMBaseWindowController {
         if let isAllowOCR = self.settingView?.ocrEnabled {
             convert.isAllowOCR = isAllowOCR
             if let idx = self.settingView?.ocrItemView?.languageIndex {
-                convert.ocrLanguage = KMPDFConvertManager.defaultManager.ocrLanguages[idx]
+                convert.ocrLanguage = KMPDFConvertManager.defaultManager.languages_asc[idx]
             }
         } else {
             convert.isAllowOCR = false

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertOCRSettingItemView.swift

@@ -68,7 +68,7 @@ class KMConvertOCRSettingItemView: KMConvertBaseView {
 
         self._languageVC?.isScrollPop = true
         self._languageVC?.removeAllItems()
-        self._languageVC?.addItems(withObjectValues: KMPDFConvertManager.defaultManager.ocrLanguageStrings)
+        self._languageVC?.addItems(withObjectValues: KMPDFConvertManager.defaultManager.languages_asc_strings)
         if (self.languageIndex < self._languageVC!.numberOfItems) {
             self._languageVC?.selectItem(at: self.languageIndex)
         } else {

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertSettingView.swift

@@ -29,7 +29,7 @@ class KMConvertSettingView: KMConvertBaseView {
             if let _language = KMPDFConvertManager.defaultManager.ocrLanguage(appleLanguage: self._currentLanguage) {
                 language = _language
             }
-            if let index = KMPDFConvertManager.defaultManager.ocrLanguages.firstIndex(of: language) {
+            if let index = KMPDFConvertManager.defaultManager.languages_asc.firstIndex(of: language) {
                 self.ocrLanuguageIndex = index
             } else {
                 self.ocrLanuguageIndex = 2