فهرست منبع

【2025版】【转档】UI处理

tangchao 4 ماه پیش
والد
کامیت
9c7e73594f
19فایلهای تغییر یافته به همراه1024 افزوده شده و 577 حذف شده
  1. 1 1
      PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMConvertWindowController.xib
  2. 0 202
      PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertOCRSettingItemView.swift
  3. 0 117
      PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertPageRangeSettingItemView.swift
  4. 0 104
      PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertWordSettingView.swift
  5. 256 46
      PDF Office/PDF Master/KMClass/Convert/Base/KMConvertBaseWindowController.swift
  6. 25 25
      PDF Office/PDF Master/KMClass/Convert/Base/KMConvertBaseWindowController.xib
  7. 0 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertCSVSettingView.swift
  8. 0 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertExcelSettingView.swift
  9. 0 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertImageSettingView.swift
  10. 341 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertOCRSettingItemView.swift
  11. 0 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertPPTsSettingView.swift
  12. 185 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertPageRangeSettingItemView.swift
  13. 0 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertSettingLimitTipView.swift
  14. 2 2
      PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertSettingView.swift
  15. 134 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertWordSettingView.swift
  16. 1 1
      PDF Office/PDF Master/KMClass/KMPDFViewController/KMPDFViewController.swift
  17. 2 2
      PDF Office/PDF Master/KMClass/Tools/PDFPreview/KMNPDFPreView.swift
  18. 5 5
      PDF Office/PDF Master/KMClass/Tools/PDFPreview/KMNPreView.xib
  19. 72 72
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/Convert/NewController/KMConvertWindowController.xib

@@ -57,7 +57,7 @@
             <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="740" height="461"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="875"/>
             <value key="minSize" type="size" width="700" height="524"/>
             <value key="maxSize" type="size" width="700" height="524"/>
             <view key="contentView" wantsLayer="YES" id="se5-gp-TjO">

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

@@ -1,202 +0,0 @@
-//
-//  KMConvertOCRSettingItemView.swift
-//  PDF Reader Pro
-//
-//  Created by tangchao on 2022/12/6.
-//
-
-
-class KMConvertOCRSettingItemView: KMConvertBaseView {
-    @IBOutlet weak var titleLabel: NSTextField!
-    @IBOutlet weak var checkBox: NSBox!
-    @IBOutlet weak var languageBox: NSBox!
-    
-    private var _checkVC: KMDesignButton?
-    var checkVC: KMDesignButton? {
-        get {
-            return self._checkVC
-        }
-    }
-    
-    private var _languageVC: KMDesignSelect?
-    var progressController: SKProgressController?
-
-    private var _languageIndex: Int = 0
-    var languageIndex: Int {
-        get {
-            return self._languageIndex
-        }
-        set {
-            self._languageIndex = newValue
-            
-            self._languageVC?.selectItem(at: newValue)
-        }
-    }
-    
-    var lanugageDidSelected: KMValueDidChangeBlock?
-    var reachabilityAlert: NSAlert?
-    
-    override func awakeFromNib() {
-        super.awakeFromNib()
-        
-        self._checkAction()
-    }
-    
-    override func initSubViews() {
-        super.initSubViews()
-        
-        self._checkVC = KMDesignButton(withType: .CheckBox)
-        self.checkBox.contentView = self._checkVC!.view
-        
-        self._languageVC = KMDesignSelect(withType: .Combox)
-        self.languageBox.contentView = self._languageVC?.view
-    }
-    
-    override func initDefaultVlaue() {
-        super.initDefaultVlaue()
-        
-        self.titleLabel.stringValue = NSLocalizedString("OCR Settings", comment: "")
-        self.titleLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.titleLabel.font = .SFProTextRegularFont(12)
-        
-        self.checkBox.fillColor = .clear
-        self._checkVC?.target = self
-        self._checkVC?.action = #selector(checkBoxAction)
-        self._checkVC?.stringValue = NSLocalizedString("Recognize text if needed", comment: "")
-        self._checkVC?.checkbox_radio()
-        self._checkVC?.state = .Custom
-        
-        self.languageBox.fillColor = .clear
-        self._languageVC?.delete = self
-
-        self._languageVC?.isScrollPop = true
-        self._languageVC?.removeAllItems()
-//        self._languageVC?.addItems(withObjectValues: KMPDFConvertManager.defaultManager.languages_asc_strings)
-        if (self.languageIndex < self._languageVC!.numberOfItems) {
-            self._languageVC?.selectItem(at: self.languageIndex)
-        } else {
-            self._languageVC?.selectItem(at: 2)
-        }
-    }
-    
-    @objc func checkBoxAction(sender: NSButton) {
-#if VERSION_DMG
-        let isExist = KMResourceDownloadManager.manager.documentAIBundleExists()
-        if isExist || self._checkVC?.state == .Checked {
-            if let state = self._checkVC?.state {
-                self._checkVC?.state = state == .Checked ? .Norm : .Checked
-            }
-            
-            self._checkAction()
-        } else {
-            let alert = NSAlert()
-            alert.messageText = NSLocalizedString("Download OCR", comment: "")
-            alert.informativeText = NSLocalizedString("Using OCR requires downloading additional resource pack. Do you want to continue?", comment: "")
-            alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
-            alert.addButton(withTitle: NSLocalizedString("No", comment: ""))
-            alert.beginSheetModal(for: self.window!) { [weak self] result in
-                if (result == .alertFirstButtonReturn) { /// 取消
-                    self?.downLoad()
-                } else if result == .alertSecondButtonReturn {
-                    return
-                }
-            }
-        }
-#else
-        if let state = self._checkVC?.state {
-            self._checkVC?.state = state == .Checked ? .Norm : .Checked
-        }
-        
-        self._checkAction()
-#endif
-    }
-    
-#if VERSION_DMG
-    func downLoad() {
-        DispatchQueue.main.async {
-            self.showProgressWindow()
-            self.progressController?.maxValue = Double(100)
-        }
-        KMResourceDownloadManager.manager.downloadFramework(progress: { progress in
-            self.progressController?.doubleValue = Double(progress*100)
-        }, result: { result, downloadState  in
-            if result {
-                if let state = self._checkVC?.state {
-                    self._checkVC?.state = state == .Checked ? .Norm : .Checked
-                }
-                
-                self._checkAction()
-                
-                if let state = self._checkVC?.state {
-                    self._checkVC?.state = state == .Checked ? .Norm : .Checked
-                }
-                
-                self._checkAction()
-                self.hiddenProgressWindow()
-            } else if downloadState == .retry {
-                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: { [weak self] in
-                    self?.downLoad()
-                })
-            } else {
-                self.hiddenProgressWindow()
-            }
-        })
-    }
-#endif
-    
-    public func checkAction() {
-        self._checkAction()
-    }
-    
-    private func _checkAction() {
-        guard let state = self._checkVC?.state else {
-            return
-        }
-        
-        self._languageVC?.enabled = state == .Checked
-    }
-    
-    func showProgressWindow() {
-        let progress = SKProgressController()
-        progress.window?.backgroundColor = NSColor.km_init(hex: "#36383B")
-        progress.window?.contentView?.wantsLayer = true
-        progress.window?.contentView?.layer?.backgroundColor = NSColor.km_init(hex: "#36383B").cgColor
-        progress.progressField.textColor = NSColor.white
-        progress.message = NSLocalizedString("Download...", comment: "")
-
-        progress.closeBlock = { [weak self] in
-#if VERSION_DMG
-            KMResourceDownloadManager.manager.cancelDownload()
-#endif
-        }
-        
-        self.progressController = progress
-        self.window?.beginSheet(progress.window!)
-    }
-    
-    func hiddenProgressWindow() {
-        DispatchQueue.main.async {
-            self.progressController?.doubleValue = 100.0
-            if (self.progressController != nil) {
-                self.window?.endSheet((self.progressController?.window)!)
-                self.progressController = nil
-            }
-        }
-    }
-}
-
-extension KMConvertOCRSettingItemView: KMSelectPopButtonDelegate {
-    func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
-        if (obj.isEqual(to: self._languageVC)) {
-            guard let index = self._languageVC?.indexOfSelectedItem, index >= 0 else {
-                return
-            }
-            self._languageIndex = index
-            
-            guard let callback = self.lanugageDidSelected else {
-                return
-            }
-            callback(index, nil)
-        }
-    }
-}

+ 0 - 117
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertPageRangeSettingItemView.swift

@@ -1,117 +0,0 @@
-//
-//  KMConvertPageRangeSettingItemView.swift
-//  PDF Reader Pro
-//
-//  Created by tangchao on 2022/12/6.
-//
-
-import Cocoa
-
-typealias KMConvertPageRangeSettingItemViewTextDidEndEditing = (_ textString: String) -> ()
-class KMConvertPageRangeSettingItemView: KMConvertBaseView {
-    
-    @IBOutlet weak var titleLabel: NSTextField!
-    @IBOutlet weak var pageSizeComboBox: NSComboBox!
-    @IBOutlet weak var pageSizeBox: NSBox!
-
-    @IBOutlet weak var pagesizeBoxHeight: NSLayoutConstraint!
-    
-    var pageSizeVC: KMDesignSelect?
-
-    var pageRangeValue: String = ""
-    
-    var itemClick: KMCommonClickBlock?
-    var textDidEndEditingCallback: KMConvertPageRangeSettingItemViewTextDidEndEditing?
-    
-    var isTextDidEndCallback: Bool = false
-    var pageCount = 0
-    
-    override func initSubViews() {
-        super.initSubViews()
-        
-        self.pageSizeVC = KMDesignSelect.init(withType: .Combox)
-        self.pageSizeBox.contentView = self.pageSizeVC!.view
-        self.pageSizeVC?.removeAllItems()
-        self.pageSizeVC?.addItems(withObjectValues: [KMTools.pageRangeTypeString(pageRange: .all),
-                                               KMTools.pageRangeTypeString(pageRange: .current),
-                                               KMTools.pageRangeTypeString(pageRange: .odd),
-                                               KMTools.pageRangeTypeString(pageRange: .even),
-                                               KMTools.pageRangeTypeString(pageRange: .custom)])
-        self.pageSizeVC?.selectItem(at: 0)
-        self.pageSizeVC?.editable = false //默认属性,初始化可不设置
-        self.pageSizeVC?.delete = self
-        self.pageSizeVC?.placeholderString = NSLocalizedString("eg. 1,3-5,10", comment: "")
-        self.pageSizeVC?.updateUI()
-    }
-    
-    override func initDefaultVlaue() {
-        super.initDefaultVlaue()
-        
-        self.pageSizeBox.fillColor = .clear
-        
-        self.titleLabel.stringValue = NSLocalizedString("Page Range", comment: "")
-        self.titleLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.titleLabel.font = .SFProTextSemiboldFont(12)
-    }
-}
-
-extension KMConvertPageRangeSettingItemView: KMSelectPopButtonDelegate {
-    func km_controlTextDidChange(_ obj: KMDesignSelect) {
-        if let vc = self.pageSizeVC {
-            self.pageRangeValue = vc.stringValue
-        }
-    }
-    
-    func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
-        guard let vc = self.pageSizeVC else {
-            return
-        }
-        
-        if (!self.isTextDidEndCallback) {
-            return
-        }
-        if (vc.indexOfSelectedItem != (vc.numberOfItems-1)) {
-            /// 其他item切换
-            return
-        }
-        guard let callback = self.textDidEndEditingCallback else {
-            return
-        }
-        callback(vc.stringValue)
-    }
-    
-    func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
-        guard let vc = self.pageSizeVC else {
-            return
-        }
-
-        let index = vc.indexOfSelectedItem
-        if index < 0 {
-            return
-        }
-
-        if index == vc.numberOfItems-1 {
-            self.pageSizeVC?.editable = true
-            DispatchQueue.main.async { 
-                self.pageSizeVC?.stringValue = ""
-            }
-            self.window?.makeFirstResponder(self.pageSizeVC?.textField)
-        } else {
-            self.window?.makeFirstResponder(nil)
-            self.pageSizeVC?.editable = false
-        }
-
-        guard let callback = self.itemClick else {
-            return
-        }
-        callback(index)
-    }
-    
-    func km_SelectPopoverWillShow(_ obj: KMDesignSelect) {
-        if (self.pageCount <= 1) {
-            self.pageSizeVC?.disItems = [KMTools.pageRangeTypeString(pageRange: .even)]
-        } else {
-            self.pageSizeVC?.disItems = []
-        }
-    }
-}

+ 0 - 104
PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertWordSettingView.swift

@@ -1,104 +0,0 @@
-//
-//  KMConvertWordSettingView.swift
-//  PDF Reader Pro
-//
-//  Created by tangchao on 2022/12/6.
-//
-
-class KMConvertWordSettingView: KMConvertSettingView {
-
-    @IBOutlet weak var pageSettingTitleLabel: NSTextField!
-    
-    @IBOutlet weak var saveFlowTextRadio: KMImageTitleButton!
-    @IBOutlet weak var savePageLayoutRadio: KMImageTitleButton!
-    
-    @IBOutlet weak var textOCRBox: NSBox!
-    @IBOutlet weak var pageRangeBox: NSBox!
-    
-    private var flowTextVC: KMDesignButton?
-    private var pageLayoutVC: KMDesignButton?
-    
-    // 流排 0 框排 1
-    var pageSettingSelectedIndex: Int = 0
-    
-    override func awakeFromNib() {
-        super.awakeFromNib()
-        
-        self._flowTextAction()
-    }
-    
-    override func initSubViews() {
-        super.initSubViews()
-        
-        self.flowTextVC = KMDesignButton.init(withType: .RadioButton)
-        self.saveFlowTextRadio.addSubview(self.flowTextVC!.view)
-        self.flowTextVC?.view.frame = self.saveFlowTextRadio.bounds
-        self.flowTextVC?.view.autoresizingMask = [.width, .height]
-        self.flowTextVC?.target = self
-        self.flowTextVC?.action = #selector(saveFlowTextRadioAction)
-        self.flowTextVC?.stringValue = NSLocalizedString("Retain Flowing Text", comment: "")
-        self.flowTextVC?.checkbox_radio()
-        
-        self.pageLayoutVC = KMDesignButton.init(withType: .RadioButton)
-        self.savePageLayoutRadio.addSubview(self.pageLayoutVC!.view)
-        self.pageLayoutVC?.view.frame = self.savePageLayoutRadio.bounds
-        self.pageLayoutVC?.view.autoresizingMask = [.width, .height]
-        self.pageLayoutVC?.target = self
-        self.pageLayoutVC?.action = #selector(savePageLayoutRadioAction)
-        self.pageLayoutVC?.stringValue = NSLocalizedString("Retain Page Layout", comment: "")
-        self.pageLayoutVC?.checkbox_radio()
-        
-        self.tipView?.km_add_left_constraint(constant: 8)
-        self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
-        self.tipView?.km_add_right_constraint()
-//        self.tipView?.km_add_width_constraint(constant: 300)
-        self.tipView?.km_add_height_constraint(constant: 16+20+16)
-    }
-    
-    override func initDefaultVlaue() {
-        super.initDefaultVlaue()
-        
-        self.pageSettingTitleLabel.stringValue = NSLocalizedString("Layout Settings", comment: "")
-        self.pageSettingTitleLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.pageSettingTitleLabel.font = .SFProTextRegularFont(12)
-    }
-    
-    override func viewDidMoveToWindow() {
-        super.viewDidMoveToWindow()
-        
-        if (self.ocrItemView == nil) {
-            self.ocrItemView = KMConvertOCRSettingItemView.createFromNib()
-            self.textOCRBox.contentView = self.ocrItemView
-        }
-        self.ocrItemView?.languageIndex = self.ocrLanuguageIndex
-
-        if (self.pageRangeItemView == nil) {
-            self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
-            self.pageRangeBox.contentView = self.pageRangeItemView
-        }
-    }
-    
-    @objc func saveFlowTextRadioAction(sender: AnyObject) {
-        self._flowTextAction()
-    }
-
-    @objc func savePageLayoutRadioAction(sender: AnyObject) {
-        self._pageLayoutAction()
-    }
-    
-    // MARK: - Private Methods
-    
-    private func _flowTextAction() {
-        self.flowTextVC?.state = .Checked
-        self.pageLayoutVC?.state = .Norm
-
-        self.pageSettingSelectedIndex = 0
-    }
-    
-    private func _pageLayoutAction() {
-        self.pageLayoutVC?.state = .Checked
-        self.flowTextVC?.state = .Norm
-        
-        self.pageSettingSelectedIndex = 1
-    }
-}

+ 256 - 46
PDF Office/PDF Master/KMClass/Convert/Base/KMConvertBaseWindowController.swift

@@ -31,8 +31,8 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
     @IBOutlet weak var rightBoxHeightConst: NSLayoutConstraint!
     
     private var cancelButton_: ComponentButton?
-//    var convertButtonVC: KMDesignButton?
     private var convertButton_: ComponentButton?
+    private var batchButton_: ComponentButton?
     var backButtonVC: KMDesignButton?
     var nextButtonVC: KMDesignButton?
 
@@ -58,6 +58,7 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
     var pdfPreView: KMNPreView?
     
     private var convert: KMPDFConvert?
+    private var ocrLanguage_: COCRLanguage = .english
     
     var limit = true
     // 是否限制次数
@@ -99,7 +100,7 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         
         let view = KMNPreView.createFromNib()
         leftBox.contentView = view
-        self.pdfPreView = view
+        self.pdfPreView = view  
         
         if (self.documentModel != nil) {
 //            let document = CPDFDocument(url: self.documentModel!.documentURL)
@@ -125,14 +126,14 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
 //            self.settingView?.pageCount = Int(pageCount)
 //        }
 
-        batchButton.title = NSLocalizedString("Batch", comment: "")
+        batchButton.title = NSLocalizedString("", comment: "")
         batchButton.isBordered = false
-        batchButton.wantsLayer = true
-        batchButton.layer?.borderWidth = 1
-        batchButton.layer?.cornerRadius = 4
+//        batchButton.wantsLayer = true
+//        batchButton.layer?.borderWidth = 1
+//        batchButton.layer?.cornerRadius = 4
         batchButton.target = self
         batchButton.action = #selector(batchButtonAction)
-        batchButton.isHidden = true
+//        batchButton.isHidden = true
         
         self.prePDFView?.currentPageDidChanged = { [weak self] preView, idx in
             guard let pdfView = preView?.pdfView else {
@@ -238,11 +239,15 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         cancelButton_?.setTarget(self, action: #selector(cancelButtonAction))
         self.canelBox.contentView = self.cancelButton_
         
-        
-//        self.convertButtonVC = KMDesignButton.init(withType: .Text)
-//        self.convertBox.contentView = self.convertButtonVC!.view
         convertButton_ = ComponentButton()
         convertBox.contentView = convertButton_
+        
+        batchButton_ = ComponentButton()
+        batchButton_?.properties = ComponentButtonProperty(type: .default_tertiary, size: .s, state: .normal, buttonText: KMLocalizedString("Batch"))
+        batchButton_?.setTarget(self, action: #selector(batchButtonAction))
+        self.batchButton.addSubview(self.batchButton_!)
+        self.batchButton_?.frame = self.batchButton.bounds
+        self.batchButton_?.autoresizingMask = [.width, .height]
     }
     
     override func initDefaultValue() {
@@ -278,20 +283,16 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         self.nextButtonVC?.pagination()
         
         self.canelBox.fillColor = .clear
-//        self.canelButtonVC?.button.keyEquivalent = KMKeyEquivalent.esc.string()
+        self.cancelButton_?.keyEquivalent = KMKeyEquivalent.esc.string()
         
         self.convertBox.fillColor = .clear
-//        self.convertButtonVC?.target = self
-//        self.convertButtonVC?.action = #selector(convertButtonAction)
-//        self.convertButtonVC?.stringValue = NSLocalizedString("Convert", comment: "")
-//        self.convertButtonVC?.button(type: .Cta, size: .m)
-//        convertButtonVC.button.keyEquivalent = KMKeyEquivalent.enter
         convertButton_?.properties = ComponentButtonProperty(type: .primary,
                                                           size: .s,
                                                           state: .normal,
                                                           isDisable: false,
                                                           buttonText: KMLocalizedString("Convert"))
         convertButton_?.setTarget(self, action: #selector(convertButtonAction))
+        convertButton_?.keyEquivalent = KMKeyEquivalent.enter
         
         self.rightScrollView.hasVerticalScroller = false
         self.rightScrollView.hasHorizontalScroller = false
@@ -311,9 +312,9 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         self.totalNumberLabel.textColor = NSColor.titleColor()
         self.totalNumberLabel.font = .SFProTextRegularFont(12)
         
-        self.batchButton.setTitleColor(NSColor.buttonTitleColor())
-        self.batchButton.layer?.borderColor = NSColor.buttonBorderColor().cgColor
-        self.batchButton.font = .SFProTextRegularFont(14)
+//        self.batchButton.setTitleColor(NSColor.buttonTitleColor())
+//        self.batchButton.layer?.borderColor = NSColor.buttonBorderColor().cgColor
+//        self.batchButton.font = .SFProTextRegularFont(14)
     }
     
     func initSettingView() -> KMConvertSettingView? {
@@ -358,21 +359,23 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
     }
     
     @objc func batchButtonAction() {
-        guard let callback = itemClick else {
-            return
-        }
-        
-        callback(1)
+//        guard let callback = itemClick else {
+//            return
+//        }
+//
+//        callback(1)
+        self.own_closeEndSheet()
     }
     
     @objc func cancelButtonAction() {
         self._clearData()
         
-        guard let callback = itemClick else {
-            return
-        }
-        
-        callback(2)
+//        guard let callback = itemClick else {
+//            return
+//        }
+//
+//        callback(2)
+        self.own_closeEndSheet()
     }
     
     @objc func convertButtonAction() {
@@ -390,11 +393,12 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         if (FileManager.default.fileExists(atPath: filePath)) {
             try?FileManager.default.removeItem(atPath: filePath)
         }
-//        if ((self.prePDFView?.document?.writeDecrypt(to: URL(fileURLWithPath: filePath)))!) {
-//            for i in 0 ..< self.prePDFView!.document.pageCount {
-//                pages.append(Int(i)+1)
-//            }
-//        }
+        let document = self.pdfPreView?.pdfPreView.pdfView.document
+        if ((document?.writeDecrypt(to: URL(fileURLWithPath: filePath)))!) {
+            for i in 0 ..< document!.pageCount {
+                pages.append(Int(i)+1)
+            }
+        }
         
         if (pages.count <= 0) {
             let alert = NSAlert()
@@ -450,6 +454,7 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
             convert.isAllowOCR = isAllowOCR
             if let idx = self.settingView?.ocrItemView?.languageIndex {
 //                convert.ocrLanguage = KMPDFConvertManager.defaultManager.languages_asc[idx]
+                convert.ocrLanguage = self._getOCRLanguage(idx: idx)
             }
         } else {
             convert.isAllowOCR = false
@@ -735,11 +740,12 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
 //                }
 //            }
         } else {
-//            if ((self.prePDFView?.document?.writeDecrypt(to: URL(fileURLWithPath: filePath)))!) {
-//                for i in 0 ..< self.prePDFView!.document.pageCount {
-//                    pages.append(Int(i)+1)
-//                }
-//            }
+            let document = self.pdfPreView?.pdfPreView.pdfView.document
+            if ((document?.writeDecrypt(to: URL(fileURLWithPath: filePath)))!) {
+                for i in 0 ..< document!.pageCount {
+                    pages.append(Int(i)+1)
+                }
+            }
         }
         
         if (pages.count <= 0) {
@@ -752,13 +758,13 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         
         DispatchQueue.main.async {
             NSPanel.savePanel(self.window!) { panel in
-//                var url: URL = self.prePDFView!.document.documentURL
-//                if (self.oriDocumentUrl != nil) {
-//                    url = self.oriDocumentUrl!
-//                }
-//                let name = url.deletingPathExtension().lastPathComponent
-//                panel.nameFieldStringValue = name
-//                panel.allowedFileTypes = [self.fileExtension]
+                var url: URL = (self.pdfPreView?.pdfPreView.pdfView.document.documentURL)!
+                if (self.oriDocumentUrl != nil) {
+                    url = self.oriDocumentUrl!
+                }
+                let name = url.deletingPathExtension().lastPathComponent
+                panel.nameFieldStringValue = name
+                panel.allowedFileTypes = [self.fileExtension]
             } completion: { response, url in
                 if (response == .cancel) {
                     return
@@ -850,6 +856,210 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
         }
     }
     
+    private func _getOCRLanguage(idx: Int) -> COCRLanguage {
+        switch (idx) {
+            case 0: //chinese
+                self.ocrLanguage_ = .chinese
+                break
+            case 1: //chinese zht
+                self.ocrLanguage_ = .chineseTraditional
+                break
+            case 2: //English
+                self.ocrLanguage_ = .english
+                break
+            case 3:
+                //Japanese
+                self.ocrLanguage_ = .japanese
+                break
+            case 4:
+                //Kroean
+                self.ocrLanguage_ = .korean
+                break
+            case 5:
+                //Serbian
+                self.ocrLanguage_ = .serbian
+                break
+            case 6:
+                //Occitan
+                self.ocrLanguage_ = .occitan
+                break
+            case 7:
+                //Danish
+                self.ocrLanguage_ = .danish
+                break
+            case 8:
+                //German
+                self.ocrLanguage_ = .german
+                break
+            case 9:
+                //French
+                self.ocrLanguage_ = .french
+                break
+            case 10:
+                //Italian
+                self.ocrLanguage_ = .italian
+                break
+            case 11:
+                //Spanish
+                self.ocrLanguage_ = .spanish
+                break
+            case 12:
+                //Portuguese
+                self.ocrLanguage_ = .portuguese
+                break
+            case 13:
+                //Maori
+                self.ocrLanguage_ = .maori
+                break
+            case 14:
+                //Malay
+                self.ocrLanguage_ = .malay
+                break
+            case 15:
+                //Malay
+                self.ocrLanguage_ = .maltese
+                break
+            case 16:
+                //Dutch
+                self.ocrLanguage_ = .dutch
+                break
+            case 17:
+                //Norwegian
+                self.ocrLanguage_ = .norwegian
+                break
+            case 18:
+                //Polish
+                self.ocrLanguage_ = .polish
+                break
+            case 19:
+                //Romanian
+                self.ocrLanguage_ = .romanian
+                break
+            case 20:
+                //Slovak
+                self.ocrLanguage_ = .slovak
+                break
+            case 21:
+                //Slovenian
+                self.ocrLanguage_ = .slovenian
+                break
+            case 22:
+                //Albanian
+                self.ocrLanguage_ = .albanian
+                break
+            case 23:
+                //Swedish
+                self.ocrLanguage_ = .swedish
+                break
+            case 24:
+                //Swahili
+                self.ocrLanguage_ = .swahili
+                break
+            case 25:
+                //Tagalog
+                self.ocrLanguage_ = .tagalog
+                break
+            case 26:
+                //Turish
+                self.ocrLanguage_ = .turish
+                break
+            case 27:
+                //Uzbek
+                self.ocrLanguage_ = .uzbek
+                break
+            case 28:
+                //Vietnamese
+                self.ocrLanguage_ = .vietnamese
+                break
+            case 29:
+                //Afrikaans
+                self.ocrLanguage_ = .afrikaans
+                break
+            case 30:
+                //Azerbaijani
+                self.ocrLanguage_ = .azerbaijani
+                break
+            case 31:
+                //Bosnian
+                self.ocrLanguage_ = .bosnian
+                break
+            case 32:
+                //Czech
+                self.ocrLanguage_ = .czech
+                break
+            case 33: //Welsh
+                self.ocrLanguage_ = .welsh
+                break
+            case 34: //Estonian
+                self.ocrLanguage_ = .estonian
+                break
+             case 35: //Irish
+                self.ocrLanguage_ = .irish
+                break
+             case 36: //Croatian
+                self.ocrLanguage_ = .croatian
+                break
+            case 37: //Hungarian
+                self.ocrLanguage_ = .hungarian
+                break
+            case 38: //Indonesian
+                self.ocrLanguage_ = .indonesian
+                break
+            case 39: //Icelandic
+                self.ocrLanguage_ = .icelandic
+                break
+            case 40: //Kurdish
+                self.ocrLanguage_ = .kurdish
+                break
+            case 41: //Lithuanian
+                self.ocrLanguage_ = .lithuanian
+                break
+            case 42: //Latvian
+                self.ocrLanguage_ = .latvian
+                break
+            case 43: //Marathi
+                self.ocrLanguage_ = .marathi
+                break
+            case 44: //Nepali
+                self.ocrLanguage_ = .nepali
+                break
+            case 45: //Latvia
+                self.ocrLanguage_ = .latvian
+                break
+            case 46: //Bihari
+                self.ocrLanguage_ = .bihari
+                break
+            case 47: //Maithili
+                self.ocrLanguage_ = .maithili
+                break
+            case 48: //Angika
+                self.ocrLanguage_ = .angika
+                break
+            case 49: //Bhojpuri
+                self.ocrLanguage_ = .bhojpuri
+                break
+            case 50: //Magahi
+                self.ocrLanguage_ = .magahi
+                break
+            case 51: //Nagpur
+                self.ocrLanguage_ = .nagpur
+                break
+            case 52: //Newari
+                self.ocrLanguage_ = .newari
+                break
+            case 53: //GoanKonkani
+                self.ocrLanguage_ = .goanKonkani
+                break
+            case 54: //SaudiArabia
+                self.ocrLanguage_ = .saudiArabia
+                break
+            default:
+                self.ocrLanguage_ = .english
+                break
+        }
+        return self.ocrLanguage_
+    }
+    
     // MARK: - Notifation Methods
     
     @objc private func km_windowWillCloseNotifation() {

+ 25 - 25
PDF Office/PDF Master/KMClass/Convert/Base/KMConvertBaseWindowController.xib

@@ -1,8 +1,8 @@
 <?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">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
         <capability name="System colors introduced in macOS 10.13" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -32,7 +32,7 @@
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="586" height="483"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="875"/>
             <value key="minSize" type="size" width="586" height="483"/>
             <value key="maxSize" type="size" width="586" height="483"/>
             <view key="contentView" id="se5-gp-TjO">
@@ -45,7 +45,7 @@
                             <rect key="frame" x="0.0" y="0.0" width="586" height="44"/>
                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             <subviews>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FhR-40-9KK">
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FhR-40-9KK">
                                     <rect key="frame" x="14" y="10" width="44" height="19"/>
                                     <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="i7C-Qe-kqF">
                                         <font key="font" metaFont="system" size="16"/>
@@ -75,7 +75,7 @@
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="XyN-M5-Ckr">
                                     <rect key="frame" x="56" y="16" width="56" height="24"/>
                                     <subviews>
-                                        <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0fT-PL-boX">
+                                        <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0fT-PL-boX">
                                             <rect key="frame" x="8" y="2" width="40" height="21"/>
                                             <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="PMO-9h-eKH">
                                                 <font key="font" usesAppearanceFont="YES"/>
@@ -92,7 +92,7 @@
                                         <constraint firstItem="0fT-PL-boX" firstAttribute="centerY" secondItem="XyN-M5-Ckr" secondAttribute="centerY" id="t3M-pb-lv4"/>
                                     </constraints>
                                 </customView>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OjN-CY-T87">
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OjN-CY-T87">
                                     <rect key="frame" x="118" y="18" width="9" height="20"/>
                                     <textFieldCell key="cell" lineBreakMode="clipping" title="/" id="B2h-9Y-2H7">
                                         <font key="font" metaFont="system" size="17"/>
@@ -100,7 +100,7 @@
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                     </textFieldCell>
                                 </textField>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b9V-3O-PC8">
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="b9V-3O-PC8">
                                     <rect key="frame" x="131" y="20" width="32" height="16"/>
                                     <constraints>
                                         <constraint firstAttribute="width" relation="lessThanOrEqual" constant="28" id="Iqf-l4-eTt"/>
@@ -168,21 +168,21 @@
                                 <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jkb-2v-6fa">
                                     <rect key="frame" x="0.0" y="0.0" width="358" height="391"/>
                                     <clipView key="contentView" id="tI2-Vq-Nms">
-                                        <rect key="frame" x="0.0" y="0.0" width="343" height="376"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="358" height="391"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                         <subviews>
                                             <view id="dBH-xr-mGL">
-                                                <rect key="frame" x="0.0" y="0.0" width="328" height="361"/>
+                                                <rect key="frame" x="0.0" y="0.0" width="343" height="376"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                             </view>
                                         </subviews>
                                     </clipView>
                                     <scroller key="horizontalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="MLK-hj-eAf">
-                                        <rect key="frame" x="0.0" y="376" width="343" height="15"/>
+                                        <rect key="frame" x="0.0" y="375" width="358" height="16"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                     </scroller>
                                     <scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="L4p-RZ-VGS">
-                                        <rect key="frame" x="343" y="0.0" width="15" height="376"/>
+                                        <rect key="frame" x="342" y="0.0" width="16" height="391"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                     </scroller>
                                 </scrollView>
@@ -209,14 +209,14 @@
                                 </box>
                                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iFO-Ki-C0L">
                                     <rect key="frame" x="16" y="16" width="70" height="32"/>
-                                    <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="d7s-3h-qfP">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                    </buttonCell>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="32" id="C1r-dK-Ys8"/>
                                         <constraint firstAttribute="width" constant="70" id="JwP-9x-Fn9"/>
                                     </constraints>
+                                    <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="d7s-3h-qfP">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
                                 </button>
                                 <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Xgn-Dg-lq9">
                                     <rect key="frame" x="394" y="16" width="80" height="32"/>
@@ -290,7 +290,7 @@
                         <rect key="frame" x="0.0" y="0.0" width="276" height="88"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="whh-eW-WBM">
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="whh-eW-WBM">
                                 <rect key="frame" x="14" y="67" width="35" height="15"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="ROy-KL-lN4">
                                     <font key="font" metaFont="cellTitle"/>
@@ -298,13 +298,13 @@
                                     <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 </textFieldCell>
                             </textField>
-                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="sIu-Jp-911" customClass="KMImageTitleButton" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="sIu-Jp-911" customClass="ComponentRadio" customModule="KMComponentLibrary">
                                 <rect key="frame" x="16" y="37" width="244" height="22"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="22" id="vJn-IG-4gT"/>
                                 </constraints>
                             </customView>
-                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="y6s-OJ-cG8" customClass="KMImageTitleButton" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="y6s-OJ-cG8" customClass="ComponentRadio" customModule="KMComponentLibrary">
                                 <rect key="frame" x="16" y="7" width="244" height="22"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="22" id="obd-W8-at7"/>
@@ -371,7 +371,7 @@
             <rect key="frame" x="0.0" y="0.0" width="276" height="86"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hUX-cE-if5">
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hUX-cE-if5">
                     <rect key="frame" x="14" y="71" width="35" height="15"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="tdB-aW-iJn">
                         <font key="font" metaFont="cellTitle"/>
@@ -424,7 +424,7 @@
             <rect key="frame" x="0.0" y="0.0" width="280" height="76"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yO0-Oi-VYM">
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yO0-Oi-VYM">
                     <rect key="frame" x="14" y="60" width="37" height="16"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Z4k-2p-kHi">
                         <font key="font" usesAppearanceFont="YES"/>
@@ -468,7 +468,7 @@
                         <rect key="frame" x="0.0" y="0.0" width="276" height="80"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ezu-db-Vdi">
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ezu-db-Vdi">
                                 <rect key="frame" x="14" y="65" width="35" height="15"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="50D-1S-EUR">
                                     <font key="font" metaFont="cellTitle"/>
@@ -506,7 +506,7 @@
                         <rect key="frame" x="0.0" y="0.0" width="276" height="80"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="F2Q-wA-eBY">
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="F2Q-wA-eBY">
                                 <rect key="frame" x="14" y="64" width="37" height="16"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="bMK-zp-HOX">
                                     <font key="font" usesAppearanceFont="YES"/>
@@ -586,8 +586,8 @@
                                     <font key="font" metaFont="system"/>
                                 </buttonCell>
                             </button>
-                            <comboBox hidden="YES" focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uah-L1-IyT">
-                                <rect key="frame" x="31" y="-22" width="215" height="23"/>
+                            <comboBox hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uah-L1-IyT">
+                                <rect key="frame" x="32" y="-23" width="214" height="25"/>
                                 <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="X1R-ss-GZO">
                                     <font key="font" metaFont="system"/>
                                     <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@@ -702,7 +702,7 @@
                         <rect key="frame" x="0.0" y="0.0" width="270" height="200"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MHF-XE-yf0">
+                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MHF-XE-yf0">
                                 <rect key="frame" x="14" y="184" width="37" height="16"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Z4s-Tq-fFY">
                                     <font key="font" usesAppearanceFont="YES"/>

PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertCSVSettingView.swift → PDF Office/PDF Master/KMClass/Convert/View/KMConvertCSVSettingView.swift


PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertExcelSettingView.swift → PDF Office/PDF Master/KMClass/Convert/View/KMConvertExcelSettingView.swift


PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertImageSettingView.swift → PDF Office/PDF Master/KMClass/Convert/View/KMConvertImageSettingView.swift


+ 341 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertOCRSettingItemView.swift

@@ -0,0 +1,341 @@
+//
+//  KMConvertOCRSettingItemView.swift
+//  PDF Reader Pro
+//
+//  Created by tangchao on 2022/12/6.
+//
+
+import KMComponentLibrary
+
+class KMConvertOCRSettingItemView: KMConvertBaseView {
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var checkBox: NSBox!
+    @IBOutlet weak var languageBox: NSBox!
+    
+    private var _checkVC: KMDesignButton?
+    var checkVC: KMDesignButton? {
+        get {
+            return self._checkVC
+        }
+    }
+    
+    private lazy var checkView_: ComponentCheckBox = {
+        let view = ComponentCheckBox()
+        view.properties = ComponentCheckBoxProperty(size: .s,
+                                                                state: .normal,
+                                                                isDisabled: false,
+                                                                showhelp: false,
+                                                                text: NSLocalizedString("Recognize text if needed", comment: ""),
+                                                                checkboxType: .normal)
+        return view
+    }()
+    var checkView: ComponentCheckBox {
+        get {
+            return checkView_
+        }
+    }
+    
+    private var _languageVC: KMDesignSelect?
+    var progressController: SKProgressController?
+    
+    private lazy var languageView_: ComponentSelect = {
+        let view = ComponentSelect()
+        
+        view.properties = ComponentSelectProperties(size: .s,
+                                                                state: .normal,
+                                                                isDisabled: false,
+                                                                isError: false,
+                                                                leftIcon: false,
+                                                                placeholder: nil,
+                                                                errorText: nil,
+                                                                creatable: false,
+                                                                text: KMLocalizedString("Odd Pages Only", comment: ""))
+        view.delegate = self
+        return view
+    }()
+    
+    private lazy var languages_: [String] = {
+        return ["Chinese", "Chinese Traditional", "English", "Japanese",
+        "Kroean",
+        "Serbian",
+        "Occitan",
+        "Danish",
+        "German",
+        "French",
+         "Italian",
+         "Spanish",
+         "Portuguese",
+         "Maori",
+         "Malay",
+         "Maltese",
+         "Dutch",
+         "Norwegian",
+         "Polish",
+         "Romanian",
+         "Slovak",
+         "Slovenian",
+         "Albanian",
+         "Swedish",
+         "Swahili",
+         "Tagalog",
+         "Turish",
+         "Uzbek",
+         "Vietnamese",
+         "Afrikaans",
+         "Azerbaijani",
+         "Bosnian",
+         "Czech",
+         "Welsh",
+         "Estonian",
+         "Irish",
+         "Croatian",
+         "Hungarian",
+         "Indonesian",
+         "Icelandic",
+         "Kurdish",
+         "Lithuanian",
+         "Latvian"]
+    }()
+
+    private var _languageIndex: Int = 0
+    var languageIndex: Int {
+        get {
+            return self._languageIndex
+        }
+        set {
+            self._languageIndex = newValue
+            
+//            self._languageVC?.selectItem(at: newValue)
+            self.languageView_.selectItemAtIndex(newValue)
+        }
+    }
+    
+    var lanugageDidSelected: KMValueDidChangeBlock?
+    var reachabilityAlert: NSAlert?
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self._checkAction()
+    }
+    
+    override func initSubViews() {
+        super.initSubViews()
+        
+//        self._checkVC = KMDesignButton(withType: .CheckBox)
+//        self.checkBox.contentView = self._checkVC!.view
+        self.checkBox.contentView = self.checkView_
+        
+        self._languageVC = KMDesignSelect(withType: .Combox)
+        self.languageBox.contentView = self._languageVC?.view
+    }
+    
+    override func initDefaultVlaue() {
+        super.initDefaultVlaue()
+        
+        self.titleLabel.stringValue = NSLocalizedString("OCR Settings", comment: "")
+        self.titleLabel.textColor = NSColor.km_init(hex: "#616469")
+        self.titleLabel.font = .SFProTextRegularFont(12)
+        
+        self.checkBox.fillColor = .clear
+//        self._checkVC?.target = self
+//        self._checkVC?.action = #selector(checkBoxAction)
+//        self._checkVC?.stringValue = NSLocalizedString("Recognize text if needed", comment: "")
+//        self._checkVC?.checkbox_radio()
+//        self._checkVC?.state = .Custom
+        self.checkView_.setTarget(self, action: #selector(checkBoxAction))
+        
+        self.languageBox.fillColor = .clear
+//        self._languageVC?.delete = self
+
+//        self._languageVC?.isScrollPop = true
+//        self._languageVC?.removeAllItems()
+//        self._languageVC?.addItems(withObjectValues: KMPDFConvertManager.defaultManager.languages_asc_strings)
+//        self._languageVC?.addItems(withObjectValues: self.languages_)
+//        if (self.languageIndex < self._languageVC!.numberOfItems) {
+//            self._languageVC?.selectItem(at: self.languageIndex)
+//        } else {
+//            self._languageVC?.selectItem(at: 2)
+//        }
+        self.languageBox.contentView = self.languageView_
+        
+        var menuItemArr: [ComponentMenuitemProperty] = []
+        for language in languages_ {
+            let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
+                                                                                    itemSelected: false,
+                                                                                    isDisabled: false,
+                                                                                    keyEquivalent: nil,
+                                                                                    text: language)
+            menuItemArr.append(itemProperty)
+        }
+
+        
+        languageView_.updateMenuItemsArr(menuItemArr)
+        
+        languageView_.selectItemAtIndex(0)
+        languageView_.properties.creatable = false
+        languageView_.properties.text = ""
+//        KMNTools.parseIndexPathsSet(indexSets: selectionIndexPaths)
+        languageView_.reloadData()
+        
+    }
+    
+    @objc func checkBoxAction(sender: NSButton) {
+#if VERSION_DMG
+        let isExist = KMResourceDownloadManager.manager.documentAIBundleExists()
+        if isExist || self._checkVC?.state == .Checked {
+            if let state = self._checkVC?.state {
+                self._checkVC?.state = state == .Checked ? .Norm : .Checked
+            }
+            
+            self._checkAction()
+        } else {
+            let alert = NSAlert()
+            alert.messageText = NSLocalizedString("Download OCR", comment: "")
+            alert.informativeText = NSLocalizedString("Using OCR requires downloading additional resource pack. Do you want to continue?", comment: "")
+            alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+            alert.addButton(withTitle: NSLocalizedString("No", comment: ""))
+            alert.beginSheetModal(for: self.window!) { [weak self] result in
+                if (result == .alertFirstButtonReturn) { /// 取消
+                    self?.downLoad()
+                } else if result == .alertSecondButtonReturn {
+                    return
+                }
+            }
+        }
+#else
+        if let state = self._checkVC?.state {
+            self._checkVC?.state = state == .Checked ? .Norm : .Checked
+        }
+        
+        self._checkAction()
+#endif
+    }
+    
+#if VERSION_DMG
+    func downLoad() {
+        DispatchQueue.main.async {
+            self.showProgressWindow()
+            self.progressController?.maxValue = Double(100)
+        }
+        KMResourceDownloadManager.manager.downloadFramework(progress: { progress in
+            self.progressController?.doubleValue = Double(progress*100)
+        }, result: { result, downloadState  in
+            if result {
+                if let state = self._checkVC?.state {
+                    self._checkVC?.state = state == .Checked ? .Norm : .Checked
+                }
+                
+                self._checkAction()
+                
+                if let state = self._checkVC?.state {
+                    self._checkVC?.state = state == .Checked ? .Norm : .Checked
+                }
+                
+                self._checkAction()
+                self.hiddenProgressWindow()
+            } else if downloadState == .retry {
+                DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2, execute: { [weak self] in
+                    self?.downLoad()
+                })
+            } else {
+                self.hiddenProgressWindow()
+            }
+        })
+    }
+#endif
+    
+    public func checkAction() {
+        self._checkAction()
+    }
+    
+    private func _checkAction() {
+//        guard let state = self._checkVC?.state else {
+//            return
+//        }
+//
+//        self._languageVC?.enabled = state == .Checked
+        let state = self.checkView_.properties.checkboxType
+        languageView_.properties.isDisabled = state != .selected
+        languageView_.reloadData()
+    }
+    
+    func showProgressWindow() {
+        let progress = SKProgressController()
+        progress.window?.backgroundColor = NSColor.km_init(hex: "#36383B")
+        progress.window?.contentView?.wantsLayer = true
+        progress.window?.contentView?.layer?.backgroundColor = NSColor.km_init(hex: "#36383B").cgColor
+        progress.progressField.textColor = NSColor.white
+        progress.message = NSLocalizedString("Download...", comment: "")
+
+        progress.closeBlock = { [weak self] in
+#if VERSION_DMG
+            KMResourceDownloadManager.manager.cancelDownload()
+#endif
+        }
+        
+        self.progressController = progress
+        self.window?.beginSheet(progress.window!)
+    }
+    
+    func hiddenProgressWindow() {
+        DispatchQueue.main.async {
+            self.progressController?.doubleValue = 100.0
+            if (self.progressController != nil) {
+                self.window?.endSheet((self.progressController?.window)!)
+                self.progressController = nil
+            }
+        }
+    }
+}
+
+extension KMConvertOCRSettingItemView: KMSelectPopButtonDelegate {
+    func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
+        if (obj.isEqual(to: self._languageVC)) {
+            guard let index = self._languageVC?.indexOfSelectedItem, index >= 0 else {
+                return
+            }
+            self._languageIndex = index
+            
+            guard let callback = self.lanugageDidSelected else {
+                return
+            }
+            callback(index, nil)
+        }
+    }
+}
+
+extension KMConvertOCRSettingItemView: ComponentSelectDelegate {
+    func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
+//        if(view == splitRangeSelect) {
+//            let pageRangeSelectIndex = splitRangeSelect.indexOfSelect()
+//            var isEditIndex:Int = 2
+//
+//            if(orgDocument?.pageCount ?? 0 <= 1) {
+//                isEditIndex = 1
+//            }
+//            if (pageRangeSelectIndex == isEditIndex) {
+//                splitRangeSelect.properties.text = ""
+//
+//                splitRangeSelect.properties.placeholder = KMLocalizedString("e.g. 1,3-5,10")
+//                splitRangeSelect.properties.creatable = true
+//            } else {
+//                splitRangeSelect.properties.placeholder = ""
+//                splitRangeSelect.properties.creatable = false
+//            }
+//            splitRangeSelect.reloadData()
+//
+//
+//        }
+        
+        guard let index = view?.indexOfSelect(), index >= 0 else {
+            return
+        }
+        self._languageIndex = index
+        
+        guard let callback = self.lanugageDidSelected else {
+            return
+        }
+        callback(index, nil)
+    }
+}

PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertPPTsSettingView.swift → PDF Office/PDF Master/KMClass/Convert/View/KMConvertPPTsSettingView.swift


+ 185 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertPageRangeSettingItemView.swift

@@ -0,0 +1,185 @@
+//
+//  KMConvertPageRangeSettingItemView.swift
+//  PDF Reader Pro
+//
+//  Created by tangchao on 2022/12/6.
+//
+
+import Cocoa
+import KMComponentLibrary
+
+typealias KMConvertPageRangeSettingItemViewTextDidEndEditing = (_ textString: String) -> ()
+class KMConvertPageRangeSettingItemView: KMConvertBaseView {
+    
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var pageSizeComboBox: NSComboBox!
+    @IBOutlet weak var pageSizeBox: NSBox!
+
+    @IBOutlet weak var pagesizeBoxHeight: NSLayoutConstraint!
+    
+    var pageSizeVC: KMDesignSelect?
+
+    var pageRangeValue: String = ""
+    
+    var itemClick: KMCommonClickBlock?
+    var textDidEndEditingCallback: KMConvertPageRangeSettingItemViewTextDidEndEditing?
+    
+    var isTextDidEndCallback: Bool = false
+    var pageCount = 0
+    
+    private lazy var pageRangeView_: ComponentSelect = {
+        let view = ComponentSelect()
+        
+        view.properties = ComponentSelectProperties(size: .s,
+                                                                state: .normal,
+                                                                isDisabled: false,
+                                                                isError: false,
+                                                                leftIcon: false,
+                                                                placeholder: nil,
+                                                                errorText: nil,
+                                                                creatable: false,
+                                                                text: KMLocalizedString("Odd Pages Only", comment: ""))
+        view.delegate = self
+        return view
+    }()
+    
+    override func initSubViews() {
+        super.initSubViews()
+        
+//        self.pageSizeVC = KMDesignSelect.init(withType: .Combox)
+////        self.pageSizeBox.contentView = self.pageSizeVC!.view
+//        self.pageSizeVC?.removeAllItems()
+//        self.pageSizeVC?.addItems(withObjectValues: [KMTools.pageRangeTypeString(pageRange: .all),
+//                                               KMTools.pageRangeTypeString(pageRange: .current),
+//                                               KMTools.pageRangeTypeString(pageRange: .odd),
+//                                               KMTools.pageRangeTypeString(pageRange: .even),
+//                                               KMTools.pageRangeTypeString(pageRange: .custom)])
+//        self.pageSizeVC?.selectItem(at: 0)
+//        self.pageSizeVC?.editable = false //默认属性,初始化可不设置
+//        self.pageSizeVC?.delete = self
+//        self.pageSizeVC?.placeholderString = NSLocalizedString("eg. 1,3-5,10", comment: "")
+//        self.pageSizeVC?.updateUI()
+        
+        self.pageSizeBox.contentView = self.pageRangeView_
+        
+        let strings = [KMTools.pageRangeTypeString(pageRange: .all),
+                       KMTools.pageRangeTypeString(pageRange: .current),
+                       KMTools.pageRangeTypeString(pageRange: .odd),
+                       KMTools.pageRangeTypeString(pageRange: .even),
+                       KMTools.pageRangeTypeString(pageRange: .custom)]
+        var menuItemArr: [ComponentMenuitemProperty] = []
+        for str in strings {
+            let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
+                                                                                    itemSelected: false,
+                                                                                    isDisabled: false,
+                                                                                    keyEquivalent: nil,
+                                                                                    text: str)
+            menuItemArr.append(itemProperty)
+        }
+
+        
+        pageRangeView_.updateMenuItemsArr(menuItemArr)
+        
+        pageRangeView_.selectItemAtIndex(0)
+        pageRangeView_.properties.creatable = false
+        pageRangeView_.properties.text = ""
+//        KMNTools.parseIndexPathsSet(indexSets: selectionIndexPaths)
+        pageRangeView_.reloadData()
+    }
+    
+    override func initDefaultVlaue() {
+        super.initDefaultVlaue()
+        
+        self.pageSizeBox.fillColor = .clear
+        
+        self.titleLabel.stringValue = NSLocalizedString("Page Range", comment: "")
+        self.titleLabel.textColor = NSColor.km_init(hex: "#616469")
+        self.titleLabel.font = .SFProTextSemiboldFont(12)
+    }
+}
+
+extension KMConvertPageRangeSettingItemView: KMSelectPopButtonDelegate {
+    func km_controlTextDidChange(_ obj: KMDesignSelect) {
+        if let vc = self.pageSizeVC {
+            self.pageRangeValue = vc.stringValue
+        }
+    }
+    
+    func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
+        guard let vc = self.pageSizeVC else {
+            return
+        }
+        
+        if (!self.isTextDidEndCallback) {
+            return
+        }
+        if (vc.indexOfSelectedItem != (vc.numberOfItems-1)) {
+            /// 其他item切换
+            return
+        }
+        guard let callback = self.textDidEndEditingCallback else {
+            return
+        }
+        callback(vc.stringValue)
+    }
+    
+    func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
+        guard let vc = self.pageSizeVC else {
+            return
+        }
+
+        let index = vc.indexOfSelectedItem
+        if index < 0 {
+            return
+        }
+
+        if index == vc.numberOfItems-1 {
+            self.pageSizeVC?.editable = true
+            DispatchQueue.main.async { 
+                self.pageSizeVC?.stringValue = ""
+            }
+            self.window?.makeFirstResponder(self.pageSizeVC?.textField)
+        } else {
+            self.window?.makeFirstResponder(nil)
+            self.pageSizeVC?.editable = false
+        }
+
+        guard let callback = self.itemClick else {
+            return
+        }
+        callback(index)
+    }
+    
+    func km_SelectPopoverWillShow(_ obj: KMDesignSelect) {
+        if (self.pageCount <= 1) {
+            self.pageSizeVC?.disItems = [KMTools.pageRangeTypeString(pageRange: .even)]
+        } else {
+            self.pageSizeVC?.disItems = []
+        }
+    }
+}
+
+extension KMConvertPageRangeSettingItemView: ComponentSelectDelegate {
+    func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
+//        if(view == splitRangeSelect) {
+//            let pageRangeSelectIndex = splitRangeSelect.indexOfSelect()
+//            var isEditIndex:Int = 2
+//
+//            if(orgDocument?.pageCount ?? 0 <= 1) {
+//                isEditIndex = 1
+//            }
+//            if (pageRangeSelectIndex == isEditIndex) {
+//                splitRangeSelect.properties.text = ""
+//
+//                splitRangeSelect.properties.placeholder = KMLocalizedString("e.g. 1,3-5,10")
+//                splitRangeSelect.properties.creatable = true
+//            } else {
+//                splitRangeSelect.properties.placeholder = ""
+//                splitRangeSelect.properties.creatable = false
+//            }
+//            splitRangeSelect.reloadData()
+//
+//
+//        }
+    }
+}

PDF Office/PDF Master/Class/PDFTools/Convert/View/KMConvertSettingLimitTipView.swift → PDF Office/PDF Master/KMClass/Convert/View/KMConvertSettingLimitTipView.swift


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

@@ -127,10 +127,10 @@ class KMConvertSettingView: KMConvertBaseView {
     
     var ocrEnabled: Bool {
         get {
-            guard let state = self.ocrItemView?.checkVC?.state else {
+            guard let state = self.ocrItemView?.checkView.properties.checkboxType else {
                 return false
             }
-            return state == .Checked
+            return state == .selected
          }
     }
     

+ 134 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertWordSettingView.swift

@@ -0,0 +1,134 @@
+//
+//  KMConvertWordSettingView.swift
+//  PDF Reader Pro
+//
+//  Created by tangchao on 2022/12/6.
+//
+
+import KMComponentLibrary
+
+class KMConvertWordSettingView: KMConvertSettingView {
+
+    @IBOutlet weak var pageSettingTitleLabel: NSTextField!
+    
+    @IBOutlet weak var saveFlowTextRadio: ComponentRadio!
+    @IBOutlet weak var savePageLayoutRadio: ComponentRadio!
+    
+    @IBOutlet weak var textOCRBox: NSBox!
+    @IBOutlet weak var pageRangeBox: NSBox!
+    
+    private var flowTextVC: KMDesignButton?
+    private var pageLayoutVC: KMDesignButton?
+    
+    // 流排 0 框排 1
+    var pageSettingSelectedIndex: Int = 0
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        saveFlowTextRadio.properties = ComponentCheckBoxProperty(size: .s,
+                                                               state: .normal,
+                                                               isDisabled: false,
+                                                               showhelp: false,
+                                                               text: NSLocalizedString("Retain Flowing Text", comment: ""),
+                                                               checkboxType: .normal)
+        saveFlowTextRadio.setTarget(self, action: #selector(saveFlowTextRadioAction))
+        
+        savePageLayoutRadio.properties = ComponentCheckBoxProperty(size: .s,
+                                                               state: .normal,
+                                                               isDisabled: false,
+                                                               showhelp: false,
+                                                               text: NSLocalizedString("Retain Page Layout", comment: ""),
+                                                               checkboxType: .normal)
+        savePageLayoutRadio.setTarget(self, action: #selector(savePageLayoutRadioAction))
+        
+        self._flowTextAction()
+    }
+    
+    override func initSubViews() {
+        super.initSubViews()
+        
+//        self.flowTextVC = KMDesignButton.init(withType: .RadioButton)
+//        self.saveFlowTextRadio.addSubview(self.flowTextVC!.view)
+//        self.flowTextVC?.view.frame = self.saveFlowTextRadio.bounds
+//        self.flowTextVC?.view.autoresizingMask = [.width, .height]
+//        self.flowTextVC?.target = self
+//        self.flowTextVC?.action = #selector(saveFlowTextRadioAction)
+//        self.flowTextVC?.stringValue = NSLocalizedString("Retain Flowing Text", comment: "")
+//        self.flowTextVC?.checkbox_radio()
+        
+//        self.pageLayoutVC = KMDesignButton.init(withType: .RadioButton)
+//        self.savePageLayoutRadio.addSubview(self.pageLayoutVC!.view)
+//        self.pageLayoutVC?.view.frame = self.savePageLayoutRadio.bounds
+//        self.pageLayoutVC?.view.autoresizingMask = [.width, .height]
+//        self.pageLayoutVC?.target = self
+//        self.pageLayoutVC?.action = #selector(savePageLayoutRadioAction)
+//        self.pageLayoutVC?.stringValue = NSLocalizedString("Retain Page Layout", comment: "")
+//        self.pageLayoutVC?.checkbox_radio()
+        
+        self.tipView?.km_add_left_constraint(constant: 8)
+        self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
+        self.tipView?.km_add_right_constraint()
+//        self.tipView?.km_add_width_constraint(constant: 300)
+        self.tipView?.km_add_height_constraint(constant: 16+20+16)
+    }
+    
+    override func initDefaultVlaue() {
+        super.initDefaultVlaue()
+        
+        self.pageSettingTitleLabel.stringValue = NSLocalizedString("Layout Settings", comment: "")
+        self.pageSettingTitleLabel.textColor = NSColor.km_init(hex: "#616469")
+        self.pageSettingTitleLabel.font = .SFProTextRegularFont(12)
+    }
+    
+    override func viewDidMoveToWindow() {
+        super.viewDidMoveToWindow()
+        
+        if (self.ocrItemView == nil) {
+            self.ocrItemView = KMConvertOCRSettingItemView.createFromNib()
+            self.textOCRBox.contentView = self.ocrItemView
+        }
+        self.ocrItemView?.languageIndex = self.ocrLanuguageIndex
+
+        if (self.pageRangeItemView == nil) {
+            self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
+            self.pageRangeBox.contentView = self.pageRangeItemView
+        }
+    }
+    
+    @objc func saveFlowTextRadioAction(sender: AnyObject) {
+        self._flowTextAction()
+    }
+
+    @objc func savePageLayoutRadioAction(sender: AnyObject) {
+        self._pageLayoutAction()
+    }
+    
+    // MARK: - Private Methods
+    
+    private func _flowTextAction() {
+        self.flowTextVC?.state = .Checked
+        self.pageLayoutVC?.state = .Norm
+
+        self.saveFlowTextRadio.properties.checkboxType = .selected
+        self.saveFlowTextRadio.reloadData()
+        
+        self.savePageLayoutRadio.properties.checkboxType = .normal
+        self.savePageLayoutRadio.reloadData()
+        
+        self.pageSettingSelectedIndex = 0
+    }
+    
+    private func _pageLayoutAction() {
+        self.pageLayoutVC?.state = .Checked
+        self.flowTextVC?.state = .Norm
+        
+        self.savePageLayoutRadio.properties.checkboxType = .selected
+        self.savePageLayoutRadio.reloadData()
+        
+        self.saveFlowTextRadio.properties.checkboxType = .normal
+        self.saveFlowTextRadio.reloadData()
+        
+        self.pageSettingSelectedIndex = 1
+    }
+}

+ 1 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/KMPDFViewController.swift

@@ -213,7 +213,7 @@ extension KMPDFViewController: KMPDFToolbarControllerDelegate {
             let winC = KMConvertWordWindowController()
             let model = KMDocumentModel(url: self.pdfView.document.documentURL)
             winC.documentModel = model
-            self.km_safe_beginSheet(windowC: winC)
+            winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if itemIdentifier == KMPDFToolbar_PageEdit_InsertFile_Identifier {
             pageEditViewController?.insertFromPDFAction()
         } else if itemIdentifier == KMPDFToolbar_PageEdit_InsertBlank_Identifier {

+ 2 - 2
PDF Office/PDF Master/KMClass/Tools/PDFPreview/KMNPDFPreView.swift

@@ -63,8 +63,8 @@ class KMNPDFPreView: NSView {
     }
     
     func initDefaultValue() {
-        self.contentBox_.borderWidth = 2
-        self.contentBox_.borderColor = .red
+        self.contentBox_.borderWidth = 0
+//        self.contentBox_.borderColor = .red
     }
     
     func setFileUrl(_ fileUrl: URL, password: String?) {

+ 5 - 5
PDF Office/PDF Master/KMClass/Tools/PDFPreview/KMNPreView.xib

@@ -13,19 +13,19 @@
             <rect key="frame" x="0.0" y="0.0" width="232" height="338"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="qv8-xQ-3Pe">
+                <box boxType="custom" borderWidth="0.0" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="qv8-xQ-3Pe">
                     <rect key="frame" x="0.0" y="0.0" width="232" height="338"/>
                     <view key="contentView" id="vnz-fF-JHm">
-                        <rect key="frame" x="1" y="1" width="230" height="336"/>
+                        <rect key="frame" x="0.0" y="0.0" width="232" height="338"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="YyT-05-l2S" customClass="KMNPDFPreView" customModule="PDF_Reader_Pro" customModuleProvider="target">
-                                <rect key="frame" x="16" y="56" width="198" height="264"/>
+                                <rect key="frame" x="16" y="56" width="200" height="266"/>
                             </customView>
                             <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="03j-wv-ih3">
-                                <rect key="frame" x="16" y="16" width="198" height="24"/>
+                                <rect key="frame" x="16" y="16" width="200" height="24"/>
                                 <view key="contentView" id="0qI-Yw-gGw">
-                                    <rect key="frame" x="1" y="1" width="196" height="22"/>
+                                    <rect key="frame" x="1" y="1" width="198" height="22"/>
                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 </view>
                                 <constraints>

+ 72 - 72
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -81,6 +81,33 @@
 		655B91B92CCB47690080AE6E /* KMNPreView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 655B91B82CCB47690080AE6E /* KMNPreView.xib */; };
 		655B91BA2CCB47690080AE6E /* KMNPreView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 655B91B82CCB47690080AE6E /* KMNPreView.xib */; };
 		655B91BB2CCB47690080AE6E /* KMNPreView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 655B91B82CCB47690080AE6E /* KMNPreView.xib */; };
+		656C1E2E2CD0745200295F82 /* KMConvertPageRangeSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E252CD0745000295F82 /* KMConvertPageRangeSettingItemView.swift */; };
+		656C1E2F2CD0745200295F82 /* KMConvertPageRangeSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E252CD0745000295F82 /* KMConvertPageRangeSettingItemView.swift */; };
+		656C1E302CD0745200295F82 /* KMConvertPageRangeSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E252CD0745000295F82 /* KMConvertPageRangeSettingItemView.swift */; };
+		656C1E312CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E262CD0745100295F82 /* KMConvertImageSettingView.swift */; };
+		656C1E322CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E262CD0745100295F82 /* KMConvertImageSettingView.swift */; };
+		656C1E332CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E262CD0745100295F82 /* KMConvertImageSettingView.swift */; };
+		656C1E342CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E272CD0745100295F82 /* KMConvertOCRSettingItemView.swift */; };
+		656C1E352CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E272CD0745100295F82 /* KMConvertOCRSettingItemView.swift */; };
+		656C1E362CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E272CD0745100295F82 /* KMConvertOCRSettingItemView.swift */; };
+		656C1E372CD0745200295F82 /* KMConvertPPTsSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E282CD0745100295F82 /* KMConvertPPTsSettingView.swift */; };
+		656C1E382CD0745200295F82 /* KMConvertPPTsSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E282CD0745100295F82 /* KMConvertPPTsSettingView.swift */; };
+		656C1E392CD0745200295F82 /* KMConvertPPTsSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E282CD0745100295F82 /* KMConvertPPTsSettingView.swift */; };
+		656C1E3A2CD0745200295F82 /* KMConvertWordSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E292CD0745100295F82 /* KMConvertWordSettingView.swift */; };
+		656C1E3B2CD0745200295F82 /* KMConvertWordSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E292CD0745100295F82 /* KMConvertWordSettingView.swift */; };
+		656C1E3C2CD0745200295F82 /* KMConvertWordSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E292CD0745100295F82 /* KMConvertWordSettingView.swift */; };
+		656C1E3D2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2A2CD0745100295F82 /* KMConvertExcelSettingView.swift */; };
+		656C1E3E2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2A2CD0745100295F82 /* KMConvertExcelSettingView.swift */; };
+		656C1E3F2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2A2CD0745100295F82 /* KMConvertExcelSettingView.swift */; };
+		656C1E402CD0745200295F82 /* KMConvertSettingLimitTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2B2CD0745100295F82 /* KMConvertSettingLimitTipView.swift */; };
+		656C1E412CD0745200295F82 /* KMConvertSettingLimitTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2B2CD0745100295F82 /* KMConvertSettingLimitTipView.swift */; };
+		656C1E422CD0745200295F82 /* KMConvertSettingLimitTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2B2CD0745100295F82 /* KMConvertSettingLimitTipView.swift */; };
+		656C1E432CD0745200295F82 /* KMConvertCSVSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2C2CD0745100295F82 /* KMConvertCSVSettingView.swift */; };
+		656C1E442CD0745200295F82 /* KMConvertCSVSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2C2CD0745100295F82 /* KMConvertCSVSettingView.swift */; };
+		656C1E452CD0745200295F82 /* KMConvertCSVSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2C2CD0745100295F82 /* KMConvertCSVSettingView.swift */; };
+		656C1E462CD0745200295F82 /* KMConvertSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2D2CD0745200295F82 /* KMConvertSettingView.swift */; };
+		656C1E472CD0745200295F82 /* KMConvertSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2D2CD0745200295F82 /* KMConvertSettingView.swift */; };
+		656C1E482CD0745200295F82 /* KMConvertSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656C1E2D2CD0745200295F82 /* KMConvertSettingView.swift */; };
 		658FDBA92C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */; };
 		658FDBAA2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */; };
 		658FDBAB2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */; };
@@ -3597,27 +3624,6 @@
 		BB49ECE5293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECE4293EF54800C82CA2 /* KMCustomPDFView.swift */; };
 		BB49ECE6293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECE4293EF54800C82CA2 /* KMCustomPDFView.swift */; };
 		BB49ECE7293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECE4293EF54800C82CA2 /* KMCustomPDFView.swift */; };
-		BB49ECE9293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECE8293F32A400C82CA2 /* KMConvertWordSettingView.swift */; };
-		BB49ECEA293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECE8293F32A400C82CA2 /* KMConvertWordSettingView.swift */; };
-		BB49ECEB293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECE8293F32A400C82CA2 /* KMConvertWordSettingView.swift */; };
-		BB49ECED293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECEC293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift */; };
-		BB49ECEE293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECEC293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift */; };
-		BB49ECEF293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECEC293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift */; };
-		BB49ECF1293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECF0293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift */; };
-		BB49ECF2293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECF0293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift */; };
-		BB49ECF3293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ECF0293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift */; };
-		BB49ED15293F489500C82CA2 /* KMConvertImageSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED14293F489500C82CA2 /* KMConvertImageSettingView.swift */; };
-		BB49ED16293F489500C82CA2 /* KMConvertImageSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED14293F489500C82CA2 /* KMConvertImageSettingView.swift */; };
-		BB49ED17293F489500C82CA2 /* KMConvertImageSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED14293F489500C82CA2 /* KMConvertImageSettingView.swift */; };
-		BB49ED19293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED18293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift */; };
-		BB49ED1A293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED18293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift */; };
-		BB49ED1B293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED18293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift */; };
-		BB49ED1D293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED1C293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift */; };
-		BB49ED1E293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED1C293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift */; };
-		BB49ED1F293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED1C293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift */; };
-		BB49ED21293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED20293F527700C82CA2 /* KMConvertExcelSettingView.swift */; };
-		BB49ED22293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED20293F527700C82CA2 /* KMConvertExcelSettingView.swift */; };
-		BB49ED23293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB49ED20293F527700C82CA2 /* KMConvertExcelSettingView.swift */; };
 		BB4A948D2B04726A00940F8B /* KMOCTool.m in Sources */ = {isa = PBXBuildFile; fileRef = BB4A948C2B04726A00940F8B /* KMOCTool.m */; };
 		BB4A948E2B04726A00940F8B /* KMOCTool.m in Sources */ = {isa = PBXBuildFile; fileRef = BB4A948C2B04726A00940F8B /* KMOCTool.m */; };
 		BB4A948F2B04726A00940F8B /* KMOCTool.m in Sources */ = {isa = PBXBuildFile; fileRef = BB4A948C2B04726A00940F8B /* KMOCTool.m */; };
@@ -4522,13 +4528,7 @@
 		BB9DCC8A2A09FC770024A6F1 /* libopencv_world.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BB9DCC7D2A09FC740024A6F1 /* libopencv_world.4.2.dylib */; };
 		BB9DCC8B2A09FC770024A6F1 /* libopencv_world.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BB9DCC7D2A09FC740024A6F1 /* libopencv_world.4.2.dylib */; };
 		BB9DCC942A09FCA50024A6F1 /* libopencv_world.4.2.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BB9DCC7D2A09FC740024A6F1 /* libopencv_world.4.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
-		BB9DCC9F2A0A2B0A0024A6F1 /* KMConvertSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9DCC9E2A0A2B0A0024A6F1 /* KMConvertSettingView.swift */; };
-		BB9DCCA02A0A2B0A0024A6F1 /* KMConvertSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9DCC9E2A0A2B0A0024A6F1 /* KMConvertSettingView.swift */; };
-		BB9DCCA12A0A2B0A0024A6F1 /* KMConvertSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9DCC9E2A0A2B0A0024A6F1 /* KMConvertSettingView.swift */; };
 		BB9DEE862A14A01D00351CC4 /* PDF-Reader-Pro-DMG-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADC076122987F06A006C752F /* PDF-Reader-Pro-DMG-Info.plist */; };
-		BB9E2F732A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9E2F722A495BCD000DC68D /* KMConvertSettingLimitTipView.swift */; };
-		BB9E2F742A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9E2F722A495BCD000DC68D /* KMConvertSettingLimitTipView.swift */; };
-		BB9E2F752A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9E2F722A495BCD000DC68D /* KMConvertSettingLimitTipView.swift */; };
 		BB9EA14F2B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9EA14E2B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift */; };
 		BB9EA1502B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9EA14E2B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift */; };
 		BB9EA1512B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9EA14E2B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift */; };
@@ -5947,6 +5947,15 @@
 		6554450A2C88483C00BD9010 /* KMDiscountToSaveWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMDiscountToSaveWindowController.m; sourceTree = "<group>"; };
 		655B91B32CCB47420080AE6E /* KMNPreView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMNPreView.swift; sourceTree = "<group>"; };
 		655B91B82CCB47690080AE6E /* KMNPreView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMNPreView.xib; sourceTree = "<group>"; };
+		656C1E252CD0745000295F82 /* KMConvertPageRangeSettingItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertPageRangeSettingItemView.swift; sourceTree = "<group>"; };
+		656C1E262CD0745100295F82 /* KMConvertImageSettingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertImageSettingView.swift; sourceTree = "<group>"; };
+		656C1E272CD0745100295F82 /* KMConvertOCRSettingItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertOCRSettingItemView.swift; sourceTree = "<group>"; };
+		656C1E282CD0745100295F82 /* KMConvertPPTsSettingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertPPTsSettingView.swift; sourceTree = "<group>"; };
+		656C1E292CD0745100295F82 /* KMConvertWordSettingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertWordSettingView.swift; sourceTree = "<group>"; };
+		656C1E2A2CD0745100295F82 /* KMConvertExcelSettingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertExcelSettingView.swift; sourceTree = "<group>"; };
+		656C1E2B2CD0745100295F82 /* KMConvertSettingLimitTipView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertSettingLimitTipView.swift; sourceTree = "<group>"; };
+		656C1E2C2CD0745100295F82 /* KMConvertCSVSettingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertCSVSettingView.swift; sourceTree = "<group>"; };
+		656C1E2D2CD0745200295F82 /* KMConvertSettingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertSettingView.swift; sourceTree = "<group>"; };
 		658FDBA82C9D4B3100EFA72E /* KMNoteReplyCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMNoteReplyCellView.swift; sourceTree = "<group>"; };
 		658FDBAC2C9D4B9600EFA72E /* KMNoteReplyCellView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMNoteReplyCellView.xib; sourceTree = "<group>"; };
 		658FDBB02C9D90CE00EFA72E /* KMNoteFilterStateCollevtionViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMNoteFilterStateCollevtionViewItem.swift; sourceTree = "<group>"; };
@@ -7317,13 +7326,6 @@
 		BB48F8702BE07DAA002DA996 /* KMMainModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMainModel.swift; sourceTree = "<group>"; };
 		BB493F942B3E9805003E6175 /* KMBatchQuickActionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchQuickActionManager.swift; sourceTree = "<group>"; };
 		BB49ECE4293EF54800C82CA2 /* KMCustomPDFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCustomPDFView.swift; sourceTree = "<group>"; };
-		BB49ECE8293F32A400C82CA2 /* KMConvertWordSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertWordSettingView.swift; sourceTree = "<group>"; };
-		BB49ECEC293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertOCRSettingItemView.swift; sourceTree = "<group>"; };
-		BB49ECF0293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertPageRangeSettingItemView.swift; sourceTree = "<group>"; };
-		BB49ED14293F489500C82CA2 /* KMConvertImageSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertImageSettingView.swift; sourceTree = "<group>"; };
-		BB49ED18293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertCSVSettingView.swift; sourceTree = "<group>"; };
-		BB49ED1C293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertPPTsSettingView.swift; sourceTree = "<group>"; };
-		BB49ED20293F527700C82CA2 /* KMConvertExcelSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertExcelSettingView.swift; sourceTree = "<group>"; };
 		BB4A948B2B04726A00940F8B /* KMOCTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KMOCTool.h; sourceTree = "<group>"; };
 		BB4A948C2B04726A00940F8B /* KMOCTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KMOCTool.m; sourceTree = "<group>"; };
 		BB4A94902B04926700940F8B /* KMGOCROperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMGOCROperation.swift; sourceTree = "<group>"; };
@@ -7705,8 +7707,6 @@
 		BB99ACCD292E2AEF0048AFD9 /* KMMergeCollectionViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMergeCollectionViewItem.swift; sourceTree = "<group>"; };
 		BB99ACCE292E2AEF0048AFD9 /* KMMergeCollectionViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMMergeCollectionViewItem.xib; sourceTree = "<group>"; };
 		BB9DCC7D2A09FC740024A6F1 /* libopencv_world.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libopencv_world.4.2.dylib; sourceTree = "<group>"; };
-		BB9DCC9E2A0A2B0A0024A6F1 /* KMConvertSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertSettingView.swift; sourceTree = "<group>"; };
-		BB9E2F722A495BCD000DC68D /* KMConvertSettingLimitTipView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertSettingLimitTipView.swift; sourceTree = "<group>"; };
 		BB9EA14E2B1ECD0400EAFD9B /* KMBatchOperateImageToPDFViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchOperateImageToPDFViewController.swift; sourceTree = "<group>"; };
 		BB9EA1522B1ECD0F00EAFD9B /* KMBatchOperateImageToPDFViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMBatchOperateImageToPDFViewController.xib; sourceTree = "<group>"; };
 		BB9EA1562B1EEAAC00EAFD9B /* KMImageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMImageModel.swift; sourceTree = "<group>"; };
@@ -8391,6 +8391,15 @@
 		651559092CCA6D3F00C0F0D9 /* View */ = {
 			isa = PBXGroup;
 			children = (
+				656C1E2C2CD0745100295F82 /* KMConvertCSVSettingView.swift */,
+				656C1E2A2CD0745100295F82 /* KMConvertExcelSettingView.swift */,
+				656C1E262CD0745100295F82 /* KMConvertImageSettingView.swift */,
+				656C1E272CD0745100295F82 /* KMConvertOCRSettingItemView.swift */,
+				656C1E252CD0745000295F82 /* KMConvertPageRangeSettingItemView.swift */,
+				656C1E282CD0745100295F82 /* KMConvertPPTsSettingView.swift */,
+				656C1E2B2CD0745100295F82 /* KMConvertSettingLimitTipView.swift */,
+				656C1E2D2CD0745200295F82 /* KMConvertSettingView.swift */,
+				656C1E292CD0745100295F82 /* KMConvertWordSettingView.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -12891,15 +12900,6 @@
 			isa = PBXGroup;
 			children = (
 				BB1A91722AFB8D95005E5FD8 /* KMBookletMaskView.swift */,
-				BB49ED18293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift */,
-				BB49ED20293F527700C82CA2 /* KMConvertExcelSettingView.swift */,
-				BB49ED14293F489500C82CA2 /* KMConvertImageSettingView.swift */,
-				BB49ECEC293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift */,
-				BB49ECF0293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift */,
-				BB49ED1C293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift */,
-				BB9E2F722A495BCD000DC68D /* KMConvertSettingLimitTipView.swift */,
-				BB9DCC9E2A0A2B0A0024A6F1 /* KMConvertSettingView.swift */,
-				BB49ECE8293F32A400C82CA2 /* KMConvertWordSettingView.swift */,
 				BB49ECE4293EF54800C82CA2 /* KMCustomPDFView.swift */,
 				BB96A0B72AFCE45800559E24 /* WaitingView.swift */,
 			);
@@ -17745,6 +17745,7 @@
 				ADDDCE242B43A32A005B4AB5 /* AppSandboxFileAccess.m in Sources */,
 				AD055E532B73220A0035F824 /* KMBookmarkManager.swift in Sources */,
 				BBF8A4012AE8B4E200788BAC /* KMBatchBaseParameter.swift in Sources */,
+				656C1E3A2CD0745200295F82 /* KMConvertWordSettingView.swift in Sources */,
 				AD867FC129DFC39400F00440 /* KMBOTAAnnotationItem.swift in Sources */,
 				BB9EA1572B1EEAAC00EAFD9B /* KMImageModel.swift in Sources */,
 				BBDA8A6D2A31F9A6006A2C4E /* KMDesignStepperView.swift in Sources */,
@@ -17778,7 +17779,6 @@
 				AD9527EE295578BD0039D2BC /* KMBaseTextFieldPresenter.swift in Sources */,
 				F37322F6292DF9410013862C /* CSelfSignAnnotation.m in Sources */,
 				AD7D5CC22B9566D0006562CD /* KMBookmarkOutlineView.swift in Sources */,
-				BB49ED1D293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */,
 				BB146FD2299DC0D100784A6A /* GTLRDateTime.m in Sources */,
 				BBE788CC2CBD2463008086E2 /* NavigationDemoVC.swift in Sources */,
 				BB8F457A295AFB330037EA22 /* KMHeaderFooterFontInfoView.swift in Sources */,
@@ -17833,7 +17833,6 @@
 				BB6EA2972B70AF48000D4490 /* KMConvertCompareViewController.m in Sources */,
 				BB71853D2C2B0A7C00C1156B /* KMEditPDFToolbarView.swift in Sources */,
 				ADDEEA862AD7805200EF675D /* KMGeneralButton.swift in Sources */,
-				BB49ED19293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */,
 				650FF6782CC897EB0019FAE1 /* KMNPDFPreView.swift in Sources */,
 				AD9527BA295291F20039D2BC /* KMPrintPage.swift in Sources */,
 				89752E192941FD48003FF08E /* KMSearchCellView.swift in Sources */,
@@ -17877,6 +17876,7 @@
 				BB8115FF2992682F0008F536 /* KMSecureLimitAlertView.swift in Sources */,
 				ADDEEA662AD3C4BE00EF675D /* KMPDFSignatureImageView.swift in Sources */,
 				BBB14A5B2978EBBE00936EDB /* KMRedactMutilPageFlagContentView.swift in Sources */,
+				656C1E402CD0745200295F82 /* KMConvertSettingLimitTipView.swift in Sources */,
 				BB0FE0582B734DD1001E0F88 /* KMAIRequestServerManager.swift in Sources */,
 				9F72D2032994A3B800DCACF1 /* KMDesignToken+Notification.swift in Sources */,
 				ADDF83A72B391A5D00A81A4E /* DSignatureApperanceManager.swift in Sources */,
@@ -17944,10 +17944,10 @@
 				ADBC2D28299DCA76006280C8 /* NSTextField+Layer.swift in Sources */,
 				BB52F57D2CC24481007418DB /* KMLinkPopupBaseView.swift in Sources */,
 				ADF6B8762A48155E0090CB78 /* KMComparativeViewCollectionItem.swift in Sources */,
-				BB49ECF1293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				BB6D2DA72B674A6300624C24 /* CPDFOutline+KMExtension.swift in Sources */,
 				BBBF68802A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */,
 				ADDF832C2B391A5C00A81A4E /* NSEvent+PDFListView.m in Sources */,
+				656C1E3D2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */,
 				BB4583BF2CC8C53C005737F3 /* KMPDFToolbarConfig.swift in Sources */,
 				BBBBB4992B6F714000C7205E /* NSObject+OCExtensions.m in Sources */,
 				9F0CB46F2967E63100007028 /* KMPropertiesPanelNameSubVC.swift in Sources */,
@@ -17980,10 +17980,12 @@
 				ADDF836B2B391A5C00A81A4E /* DSignatureSaveTypeViewController.swift in Sources */,
 				BBE789142CBD2464008086E2 /* DividerDemoVC.swift in Sources */,
 				9F0CB50D2986564500007028 /* KMDesignToken+BorderLeft.swift in Sources */,
+				656C1E342CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */,
 				9FBC489B2996500300CA39D7 /* KMDocumentController.swift in Sources */,
 				BBD8EE962B8EC86A00EB05FE /* AutoSavePopController.m in Sources */,
 				BB2F9AAF2AFCAE1F00F9DD93 /* KMProfileTitleCellView.swift in Sources */,
 				AD58F41F2B1DC29100299EE0 /* KMPrintViewModel.swift in Sources */,
+				656C1E2E2CD0745200295F82 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				AD53AF8F2BF1BC9200DCFFFC /* KMLoadingView.swift in Sources */,
 				BBFE6E87293210AB00142C01 /* KMCompressCellView.swift in Sources */,
 				BB146FE1299DC0D100784A6A /* GTLRDriveQuery.m in Sources */,
@@ -18011,6 +18013,7 @@
 				ADAFDA2B2AE8DE1B00F084BC /* KMAdvertisementCache.swift in Sources */,
 				AD3AAD342B0B7AF500DE5FE7 /* KMCompareThumbView.swift in Sources */,
 				9FCFEC7C2AC579F600EAD2CB /* CPDFListSignatureAnnotation.swift in Sources */,
+				656C1E432CD0745200295F82 /* KMConvertCSVSettingView.swift in Sources */,
 				BBF8A3FD2AE8B03B00788BAC /* KMBatchOperateFile.swift in Sources */,
 				ADD1B6E42946C00800C3FFF7 /* KMPrintChoosePageSizePosterView.swift in Sources */,
 				AD055E662B872FB50035F824 /* SKAlias.m in Sources */,
@@ -18062,6 +18065,7 @@
 				BBBC087E2B2A93DB009B237F /* KMToolbarMainItemView.swift in Sources */,
 				BBF245582AE78D0300037D08 /* KMBatchOperateWindowController.swift in Sources */,
 				AD1D480F2AFB1907007AC1F0 /* KMCompressView.swift in Sources */,
+				656C1E312CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */,
 				BBFBE6C028DD7B97008B2335 /* ViewController.swift in Sources */,
 				BB4EEF3429764166003A3537 /* KMRedactPropertyWindowController.swift in Sources */,
 				BBFEF7272B3A78EC00C28AC0 /* KMSystemToolMenu.swift in Sources */,
@@ -18266,7 +18270,6 @@
 				BB146FE7299DC0D100784A6A /* GTLRQuery.m in Sources */,
 				BB19A74A2CB7C2C6008204DC /* HistoryFilesManager.swift in Sources */,
 				ADDF83892B391A5D00A81A4E /* DSignatureFileListCellView.swift in Sources */,
-				BB49ED21293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */,
 				BB8F4569295ABDC10037EA22 /* KMWatermarkAdjectiveBaseModel.swift in Sources */,
 				BBB612B12AF4C388000F3724 /* KMBatchOperateAddWatermarkViewController.swift in Sources */,
 				ADAFD9EE2AE616B100F084BC /* FocusAwareSecureTextField.swift in Sources */,
@@ -18356,7 +18359,6 @@
 				BB162E8E294FFC0C0088E9D1 /* KMWatermarkPDFView.swift in Sources */,
 				AD3AAD812B0E004B00DE5FE7 /* KMPostionIndicateView.swift in Sources */,
 				BB2F9AAB2AFCADA900F9DD93 /* KMProfileCellView.swift in Sources */,
-				BB49ED15293F489500C82CA2 /* KMConvertImageSettingView.swift in Sources */,
 				ADBC375D29CC61E100D93208 /* KMReadModelView.swift in Sources */,
 				BBDE52BB2BF3676C000545B2 /* KMPresentTableViewCell.swift in Sources */,
 				BB0FE0372B734DD1001E0F88 /* AIConfigWindowController.swift in Sources */,
@@ -18425,6 +18427,7 @@
 				9F94617D2BD643720076574B /* KMTableAnnotation.m in Sources */,
 				9F0CB4672967E5CB00007028 /* KMPropertiesPanelSubViewController.swift in Sources */,
 				BB1A916A2AFB7868005E5FD8 /* KMConvertWindowController.swift in Sources */,
+				656C1E372CD0745200295F82 /* KMConvertPPTsSettingView.swift in Sources */,
 				BB147044299DC0D200784A6A /* OIDURLQueryComponent.m in Sources */,
 				9F88109D2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.swift in Sources */,
 				BB0FE0602B7351AA001E0F88 /* AIInfoManager.m in Sources */,
@@ -18455,7 +18458,6 @@
 				9F0CB48729683DC400007028 /* KMPropertiesPanelPresetColorSubVC.swift in Sources */,
 				9FB220DF2B10850400A5B208 /* KMAnnotationStampViewController.swift in Sources */,
 				9F1FE50229406E4700E952CA /* CTTabStripModelOrderController.m in Sources */,
-				BB9E2F732A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */,
 				651559192CCA6E3100C0F0D9 /* KMConvertWordWindowController.swift in Sources */,
 				9F1F82E32934D5240092C4B4 /* KMHomeExtractActionViewController.swift in Sources */,
 				6515590E2CCA6E2400C0F0D9 /* KMConvertBaseWindowController.swift in Sources */,
@@ -18634,6 +18636,7 @@
 				BB146FC9299DC0D100784A6A /* GTMSessionFetcher.m in Sources */,
 				9F8DDF342924DA6B006CDC73 /* KMPDFToolsCollectionView.swift in Sources */,
 				BB99ACC2292DE22E0048AFD9 /* KMMergeViewController.swift in Sources */,
+				656C1E462CD0745200295F82 /* KMConvertSettingView.swift in Sources */,
 				BBEC00B7295C2C1600A26C98 /* KMBatesPropertyHomeController.swift in Sources */,
 				AD2432CF2B89DFED00A119A9 /* KMFormAlertView.swift in Sources */,
 				BBFEF72B2B3A791B00C28AC0 /* KMSystemWindowMenu.swift in Sources */,
@@ -18647,7 +18650,6 @@
 				BB1969D72B2842AD00922736 /* KMSnapshotWindowController.swift in Sources */,
 				AD0FA4F929A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */,
 				BB146FF9299DC0D100784A6A /* OIDExternalUserAgentMac.m in Sources */,
-				BB9DCC9F2A0A2B0A0024A6F1 /* KMConvertSettingView.swift in Sources */,
 				ADDEEA9A2AD7BB2D00EF675D /* KMAnnotationPropertiesColorManager.swift in Sources */,
 				9FF371C32C69A6BB005F9CC5 /* CPerimeterMeasureInfoWindowController.swift in Sources */,
 				BBB789A82BE8BF2400F7E09C /* AIChatFileInfoItem.swift in Sources */,
@@ -18704,7 +18706,6 @@
 				89752DF229389F82003FF08E /* KMToolbarItem.m in Sources */,
 				BB6EA2A62B70B8F3000D4490 /* KMConvertComparePayViewController.m in Sources */,
 				BB35C49F2975362900D46EE2 /* KMRedactTopToolBar.swift in Sources */,
-				BB49ECE9293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */,
 				89D2D308295A83B500BFF5FE /* KMEditPDFTextPropertyViewController.swift in Sources */,
 				BB90E4F62AF3B71800B04B9F /* KMPDFWatermarkData.swift in Sources */,
 				BBFD2B142AEFAB8F0016C456 /* KMOperationQueue.swift in Sources */,
@@ -18714,7 +18715,6 @@
 				BB146FED299DC0D100784A6A /* GTLRBatchResult.m in Sources */,
 				9F8539C629430AC400DF644E /* KMToolbarRightView.swift in Sources */,
 				BB04FD0C2B206F3600D80F7B /* KMPlanViewController.swift in Sources */,
-				BB49ECED293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */,
 				AD1FE8352BD7C98300AA4A9B /* KMPDFPrintManageWindowController.m in Sources */,
 				BB65A0542AF8B90F003A27A0 /* KMDisplayPreferences.swift in Sources */,
 				AD7D5C9B2B8F20FE006562CD /* synctex_parser.m in Sources */,
@@ -18903,6 +18903,7 @@
 				BBF8A3FE2AE8B04100788BAC /* KMBatchOperateFile.swift in Sources */,
 				BB9599CC2B3184230062D346 /* KMRedactSelectPagesWindowController.swift in Sources */,
 				ADBC375529CAE94700D93208 /* KMComparativeOutlineSectionCell.swift in Sources */,
+				656C1E3E2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */,
 				BB3D97132B301CF1007094C8 /* KMRedactPDFView.swift in Sources */,
 				BB853C7E2AF8B5D6009C20C1 /* KMBatchOperateAddPasswordViewController.swift in Sources */,
 				BBEFD0292AFA285A003FABD8 /* KMHeaderFooterTableCellView.swift in Sources */,
@@ -19112,7 +19113,6 @@
 				AD055ECA2B8848400035F824 /* NSMenu_SKExtensions.m in Sources */,
 				650FF6792CC897EB0019FAE1 /* KMNPDFPreView.swift in Sources */,
 				AD9527EF295578BD0039D2BC /* KMBaseTextFieldPresenter.swift in Sources */,
-				BB49ED1E293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */,
 				AD055E202B70B3840035F824 /* KMBookmark.swift in Sources */,
 				BBEFD0192AF9BD24003FABD8 /* KMDataVersionManager.swift in Sources */,
 				9FA607DA28F8227500B46586 /* KMBox.swift in Sources */,
@@ -19153,7 +19153,6 @@
 				BB6347B52AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */,
 				89752E1E2942CB04003FF08E /* KMSearchMode.swift in Sources */,
 				AD3A3588294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */,
-				BB49ED1A293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */,
 				9FCFEC7D2AC579F600EAD2CB /* CPDFListSignatureAnnotation.swift in Sources */,
 				BBE788C12CBD2463008086E2 /* ControllerVC.swift in Sources */,
 				AD7D5C862B8ECD83006562CD /* KMPDFSyncRecord.swift in Sources */,
@@ -19246,6 +19245,7 @@
 				ADBC374229CAB1C300D93208 /* KMComparativeOutlineCell.swift in Sources */,
 				9F705F8A291E576D005199AD /* KMTableView.swift in Sources */,
 				BB86C1F328F54535005AD968 /* CPDFListView+KeyEvent.m in Sources */,
+				656C1E442CD0745200295F82 /* KMConvertCSVSettingView.swift in Sources */,
 				BBC28F472B0F352000D73206 /* KMImageToolTipContext.swift in Sources */,
 				BBBF68812A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */,
 				BB897247294C19980045787C /* KMWatermarkAdjectiveListController.swift in Sources */,
@@ -19269,9 +19269,9 @@
 				9FCFEC8D2AD10A4400EAD2CB /* KMTextFieldSheetController.swift in Sources */,
 				BBC8A7722B06408600FA9377 /* KMBotaSearchViewController.swift in Sources */,
 				BB52F55D2CC1FBF6007418DB /* KMLinkPageView.swift in Sources */,
-				BB49ECF2293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				BB3D1EB32C3EAE5B001D1BBE /* KMAlignmentController.swift in Sources */,
 				9F1FE4F429406E4700E952CA /* FastResizeView.m in Sources */,
+				656C1E3B2CD0745200295F82 /* KMConvertWordSettingView.swift in Sources */,
 				BBA922192B4E783F0061057A /* KMPurchaseCompareDMGWindowController.m in Sources */,
 				9F1FE4FD29406E4700E952CA /* CTTabStripController.m in Sources */,
 				BB99ACCB292DEE6E0048AFD9 /* KMMergeTitleBar.swift in Sources */,
@@ -19392,6 +19392,7 @@
 				9FAAA33A290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */,
 				BBCE57192A72723600508EFC /* NSResponder+KMExtension.swift in Sources */,
 				BB146FC1299DC0D100784A6A /* GTMSessionFetcherLogging.m in Sources */,
+				656C1E412CD0745200295F82 /* KMConvertSettingLimitTipView.swift in Sources */,
 				F3DB86072CCA691B00D0AFDE /* KMNExtractPDFWindowController.swift in Sources */,
 				AD1FE8362BD7C98300AA4A9B /* KMPDFPrintManageWindowController.m in Sources */,
 				AD1CA4222A061D190070541F /* KMAnnotationScreenAuthorViewItem.swift in Sources */,
@@ -19424,6 +19425,7 @@
 				BB5BE4EE2B060E2F00D51BF2 /* KMLanguageViewController.swift in Sources */,
 				BB19A7322CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */,
 				BB19A74B2CB7C2C6008204DC /* HistoryFilesManager.swift in Sources */,
+				656C1E472CD0745200295F82 /* KMConvertSettingView.swift in Sources */,
 				BBBAECFD2B57713F00266BD3 /* KMTransitionInfo.swift in Sources */,
 				BB1B0AED2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				9F1FE4EE29406E4700E952CA /* ThrobberView.m in Sources */,
@@ -19458,6 +19460,7 @@
 				BB9EA1582B1EEAAC00EAFD9B /* KMImageModel.swift in Sources */,
 				BBC348032955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.swift in Sources */,
 				BB147027299DC0D100784A6A /* OIDTokenRequest.m in Sources */,
+				656C1E352CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */,
 				BB5A9D4D2CB6521400F64C1F /* SettingsDisplayView.swift in Sources */,
 				BBFE6E592930724B00142C01 /* KMMergePageModel.swift in Sources */,
 				AD055E822B88294F0035F824 /* SKBookmarkController.m in Sources */,
@@ -19576,7 +19579,6 @@
 				65341C7D2C646C6400FE30F9 /* KMSearchReplaceHanddler.swift in Sources */,
 				BB88109B2B4F7CD100AFA63E /* KMVerificationTrialViewController.m in Sources */,
 				9F1FE4E229406E4700E952CA /* GTMNSAnimation+Duration.m in Sources */,
-				BB49ED22293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */,
 				BB2C846D2BAE716600AF6142 /* KMBotaTableRowView.swift in Sources */,
 				BB146FF1299DC0D100784A6A /* GTLRUploadParameters.m in Sources */,
 				BB24FFE72B2863EF00A59054 /* KMTTSManager.swift in Sources */,
@@ -19591,7 +19593,6 @@
 				BB183DE42B4EC0AF00F99C7E /* KMRepeatVerifyExpireController.m in Sources */,
 				BBC3482F29559E12008D2CD1 /* KMBackgroundModel.swift in Sources */,
 				BB24FFDE2B28578C00A59054 /* KMTTSWindowController.swift in Sources */,
-				BB9E2F742A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */,
 				ADE3C1A029A3894900793B13 /* KMSearchTableRowView.swift in Sources */,
 				BBF8A4042AE8E10100788BAC /* KMBatchConvertParameter.swift in Sources */,
 				AD3AAD642B0DA3F600DE5FE7 /* KMCompareTextHeaderView.swift in Sources */,
@@ -19640,6 +19641,7 @@
 				BB5EC3632C2BDC9D0090EF27 /* KMTextAlignmentController.swift in Sources */,
 				AD867F9129D9554F00F00440 /* KMBOTAOutlineItem.swift in Sources */,
 				BB2A984B2B26A99A00647AF3 /* KMBatchAddWatermarkOperation.swift in Sources */,
+				656C1E2F2CD0745200295F82 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				BB0FE0472B734DD1001E0F88 /* AIInfoConfig.swift in Sources */,
 				BB4A94A52B04DA0C00940F8B /* KMGOCRManagerNew.swift in Sources */,
 				BB0A823329C00400002C5C1B /* KMCommonEnum.swift in Sources */,
@@ -19677,7 +19679,6 @@
 				F328C0B72CA16F0500BFDD23 /* KMPresentationTopViewController.swift in Sources */,
 				BB2C84802BAE732700AF6142 /* KMBotaLeftView.swift in Sources */,
 				BBFEF72C2B3A791B00C28AC0 /* KMSystemWindowMenu.swift in Sources */,
-				BB49ED16293F489500C82CA2 /* KMConvertImageSettingView.swift in Sources */,
 				ADBC375E29CC61E100D93208 /* KMReadModelView.swift in Sources */,
 				BB2EDF7A296ECE17003BCF58 /* KMPageEditThumbnailItem.swift in Sources */,
 				BB2C84602BAE70C400AF6142 /* KMLeftSideViewSearchField.swift in Sources */,
@@ -19977,9 +19978,9 @@
 				BB3A66912B07099F00575343 /* KMFindTableviewCell.swift in Sources */,
 				AD0FA4FA29A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */,
 				BB146FFA299DC0D100784A6A /* OIDExternalUserAgentMac.m in Sources */,
-				BB9DCCA02A0A2B0A0024A6F1 /* KMConvertSettingView.swift in Sources */,
 				BB493F962B3E9805003E6175 /* KMBatchQuickActionManager.swift in Sources */,
 				BBE788942CBD2463008086E2 /* ProgressVC.swift in Sources */,
+				656C1E382CD0745200295F82 /* KMConvertPPTsSettingView.swift in Sources */,
 				ADAFD9EF2AE616B100F084BC /* FocusAwareSecureTextField.swift in Sources */,
 				BBB612AE2AF4B9E4000F3724 /* KMWatermarkCollectionViewItem.swift in Sources */,
 				9FF371CE2C69B8B3005F9CC5 /* CPerimeterMeasureInfoWindowController.swift in Sources */,
@@ -20010,11 +20011,11 @@
 				AD8810AA29A8463600178CA1 /* KMAccountInfoWindowController.swift in Sources */,
 				89752DF329389F82003FF08E /* KMToolbarItem.m in Sources */,
 				9F0CB526298656BA00007028 /* KMDesignToken+BorderWidth.swift in Sources */,
+				656C1E322CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */,
 				BB2EDF6B296ECE17003BCF58 /* KMPageEditInsertTypeItemView.swift in Sources */,
 				9F3D818829A0A9A60087B5AD /* KMDesignButton.swift in Sources */,
 				AD7D5CA12B8F34EC006562CD /* SKPDFSynchronizer.m in Sources */,
 				BB14703C299DC0D200784A6A /* OIDErrorUtilities.m in Sources */,
-				BB49ECEA293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */,
 				9F0CB4DA2986553600007028 /* KMDesignToken+VerticalPadding.swift in Sources */,
 				9FF94F1A29A770B500B1EF69 /* KMFillSignShapePanel.swift in Sources */,
 				65EF3A7E2C81C1F500CCFC8F /* KMVerificationRSA.swift in Sources */,
@@ -20023,7 +20024,6 @@
 				AD58F4172B1DAC0900299EE0 /* KMPrintSettingView.swift in Sources */,
 				BBF19E902B0B304C007154C8 /* KMStampCreaterWindowController.swift in Sources */,
 				BB35C4A02975362900D46EE2 /* KMRedactTopToolBar.swift in Sources */,
-				BB49ECEE293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */,
 				BBBE20942B21B18900509C4E /* KMPDFInsertWindowController.swift in Sources */,
 				89D2D309295A83B500BFF5FE /* KMEditPDFTextPropertyViewController.swift in Sources */,
 				9F0CB4DE2986554D00007028 /* KMDesignToken+HorizontalPadding.swift in Sources */,
@@ -20189,6 +20189,7 @@
 				BBE789192CBD2464008086E2 /* ListVC.swift in Sources */,
 				9FDD0FAC29534FCC000C4DAD /* KMAliasLight.swift in Sources */,
 				651559242CCA6E3100C0F0D9 /* KMConvertPPTsWindowController.swift in Sources */,
+				656C1E332CD0745200295F82 /* KMConvertImageSettingView.swift in Sources */,
 				BBF811E22B07178F0074874F /* KMExtractImageWindowController.swift in Sources */,
 				BBEFD01A2AF9BD24003FABD8 /* KMDataVersionManager.swift in Sources */,
 				BBF38A64294F53FD0086D025 /* KMWatermarkFileView.swift in Sources */,
@@ -20219,7 +20220,6 @@
 				9FCFEC8E2AD10A4400EAD2CB /* KMTextFieldSheetController.swift in Sources */,
 				BB2F9AB52AFCC2F800F9DD93 /* KMProfileInfoWindowController.swift in Sources */,
 				BB1BFF942AEA6352003EB179 /* KMImageToPDFMethod.swift in Sources */,
-				BB9DCCA12A0A2B0A0024A6F1 /* KMConvertSettingView.swift in Sources */,
 				ADE86A822B02220700414DFA /* KMSecurityView.swift in Sources */,
 				BB671A032AD2D2A0003D44D5 /* CPDFStampAnnotation+PDFListView.swift in Sources */,
 				BB8F4578295AFA2D0037EA22 /* KMHeaderFooterAdjectiveInfoBaseView.swift in Sources */,
@@ -20249,7 +20249,6 @@
 				BBBAECF62B57672200266BD3 /* SKPresentationOptionsSheetController.swift in Sources */,
 				BB88106F2B4F771D00AFA63E /* KMVerificationInfoViewController.m in Sources */,
 				BB77C8612BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */,
-				BB9E2F752A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */,
 				9FCFEC8A2AD0EF9900EAD2CB /* KMPopMenuButton.swift in Sources */,
 				BB6DD80E29347F77001F0544 /* KMSecureEncryptWindowController.swift in Sources */,
 				AD53B70029AC5FCD00D61E81 /* KMLightMemberToken.swift in Sources */,
@@ -20375,7 +20374,6 @@
 				BBF62C722B0347AF007B7E86 /* SplitWindowController.swift in Sources */,
 				BBFEF7312B3A794700C28AC0 /* KMSystemViewMenu.swift in Sources */,
 				9F0CB4F7298655D500007028 /* KMDesignToken+Fill.swift in Sources */,
-				BB49ED1F293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */,
 				BBE7889E2CBD2463008086E2 /* DropdownDemoVC.swift in Sources */,
 				BB14703D299DC0D200784A6A /* OIDErrorUtilities.m in Sources */,
 				ADD56F592BB3F48300E87ED9 /* KMFreeTextStylesViewController.m in Sources */,
@@ -20453,7 +20451,6 @@
 				AD3A3589294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */,
 				BB61F2142B59120F00777E27 /* KMScroller.swift in Sources */,
 				AD1CA4322A0640F20070541F /* KMAnnotationScreenHeadView.swift in Sources */,
-				BB49ED1B293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */,
 				BB8810782B4F785200AFA63E /* KMUnlockAlertViewController.m in Sources */,
 				658FDBAB2C9D4B3100EFA72E /* KMNoteReplyCellView.swift in Sources */,
 				89752E1B2941FD48003FF08E /* KMSearchCellView.swift in Sources */,
@@ -20587,7 +20584,6 @@
 				BB74DA792AC41182006EDFE7 /* NSFont+KMExtension.swift in Sources */,
 				BB493F972B3E9805003E6175 /* KMBatchQuickActionManager.swift in Sources */,
 				BB19A7332CB79D6E008204DC /* KMHomeRecommondView.swift in Sources */,
-				BB49ECF3293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				9F69DBB42B512614003D4C45 /* KMAnnotationTextWidgetOptionsViewController.swift in Sources */,
 				BBFEF7212B3A787900C28AC0 /* KMSystemAnnotationMenu.swift in Sources */,
 				BBE789162CBD2464008086E2 /* DividerDemoVC.swift in Sources */,
@@ -20645,6 +20641,7 @@
 				BB9EA1592B1EEAAC00EAFD9B /* KMImageModel.swift in Sources */,
 				BB276A502B0376A400AB5578 /* KMBatchOperateBaseViewController.swift in Sources */,
 				BBB9B321299A5D6D004F3235 /* KMGoogleDriveManager.m in Sources */,
+				656C1E422CD0745200295F82 /* KMConvertSettingLimitTipView.swift in Sources */,
 				BBA9221A2B4E783F0061057A /* KMPurchaseCompareDMGWindowController.m in Sources */,
 				BB031B902C47CEFA0099F7AD /* KMUserFeekbackHanddler.swift in Sources */,
 				9F1FE4DA29406E4700E952CA /* NSString+Utils.m in Sources */,
@@ -20727,6 +20724,7 @@
 				BB1B0AF42B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */,
 				BB6DD816293486FA001F0544 /* KMSecureEncryptPasswordCellView.swift in Sources */,
 				BBFE14D12BFD7FC300176992 /* KMCouponDueWindowController.swift in Sources */,
+				656C1E482CD0745200295F82 /* KMConvertSettingView.swift in Sources */,
 				9F1FE4C829406E4700E952CA /* CTUtil.m in Sources */,
 				BB147010299DC0D100784A6A /* OIDScopes.m in Sources */,
 				BBA922342B4E97540061057A /* KMPurchaseLimitWindowController.swift in Sources */,
@@ -20772,6 +20770,7 @@
 				9F1FE4B029406E4700E952CA /* CTPresentationModeController.m in Sources */,
 				BBA922242B4E7D340061057A /* HyperLinkButton.swift in Sources */,
 				F337CC392CC6686100D46AF4 /* KMNThumbnailCollectionViewItem.swift in Sources */,
+				656C1E362CD0745200295F82 /* KMConvertOCRSettingItemView.swift in Sources */,
 				BBD1F791296FE6A500343885 /* KMPageEditSplitWindowController.swift in Sources */,
 				BB8810A22B4F7D1000AFA63E /* KMVerificationActivateViewController.m in Sources */,
 				BB67EE192B54FFEF00573BF0 /* ASIDataCompressor.m in Sources */,
@@ -20858,6 +20857,7 @@
 				8942F7FA2926089200389627 /* KMSignatureViewController.swift in Sources */,
 				9FAAA33B290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */,
 				ADDF833A2B391A5C00A81A4E /* CPDFSignatureAnnotation+PDFListView.m in Sources */,
+				656C1E452CD0745200295F82 /* KMConvertCSVSettingView.swift in Sources */,
 				BB52F5902CC245AD007418DB /* KMLinkPopupEmailView.swift in Sources */,
 				9F3D819529A33A290087B5AD /* KMDesignDropdown.swift in Sources */,
 				ADB2D6EF2947415E0029D2B3 /* KMPrintPaperSetView.swift in Sources */,
@@ -20883,6 +20883,7 @@
 				BB3AD6FB29935483004FC1AE /* Reachability.m in Sources */,
 				BB031B772C47BB090099F7AD /* KMUserListItemCellView.swift in Sources */,
 				AD0FA50C29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */,
+				656C1E392CD0745200295F82 /* KMConvertPPTsSettingView.swift in Sources */,
 				BB146FB3299DC0D100784A6A /* GTLRErrorObject.m in Sources */,
 				BB147028299DC0D100784A6A /* OIDTokenRequest.m in Sources */,
 				BB1B0AD02B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */,
@@ -20940,7 +20941,6 @@
 				BB4EEF4629764FEF003A3537 /* KMWatermarkAligementView.swift in Sources */,
 				9FF816F52AFB18290087EFC5 /* NSGeometry_KMExtensions.swift in Sources */,
 				9F0CB533298656EA00007028 /* KMDesignToken+BorderWidthBottom.swift in Sources */,
-				BB49ED23293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */,
 				BB329D112CBF9A7E0053E0C9 /* KMURLToPDF.swift in Sources */,
 				9F0CB52B298656C900007028 /* KMDesignToken+BorderWidthTop.swift in Sources */,
 				ADE86AD32B04BAEA00414DFA /* KMCompareFilesView.swift in Sources */,
@@ -21004,7 +21004,6 @@
 				BBE7891F2CBD2464008086E2 /* SegmentedVC.swift in Sources */,
 				BB8F4584295B0F900037EA22 /* KMHeaderFooterMarginInfoView.swift in Sources */,
 				AD4C71732B9ADFE0003A6286 /* NSError_Extensions.swift in Sources */,
-				BB49ED17293F489500C82CA2 /* KMConvertImageSettingView.swift in Sources */,
 				899700EA28F3E4D3009AF911 /* MainWindowController.swift in Sources */,
 				BBD1F79A296FF78C00343885 /* KMPageEditSettingBaseModel.swift in Sources */,
 				BB8F4574295ACE380037EA22 /* KMHeaderFooterAdjectiveListCell.swift in Sources */,
@@ -21195,6 +21194,7 @@
 				9F0CB50F2986564500007028 /* KMDesignToken+BorderLeft.swift in Sources */,
 				BB2CC5662AF123A400D7A796 /* KMBatchHeader.swift in Sources */,
 				BBE788F82CBD2464008086E2 /* SliderVC.swift in Sources */,
+				656C1E3C2CD0745200295F82 /* KMConvertWordSettingView.swift in Sources */,
 				AD3AAD152B0B5B2700DE5FE7 /* KMCompareContentWindowController.swift in Sources */,
 				BB4EEF3E29764578003A3537 /* KMRedactPropertyContentView.swift in Sources */,
 				9FB221092B19BD8B00A5B208 /* KMGeneralAnnotationViewController.swift in Sources */,
@@ -21304,6 +21304,7 @@
 				BBE0BDF529A22EF300440583 /* KMMainViewController+MenuAction.swift in Sources */,
 				AD88109429A7612000178CA1 /* KMRegisterModel.swift in Sources */,
 				ADDF83AF2B391A5D00A81A4E /* DSignatureConfig.swift in Sources */,
+				656C1E3F2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */,
 				9F1F82D4292F6D510092C4B4 /* KMPDFInsertPreviewViewController.swift in Sources */,
 				BBF1705A2AE296B90013CE02 /* KMView.swift in Sources */,
 				BBD3C8B82B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift in Sources */,
@@ -21315,6 +21316,7 @@
 				9F0CB4812967F64D00007028 /* KMPropertiesPanelReadOnlySubVC.swift in Sources */,
 				9F0CB53B2986570600007028 /* KMDesignToken+BoxShadow.swift in Sources */,
 				BB49ECE7293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */,
+				656C1E302CD0745200295F82 /* KMConvertPageRangeSettingItemView.swift in Sources */,
 				9F0201672A176AF200C9B673 /* KMDottedLineView.swift in Sources */,
 				ADAAC1662BD645DB001F2DA6 /* KMRecommondPopWindow.m in Sources */,
 				9F02017B2A1B5C0300C9B673 /* KMAIServerConfig.swift in Sources */,
@@ -21354,12 +21356,10 @@
 				BBC3484C2958222C008D2CD1 /* KMBackgroundOutsideView.swift in Sources */,
 				AD0FA51429A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				9F0CB49129683DEE00007028 /* KMPropertiesPanelLineSubVC.swift in Sources */,
-				BB49ECEB293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */,
 				9F8539C829430AC400DF644E /* KMToolbarRightView.swift in Sources */,
 				BBB2A99F2CB65C8E0066560B /* KMURLCreatePDFWindowController.swift in Sources */,
 				BBB9428D2BA2CB6A00542373 /* KMAdsInfo.swift in Sources */,
 				ADA910302A272CEA003352F0 /* KMImageOptimization.swift in Sources */,
-				BB49ECEF293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */,
 				9F0CB4D72986551600007028 /* KMDesignToken+Spacing.swift in Sources */,
 				9F1FE49B29406E4700E952CA /* NewTabButton.m in Sources */,
 				BB897273294DB6BE0045787C /* KMWatermarkAdjectivePlainView.swift in Sources */,