Browse Source

2025】【批量】转档UI整体替换

lizhe 2 months ago
parent
commit
709960d9ff
27 changed files with 521 additions and 695 deletions
  1. 2 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertCSVSettingView.swift
  2. 2 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertExcelSettingView.swift
  3. 2 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertHtmlSettingView.swift
  4. 2 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertImageSettingView.swift
  5. 2 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertJsonSettingView.swift
  6. 3 3
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertJsonSettingView.xib
  7. 2 0
      PDF Office/PDF Master/KMClass/Convert/View/KMConvertPPTsSettingView.swift
  8. 4 29
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/KMBatchConvertPDFView.swift
  9. 3 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Base/KMBatchConvertPDFItemView.swift
  10. 39 48
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.swift
  11. 5 100
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.xib
  12. 36 89
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Excel/KMBatchConverPDFExcelView.swift
  13. 3 138
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Excel/KMBatchConverPDFExcelView.xib
  14. 54 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Html/KMBatchHtmlView.swift
  15. 18 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Html/KMBatchHtmlView.xib
  16. 35 21
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Image/KMBatchConverPDFImageView.swift
  17. 5 90
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Image/KMBatchConverPDFImageView.xib
  18. 54 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Json/KMBatchJsonView.swift
  19. 18 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Json/KMBatchJsonView.xib
  20. 37 12
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/PPT/KMBatchConverPDFPPTView.swift
  21. 5 23
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/PPT/KMBatchConverPDFPPTView.xib
  22. 54 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/RTF/KMBatchRTFView.swift
  23. 18 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/RTF/KMBatchRTFView.xib
  24. 35 31
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/TextRecognition/KMBatchTextRecognitionView.swift
  25. 6 99
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/TextRecognition/KMBatchTextRecognitionView.xib
  26. 3 10
      PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Word/KMBatchConverPDFWordView.swift
  27. 74 2
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

+ 2 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertCSVSettingView.swift

@@ -58,6 +58,8 @@ class KMConvertCSVSettingView: KMConvertSettingView {
             self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
             self.pageRangeBox.contentView = self.pageRangeItemView
         }
+        
+        self.pageRangeItemView?.isHidden = self.isBatch
     }
     
     @objc func radioAction(sender: NSButton) {

+ 2 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertExcelSettingView.swift

@@ -185,6 +185,8 @@ class KMConvertExcelSettingView: KMConvertSettingView {
             self.pageRangeItemView?.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
             updateViewColor()
         }
+        
+        self.pageRangeItemView?.isHidden = self.isBatch
     }
     
     override func updateViewColor() {

+ 2 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertHtmlSettingView.swift

@@ -104,6 +104,8 @@ class KMConvertHtmlSettingView: KMConvertSettingView {
             
             pageRangeItemView?.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
         }
+        
+        self.pageRangeItemView?.isHidden = self.isBatch
     }
     
     override func updateViewColor() {

+ 2 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertImageSettingView.swift

@@ -113,6 +113,8 @@ class KMConvertImageSettingView: KMConvertSettingView {
             self.updateViewColor()
         }
         self.pageRangeItemView?.pageCount = self.pageCount
+        
+        self.pageRangeItemView?.isHidden = self.isBatch
     }
     
     override func getPageRangeString() -> String {

+ 2 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertJsonSettingView.swift

@@ -95,6 +95,8 @@ class KMConvertJsonSettingView: KMConvertSettingView {
             self.pageRangeItemView?.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
             updateViewColor()
         }
+        
+        self.pageRangeItemView?.isHidden = self.isBatch
     }
     
     @objc func radioAction(sender: ComponentRadio) {

+ 3 - 3
PDF Office/PDF Master/KMClass/Convert/View/KMConvertJsonSettingView.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -19,7 +19,7 @@
                         <rect key="frame" x="1" y="1" width="478" height="98"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Lnf-WO-SVE">
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Lnf-WO-SVE">
                                 <rect key="frame" x="14" y="74" width="37" height="16"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Kly-qe-zid">
                                     <font key="font" usesAppearanceFont="YES"/>

+ 2 - 0
PDF Office/PDF Master/KMClass/Convert/View/KMConvertPPTsSettingView.swift

@@ -39,6 +39,8 @@ class KMConvertPPTsSettingView: KMConvertSettingView {
             self.pageRangeItemView?.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
             self.updateViewColor()
         }
+        
+        self.pageRangeItemView?.isHidden = self.isBatch
     }
     
     override func updateViewColor() {

+ 4 - 29
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/KMBatchConvertPDFView.swift

@@ -146,26 +146,13 @@ class KMBatchConvertPDFView: KMBatchSettingItemView {
             view.data = self.data
             self.itemViewArray.append(view)
         }
-        
+        view.settingView?.isBatch = true
         return view
     }
 }
 
 protocol KMBatchConvertPDFViewAction {}
 extension KMBatchConvertPDFView: KMBatchConvertPDFViewAction {
-    @IBAction func convertPDFTypeAction(_ sender: NSButton) {
-        let menu = NSMenu()
-        menu.minimumWidth = sender.frame.size.width
-        for string in KMBatchConvertPDFType.allValues() {
-            menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.convertPDFTypeClick), target: self)
-        }
-        menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender )
-    }
-    
-    @objc func convertPDFTypeClick(item: NSMenuItem) {
-        self.presenter.convertPDFTypeAction(string: item.title)
-    }
-    
     @IBAction func convertAction(_ sender: Any) {
         if (self.export != nil) {
             self.export!(self, self.data)
@@ -183,20 +170,8 @@ extension KMBatchConvertPDFView: KMBatchConvertPDFViewPresenterDelegate {
 
 extension KMBatchConvertPDFView: ComponentSelectDelegate {
     func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
-//        if (view == languageSelectButton) {
-//            var languages: [String] = KMOCRManager.manager.getLanguages(type: model.ocrType)
-//            let position = languages.firstIndex(of: model.language) ?? 0
-//            self.selectIndex = position + 1
-//            
-//            let values: [String: String] = KMGOCRManager.languages()[position] as? [String : String] ?? [:]
-//            let key = values[KMGOCRLanguageCodeKey]
-//            
-//            model.language = key ?? ""
-//            if let unwrappedKey = key, let intValue = Int(unwrappedKey) {
-//                model.languageType = COCRLanguage(rawValue: intValue) ?? .english
-//            } else {
-//                print("转换失败")
-//            }
-//        }
+        if (view == formatSelectButton) {
+            self.presenter.convertPDFTypeAction(string: menuItemProperty!.text)
+        }
     }
 }

+ 3 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Base/KMBatchConvertPDFItemView.swift

@@ -9,10 +9,13 @@ import Cocoa
 
 class KMBatchConvertPDFItemView: BaseXibView {
 
+    
     var type: KMBatchConvertPDFType = .word
     var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
     var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
     
+    var settingView: KMConvertSettingView?
+    
     func reloadData() {
         
     }

+ 39 - 48
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.swift

@@ -8,66 +8,57 @@
 import Cocoa
 
 class KMBatchConverPDFCSVView: KMBatchConvertPDFItemView {
-    @IBOutlet weak var settingTitleLabel: NSTextField!
-    
-    @IBOutlet weak var onlyTablesButton: KMImageTitleButton!
-    @IBOutlet weak var tablesTypeButton: NSButton!
-    @IBOutlet weak var tablesTypeLabel: NSTextField!
-    
-    
-    override func draw(_ dirtyRect: NSRect) {
-        super.draw(dirtyRect)
-
-        // Drawing code here.
-    }
     
     override func setup() {
-        super.setup()
-        
-        self.onlyTablesButton.title = NSLocalizedString("Only Table", comment: "")
-        self.onlyTablesButton.imageName = "btn_radio_unsel_on"
-        self.onlyTablesButton.action = { [unowned self] (view, button) in
-            self.presenter.csvOnlyTablesButtonAction(button: button)
+        settingView = KMConvertPPTsSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
         }
 
-        self.settingTitleLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.settingTitleLabel.stringValue = NSLocalizedString("Excel Worksheet Settings", comment: "")
-        self.settingTitleLabel.font = NSFont.SFProTextRegularFont(12.0)
-        
-        self.onlyTablesButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.onlyTablesButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
-        
-        self.tablesTypeLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.tablesTypeLabel.font = NSFont.SFProTextRegularFont(14.0)
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
+        }
     }
     
     override func reloadData() {
-        super.reloadData()
-        
-        self.onlyTablesButton.imageName = "btn_radio_unsel_on"
-        
-        if data.csvOnlyTables {
-            self.onlyTablesButton.imageName = "btn_radio_sel_on"
-            self.tablesTypeButton.isEnabled = true
-        } else {
-            self.tablesTypeButton.isEnabled = false
-        }
+
     }
 }
 
 protocol KMBatchConverPDFCSVViewAction {}
 extension KMBatchConverPDFCSVView: KMBatchConverPDFCSVViewAction {
     @IBAction func tablesTypeButtonAction(_ sender: NSButton) {
-        let menu = NSMenu()
-        menu.minimumWidth = sender.frame.size.width
-        for string in KMBatchConvertPDFExcelTablesType.allValues() {
-            menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.tablesTypeButtonClick), target: self)
-        }
-        menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender)
-    }
-
-    @objc func tablesTypeButtonClick(item: NSMenuItem) {
-        self.tablesTypeLabel.stringValue = item.title
-        self.presenter.tablesTypeAction(string: item.title)
+//        let menu = NSMenu()
+//        menu.minimumWidth = sender.frame.size.width
+//        for string in KMBatchConvertPDFExcelTablesType.allValues() {
+//            menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.tablesTypeButtonClick), target: self)
+//        }
+//        menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender)
     }
 }

+ 5 - 100
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.xib

@@ -1,113 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFCSVView" customModule="PDF_Office" customModuleProvider="target">
-            <connections>
-                <outlet property="onlyTablesButton" destination="ICV-6d-axc" id="E6k-6c-Yxc"/>
-                <outlet property="settingTitleLabel" destination="Rp3-nP-agA" id="FnZ-bd-cj1"/>
-                <outlet property="tablesTypeButton" destination="2fC-zm-I7h" id="OmV-Nk-5WH"/>
-                <outlet property="tablesTypeLabel" destination="cei-Dg-MQA" id="1zN-TI-teY"/>
-            </connections>
-        </customObject>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFCSVView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">
-            <rect key="frame" x="0.0" y="0.0" width="302" height="91"/>
+            <rect key="frame" x="0.0" y="0.0" width="281" height="466"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <subviews>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="PVh-Ya-egy">
-                    <rect key="frame" x="0.0" y="0.0" width="302" height="91"/>
-                    <subviews>
-                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Rp3-nP-agA">
-                            <rect key="frame" x="14" y="71" width="155" height="20"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="20" id="72T-Eh-vKh"/>
-                            </constraints>
-                            <textFieldCell key="cell" lineBreakMode="clipping" title="Excel Workbook Settings" id="lZc-Wi-8eQ">
-                                <font key="font" usesAppearanceFont="YES"/>
-                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                            </textFieldCell>
-                        </textField>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="ICV-6d-axc" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="16" y="41" width="270" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="Edl-am-nKH"/>
-                            </constraints>
-                        </customView>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="fve-6P-suP">
-                            <rect key="frame" x="16" y="1" width="270" height="32"/>
-                            <subviews>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cei-Dg-MQA">
-                                    <rect key="frame" x="6" y="8" width="234" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Creat single Worksheet for..." id="eZD-7a-yTU">
-                                        <font key="font" metaFont="system"/>
-                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                    </textFieldCell>
-                                </textField>
-                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="KjN-vn-KfY">
-                                    <rect key="frame" x="250" y="10" width="12" height="12"/>
-                                    <constraints>
-                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="Sre-Nf-moF"/>
-                                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12" id="VdT-ty-4h2"/>
-                                        <constraint firstAttribute="width" constant="12" id="h9Q-cE-MCq"/>
-                                        <constraint firstAttribute="height" constant="12" id="wnb-Tf-hwS"/>
-                                    </constraints>
-                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="v9G-yB-1DE"/>
-                                </imageView>
-                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2fC-zm-I7h">
-                                    <rect key="frame" x="0.0" y="0.0" width="270" height="32"/>
-                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="dCf-Ec-BcV">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                    </buttonCell>
-                                    <connections>
-                                        <action selector="tablesTypeButtonAction:" target="-2" id="qaU-Xc-LYA"/>
-                                    </connections>
-                                </button>
-                            </subviews>
-                            <constraints>
-                                <constraint firstAttribute="bottom" secondItem="2fC-zm-I7h" secondAttribute="bottom" id="745-PH-xbm"/>
-                                <constraint firstItem="2fC-zm-I7h" firstAttribute="top" secondItem="fve-6P-suP" secondAttribute="top" id="D9f-Pn-3BO"/>
-                                <constraint firstItem="cei-Dg-MQA" firstAttribute="centerY" secondItem="fve-6P-suP" secondAttribute="centerY" id="E9r-S4-i4D"/>
-                                <constraint firstItem="KjN-vn-KfY" firstAttribute="centerY" secondItem="fve-6P-suP" secondAttribute="centerY" id="FH8-gc-NCQ"/>
-                                <constraint firstItem="cei-Dg-MQA" firstAttribute="leading" secondItem="fve-6P-suP" secondAttribute="leading" constant="8" id="GGb-n4-d4g"/>
-                                <constraint firstAttribute="trailing" secondItem="KjN-vn-KfY" secondAttribute="trailing" constant="8" id="MlP-RH-LNT"/>
-                                <constraint firstAttribute="trailing" secondItem="2fC-zm-I7h" secondAttribute="trailing" id="TpI-rg-tWO"/>
-                                <constraint firstAttribute="trailing" secondItem="cei-Dg-MQA" secondAttribute="trailing" constant="32" id="TpO-UZ-GXA"/>
-                                <constraint firstAttribute="height" constant="32" id="ho7-lO-YN7"/>
-                                <constraint firstItem="2fC-zm-I7h" firstAttribute="leading" secondItem="fve-6P-suP" secondAttribute="leading" id="w71-eC-fsd"/>
-                            </constraints>
-                        </customView>
-                    </subviews>
-                    <constraints>
-                        <constraint firstItem="fve-6P-suP" firstAttribute="leading" secondItem="PVh-Ya-egy" secondAttribute="leading" constant="16" id="Esn-uL-IR3"/>
-                        <constraint firstItem="ICV-6d-axc" firstAttribute="leading" secondItem="PVh-Ya-egy" secondAttribute="leading" constant="16" id="Jwx-p0-Odu"/>
-                        <constraint firstItem="fve-6P-suP" firstAttribute="top" secondItem="ICV-6d-axc" secondAttribute="bottom" constant="8" id="YQD-RZ-PTP"/>
-                        <constraint firstAttribute="trailing" secondItem="ICV-6d-axc" secondAttribute="trailing" constant="16" id="cUu-71-xjh"/>
-                        <constraint firstItem="Rp3-nP-agA" firstAttribute="top" secondItem="PVh-Ya-egy" secondAttribute="top" id="e6W-uW-nYb"/>
-                        <constraint firstItem="Rp3-nP-agA" firstAttribute="leading" secondItem="PVh-Ya-egy" secondAttribute="leading" constant="16" id="evQ-6E-ezO"/>
-                        <constraint firstItem="ICV-6d-axc" firstAttribute="top" secondItem="Rp3-nP-agA" secondAttribute="bottom" constant="8" id="hpB-ON-rcE"/>
-                        <constraint firstAttribute="trailing" secondItem="fve-6P-suP" secondAttribute="trailing" constant="16" id="n0o-BI-I2a"/>
-                    </constraints>
-                </customView>
-            </subviews>
-            <constraints>
-                <constraint firstAttribute="bottom" secondItem="PVh-Ya-egy" secondAttribute="bottom" id="Ni5-Aa-uCj"/>
-                <constraint firstAttribute="trailing" secondItem="PVh-Ya-egy" secondAttribute="trailing" id="eVA-S5-oKV"/>
-                <constraint firstItem="PVh-Ya-egy" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="l4l-PM-YdG"/>
-                <constraint firstItem="PVh-Ya-egy" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="nf2-Yp-bLC"/>
-            </constraints>
-            <point key="canvasLocation" x="-89" y="145.5"/>
+            <point key="canvasLocation" x="-99.5" y="333"/>
         </customView>
     </objects>
-    <resources>
-        <image name="btn_arrow_gray_down_s_norm_on" width="12" height="12"/>
-    </resources>
 </document>

+ 36 - 89
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Excel/KMBatchConverPDFExcelView.swift

@@ -8,95 +8,47 @@
 import Cocoa
 
 class KMBatchConverPDFExcelView: KMBatchConvertPDFItemView {
-    @IBOutlet weak var settingLabel: NSTextField!
-
-    @IBOutlet weak var worksheetButton: KMImageTitleButton!
-    @IBOutlet weak var formatButton: KMImageTitleButton!
-    @IBOutlet weak var onlyTablesButton: KMImageTitleButton!
-    @IBOutlet weak var tablesTypeButton: NSButton!
-    @IBOutlet weak var tablesTypeLabel: NSTextField!
-    @IBOutlet weak var onlyTextButton: KMImageTitleButton!
-    
-    @IBOutlet weak var textRecognitionView: KMBatchTextRecognitionView!
-    override func draw(_ dirtyRect: NSRect) {
-        super.draw(dirtyRect)
-
-        // Drawing code here.
-    }
     
     override func setup() {
         super.setup()
-        
-        self.worksheetButton.title = NSLocalizedString("Convert each page to a separate worksheet", comment: "")
-        self.worksheetButton.imageName = "btn_radio_unsel_on"
-        self.worksheetButton.action = { [unowned self] (view, button) in
-            self.presenter.worksheetButtonAction(button: button)
-        }
+        settingView = KMConvertExcelSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
 
-        self.formatButton.title = NSLocalizedString("Convert all pages to one worksheet format", comment: "")
-        self.formatButton.imageName = "btn_radio_unsel_on"
-        self.formatButton.action = { view, button in
-            self.presenter.formatButtonAction(button: button)
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
         }
-        
-        self.onlyTablesButton.title = NSLocalizedString("Only Table", comment: "")
-        self.onlyTablesButton.imageName = "btn_radio_unsel_on"
-        self.onlyTablesButton.action = { view, button in
-            self.presenter.onlyTablesButtonAction(button: button)
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
         }
-        
-        self.onlyTextButton.title = NSLocalizedString("Only Text", comment: "")
-        self.onlyTextButton.imageName = "btn_radio_unsel_on"
-        self.onlyTextButton.action = { view, button in
-            self.presenter.onlyTextButtonAction(button: button)
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
         }
-        
-        self.settingLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.settingLabel.stringValue = NSLocalizedString("Excel Worksheet Settings", comment: "")
-        self.settingLabel.font = NSFont.SFProTextRegularFont(12.0)
-        
-        self.formatButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.formatButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
-        
-        self.onlyTablesButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.onlyTablesButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
-        
-        self.onlyTextButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.onlyTextButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
-        
-        self.worksheetButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.worksheetButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
-        
-        self.tablesTypeLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.tablesTypeLabel.font = NSFont.SFProTextRegularFont(14.0)
     }
     
     override func reloadData() {
-        
-        self.textRecognitionView.data = self.data
-        self.textRecognitionView.presenter = self.presenter
-        self.textRecognitionView.type = self.type
-        self.textRecognitionView.reloadData()
 
-        self.worksheetButton.imageName = "btn_radio_unsel_on"
-        self.formatButton.imageName = "btn_radio_unsel_on"
-        self.onlyTablesButton.imageName = "btn_radio_unsel_on"
-        self.onlyTextButton.imageName = "btn_radio_unsel_on"
-        self.tablesTypeButton.isEnabled = false
-        self.tablesTypeLabel.isEnabled = false
-        
-        switch data.excelSetting {
-        case .separate:
-            self.worksheetButton.imageName = "btn_radio_sel_on"
-        case .tables:
-            self.onlyTablesButton.imageName = "btn_radio_sel_on"
-            self.tablesTypeButton.isEnabled = true
-            self.tablesTypeLabel.isEnabled = true
-        case .format:
-            self.formatButton.imageName = "btn_radio_sel_on"
-        case .text:
-            self.onlyTextButton.imageName = "btn_radio_sel_on"
-        }
     }
 }
 
@@ -104,16 +56,11 @@ class KMBatchConverPDFExcelView: KMBatchConvertPDFItemView {
 protocol KMBatchConverPDFExcelViewAction {}
 extension KMBatchConverPDFExcelView: KMBatchConverPDFExcelViewAction {
     @IBAction func tablesTypeButtonAction(_ sender: NSButton) {
-        let menu = NSMenu()
-        menu.minimumWidth = sender.frame.size.width
-        for string in KMBatchConvertPDFExcelTablesType.allValues() {
-            menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.tablesTypeButtonClick), target: self)
-        }
-        menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender)
-    }
-
-    @objc func tablesTypeButtonClick(item: NSMenuItem) {
-        self.tablesTypeLabel.stringValue = item.title
-        self.presenter.tablesTypeAction(string: item.title)
+//        let menu = NSMenu()
+//        menu.minimumWidth = sender.frame.size.width
+//        for string in KMBatchConvertPDFExcelTablesType.allValues() {
+//            menu.addItem(withTitle: NSLocalizedString(string, comment: ""), action: #selector(self.tablesTypeButtonClick), target: self)
+//        }
+//        menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender ).fittingSize.height), in: sender)
     }
 }

+ 3 - 138
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Excel/KMBatchConverPDFExcelView.xib

@@ -1,153 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFExcelView" customModule="PDF_Office" customModuleProvider="target">
-            <connections>
-                <outlet property="formatButton" destination="amw-qD-Bei" id="RAV-Z9-6Mt"/>
-                <outlet property="onlyTablesButton" destination="mH7-tW-KNc" id="4oU-6j-WIR"/>
-                <outlet property="onlyTextButton" destination="UQx-5V-Fdc" id="utm-pq-tdY"/>
-                <outlet property="settingLabel" destination="Iwz-rs-g8Z" id="pSv-V9-xE8"/>
-                <outlet property="tablesTypeButton" destination="ZnQ-TM-Fwz" id="quz-Oz-ycA"/>
-                <outlet property="tablesTypeLabel" destination="vb4-xX-AVH" id="PQ3-WJ-qS7"/>
-                <outlet property="textRecognitionView" destination="sYQ-Tb-lbQ" id="fcD-yd-cih"/>
-                <outlet property="worksheetButton" destination="sWP-m1-CvH" id="Xfb-3Z-pyA"/>
-            </connections>
-        </customObject>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFExcelView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">
             <rect key="frame" x="0.0" y="0.0" width="244" height="353"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <subviews>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="LbV-4M-wTH">
-                    <rect key="frame" x="0.0" y="129" width="244" height="224"/>
-                    <subviews>
-                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Iwz-rs-g8Z">
-                            <rect key="frame" x="14" y="204" width="155" height="20"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="20" id="OBM-1R-dRB"/>
-                            </constraints>
-                            <textFieldCell key="cell" lineBreakMode="clipping" title="Excel Workbook Settings" id="iIT-pV-Tr4">
-                                <font key="font" usesAppearanceFont="YES"/>
-                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                            </textFieldCell>
-                        </textField>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="sWP-m1-CvH" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="16" y="152" width="212" height="44"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="44" id="kAl-wh-79z"/>
-                            </constraints>
-                        </customView>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="amw-qD-Bei" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="16" y="100" width="212" height="44"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="44" id="fRX-Ad-ZxU"/>
-                            </constraints>
-                        </customView>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="mH7-tW-KNc" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="16" y="70" width="212" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="jE4-vY-LC6"/>
-                            </constraints>
-                        </customView>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="UQx-5V-Fdc" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="16" y="0.0" width="212" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="BLq-SW-oti"/>
-                            </constraints>
-                        </customView>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="rPN-Fl-aJM">
-                            <rect key="frame" x="16" y="30" width="212" height="32"/>
-                            <subviews>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vb4-xX-AVH">
-                                    <rect key="frame" x="6" y="8" width="176" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Creat single Worksheet for..." id="f8p-kU-hGt">
-                                        <font key="font" metaFont="system"/>
-                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                    </textFieldCell>
-                                </textField>
-                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ujy-dq-yjg">
-                                    <rect key="frame" x="192" y="10" width="12" height="12"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12" id="7BD-17-cFM"/>
-                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="7a8-rt-d53"/>
-                                        <constraint firstAttribute="height" constant="12" id="bL1-AK-vQZ"/>
-                                        <constraint firstAttribute="width" constant="12" id="f9d-zr-y3s"/>
-                                    </constraints>
-                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="BsR-kZ-bx0"/>
-                                </imageView>
-                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ZnQ-TM-Fwz">
-                                    <rect key="frame" x="0.0" y="0.0" width="212" height="32"/>
-                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="mKN-6s-lDk">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                    </buttonCell>
-                                    <connections>
-                                        <action selector="tablesTypeButtonAction:" target="-2" id="YNH-f4-mzl"/>
-                                    </connections>
-                                </button>
-                            </subviews>
-                            <constraints>
-                                <constraint firstItem="vb4-xX-AVH" firstAttribute="leading" secondItem="rPN-Fl-aJM" secondAttribute="leading" constant="8" id="0B7-ei-74y"/>
-                                <constraint firstAttribute="trailing" secondItem="ZnQ-TM-Fwz" secondAttribute="trailing" id="5P7-uh-EzI"/>
-                                <constraint firstAttribute="bottom" secondItem="ZnQ-TM-Fwz" secondAttribute="bottom" id="LPu-oT-lyw"/>
-                                <constraint firstItem="ujy-dq-yjg" firstAttribute="centerY" secondItem="rPN-Fl-aJM" secondAttribute="centerY" id="UTY-Bh-1kl"/>
-                                <constraint firstItem="ZnQ-TM-Fwz" firstAttribute="leading" secondItem="rPN-Fl-aJM" secondAttribute="leading" id="XPb-dP-GtQ"/>
-                                <constraint firstAttribute="trailing" secondItem="ujy-dq-yjg" secondAttribute="trailing" constant="8" id="dte-Qh-BoO"/>
-                                <constraint firstAttribute="trailing" secondItem="vb4-xX-AVH" secondAttribute="trailing" constant="32" id="jhT-Na-DiP"/>
-                                <constraint firstItem="vb4-xX-AVH" firstAttribute="centerY" secondItem="rPN-Fl-aJM" secondAttribute="centerY" id="meb-ej-UB6"/>
-                                <constraint firstItem="ZnQ-TM-Fwz" firstAttribute="top" secondItem="rPN-Fl-aJM" secondAttribute="top" id="nZw-4Q-Gf5"/>
-                                <constraint firstAttribute="height" constant="32" id="rgc-Q7-p2W"/>
-                            </constraints>
-                        </customView>
-                    </subviews>
-                    <constraints>
-                        <constraint firstAttribute="trailing" secondItem="amw-qD-Bei" secondAttribute="trailing" constant="16" id="0JF-kS-D9J"/>
-                        <constraint firstItem="rPN-Fl-aJM" firstAttribute="leading" secondItem="LbV-4M-wTH" secondAttribute="leading" constant="16" id="8CB-GC-6VH"/>
-                        <constraint firstItem="mH7-tW-KNc" firstAttribute="leading" secondItem="LbV-4M-wTH" secondAttribute="leading" constant="16" id="EzD-bm-t4n"/>
-                        <constraint firstItem="amw-qD-Bei" firstAttribute="leading" secondItem="LbV-4M-wTH" secondAttribute="leading" constant="16" id="IV3-7p-OiB"/>
-                        <constraint firstItem="Iwz-rs-g8Z" firstAttribute="top" secondItem="LbV-4M-wTH" secondAttribute="top" id="LBx-E1-iRe"/>
-                        <constraint firstAttribute="trailing" secondItem="rPN-Fl-aJM" secondAttribute="trailing" constant="16" id="NJC-cK-jif"/>
-                        <constraint firstAttribute="height" constant="224" id="Oqk-Yp-Hqu"/>
-                        <constraint firstAttribute="trailing" secondItem="mH7-tW-KNc" secondAttribute="trailing" constant="16" id="VzD-9b-jVo"/>
-                        <constraint firstItem="sWP-m1-CvH" firstAttribute="top" secondItem="Iwz-rs-g8Z" secondAttribute="bottom" constant="8" id="Xwe-7p-dRP"/>
-                        <constraint firstAttribute="trailing" secondItem="sWP-m1-CvH" secondAttribute="trailing" constant="16" id="bYB-kp-Njo"/>
-                        <constraint firstAttribute="trailing" secondItem="UQx-5V-Fdc" secondAttribute="trailing" constant="16" id="dre-v1-4z4"/>
-                        <constraint firstItem="sWP-m1-CvH" firstAttribute="leading" secondItem="LbV-4M-wTH" secondAttribute="leading" constant="16" id="dxS-E9-WIh"/>
-                        <constraint firstItem="UQx-5V-Fdc" firstAttribute="top" secondItem="rPN-Fl-aJM" secondAttribute="bottom" constant="8" id="fJN-FZ-L6w"/>
-                        <constraint firstItem="amw-qD-Bei" firstAttribute="top" secondItem="sWP-m1-CvH" secondAttribute="bottom" constant="8" id="gQW-cg-Pd4"/>
-                        <constraint firstItem="Iwz-rs-g8Z" firstAttribute="leading" secondItem="LbV-4M-wTH" secondAttribute="leading" constant="16" id="kM7-gr-3do"/>
-                        <constraint firstItem="mH7-tW-KNc" firstAttribute="top" secondItem="amw-qD-Bei" secondAttribute="bottom" constant="8" id="lqb-dD-2jV"/>
-                        <constraint firstItem="UQx-5V-Fdc" firstAttribute="leading" secondItem="LbV-4M-wTH" secondAttribute="leading" constant="16" id="pnj-cN-tHx"/>
-                        <constraint firstItem="rPN-Fl-aJM" firstAttribute="top" secondItem="mH7-tW-KNc" secondAttribute="bottom" constant="8" id="w5s-sq-5gs"/>
-                    </constraints>
-                </customView>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="sYQ-Tb-lbQ" customClass="KMBatchTextRecognitionView" customModule="PDF_Office" customModuleProvider="target">
-                    <rect key="frame" x="0.0" y="23" width="244" height="90"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="90" id="pEU-cV-tD7"/>
-                    </constraints>
-                </customView>
-            </subviews>
-            <constraints>
-                <constraint firstItem="sYQ-Tb-lbQ" firstAttribute="top" secondItem="LbV-4M-wTH" secondAttribute="bottom" constant="16" id="Kfo-Qc-I94"/>
-                <constraint firstAttribute="trailing" secondItem="sYQ-Tb-lbQ" secondAttribute="trailing" id="QuV-3Z-UHN"/>
-                <constraint firstAttribute="trailing" secondItem="LbV-4M-wTH" secondAttribute="trailing" id="n9M-5h-pWQ"/>
-                <constraint firstItem="LbV-4M-wTH" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="o1t-hl-CkX"/>
-                <constraint firstItem="sYQ-Tb-lbQ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="s52-nl-QGC"/>
-                <constraint firstItem="LbV-4M-wTH" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="wns-Ch-1WA"/>
-            </constraints>
             <point key="canvasLocation" x="54" y="189.5"/>
         </customView>
     </objects>
-    <resources>
-        <image name="btn_arrow_gray_down_s_norm_on" width="12" height="12"/>
-    </resources>
 </document>

+ 54 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Html/KMBatchHtmlView.swift

@@ -0,0 +1,54 @@
+//
+//  KMBatchHtmlView.swift
+//  PDF Reader Pro
+//
+//  Created by lizhe on 2025/1/8.
+//
+
+import Cocoa
+
+class KMBatchHtmlView: KMBatchConvertPDFItemView {
+    
+    override func setup() {
+        super.setup()
+        settingView = KMConvertPPTsSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
+        }
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
+        }
+    }
+    
+    override func reloadData() {
+
+    }
+    
+}

+ 18 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Html/KMBatchHtmlView.xib

@@ -0,0 +1,18 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchHtmlView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="139" y="154"/>
+        </customView>
+    </objects>
+</document>

+ 35 - 21
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Image/KMBatchConverPDFImageView.swift

@@ -8,32 +8,47 @@
 import Cocoa
 
 class KMBatchConverPDFImageView: KMBatchConvertPDFItemView {
-    @IBOutlet weak var settingLabel: NSTextField!
-    
-    @IBOutlet weak var imageTypeLabel: NSTextField!
-    @IBOutlet weak var imageTypeButton: NSButton!
-    
-    override func draw(_ dirtyRect: NSRect) {
-        super.draw(dirtyRect)
-
-        // Drawing code here.
-    }
     
     override func setup() {
         super.setup()
-        
-        self.imageTypeLabel.stringValue = data.imageType.rawValue
-        
-        self.settingLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.settingLabel.stringValue = NSLocalizedString("Format", comment: "")
-        self.settingLabel.font = NSFont.SFProTextRegularFont(12.0)
-        
-        self.imageTypeLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.imageTypeLabel.font = NSFont.SFProTextRegularFont(14.0)
+        settingView = KMConvertImageSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
+        }
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
+        }
     }
     
     override func reloadData() {
-        super.reloadData()
+
     }
     
 }
@@ -51,7 +66,6 @@ extension KMBatchConverPDFImageView: KMBatchConverPDFImageViewAction {
     }
 
     @objc func ImageTypeButtonClick(item: NSMenuItem) {
-        self.imageTypeLabel.stringValue = item.title
         self.presenter.imageTypeButtonAction(string: item.title)
     }
 }

+ 5 - 90
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Image/KMBatchConverPDFImageView.xib

@@ -1,103 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFImageView" customModule="PDF_Office" customModuleProvider="target">
-            <connections>
-                <outlet property="imageTypeButton" destination="aHo-qN-IHh" id="dhS-xo-cYR"/>
-                <outlet property="imageTypeLabel" destination="OYW-hH-FRS" id="kCi-eo-w0v"/>
-                <outlet property="settingLabel" destination="RUs-ve-LVs" id="9IA-FS-Qdr"/>
-            </connections>
-        </customObject>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFImageView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">
-            <rect key="frame" x="0.0" y="0.0" width="244" height="60"/>
+            <rect key="frame" x="0.0" y="0.0" width="201" height="465"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <subviews>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ZI1-K8-xRx">
-                    <rect key="frame" x="0.0" y="0.0" width="244" height="60"/>
-                    <subviews>
-                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RUs-ve-LVs">
-                            <rect key="frame" x="14" y="40" width="155" height="20"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="20" id="KrI-ig-TaG"/>
-                            </constraints>
-                            <textFieldCell key="cell" lineBreakMode="clipping" title="Excel Workbook Settings" id="gwR-gm-tJR">
-                                <font key="font" usesAppearanceFont="YES"/>
-                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                            </textFieldCell>
-                        </textField>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="0FI-i2-43w">
-                            <rect key="frame" x="16" y="0.0" width="212" height="32"/>
-                            <subviews>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OYW-hH-FRS">
-                                    <rect key="frame" x="6" y="8" width="176" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Creat single Worksheet for..." id="hOv-dA-qgW">
-                                        <font key="font" metaFont="system"/>
-                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                    </textFieldCell>
-                                </textField>
-                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QHk-E5-XAm">
-                                    <rect key="frame" x="192" y="10" width="12" height="12"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12" id="1wK-by-1mk"/>
-                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="9cO-YD-K5d"/>
-                                        <constraint firstAttribute="height" constant="12" id="JvP-B6-ht9"/>
-                                        <constraint firstAttribute="width" constant="12" id="uyJ-Tt-LLV"/>
-                                    </constraints>
-                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="uQB-Mz-dle"/>
-                                </imageView>
-                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aHo-qN-IHh">
-                                    <rect key="frame" x="0.0" y="0.0" width="212" height="32"/>
-                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="T9x-nM-n5E">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                    </buttonCell>
-                                    <connections>
-                                        <action selector="ImageTypeButtonAction:" target="-2" id="Y93-7N-vPk"/>
-                                    </connections>
-                                </button>
-                            </subviews>
-                            <constraints>
-                                <constraint firstItem="aHo-qN-IHh" firstAttribute="leading" secondItem="0FI-i2-43w" secondAttribute="leading" id="DFa-fu-4jn"/>
-                                <constraint firstAttribute="height" constant="32" id="EmZ-wO-egV"/>
-                                <constraint firstItem="aHo-qN-IHh" firstAttribute="top" secondItem="0FI-i2-43w" secondAttribute="top" id="GLb-6w-p7u"/>
-                                <constraint firstAttribute="trailing" secondItem="QHk-E5-XAm" secondAttribute="trailing" constant="8" id="HRK-O4-ulR"/>
-                                <constraint firstItem="QHk-E5-XAm" firstAttribute="centerY" secondItem="0FI-i2-43w" secondAttribute="centerY" id="LbN-SR-c27"/>
-                                <constraint firstAttribute="trailing" secondItem="OYW-hH-FRS" secondAttribute="trailing" constant="32" id="WTD-AN-Nkj"/>
-                                <constraint firstAttribute="bottom" secondItem="aHo-qN-IHh" secondAttribute="bottom" id="g1F-Vm-btJ"/>
-                                <constraint firstAttribute="trailing" secondItem="aHo-qN-IHh" secondAttribute="trailing" id="hho-Nw-rRf"/>
-                                <constraint firstItem="OYW-hH-FRS" firstAttribute="leading" secondItem="0FI-i2-43w" secondAttribute="leading" constant="8" id="yMy-sx-DQR"/>
-                                <constraint firstItem="OYW-hH-FRS" firstAttribute="centerY" secondItem="0FI-i2-43w" secondAttribute="centerY" id="zO3-64-sfB"/>
-                            </constraints>
-                        </customView>
-                    </subviews>
-                    <constraints>
-                        <constraint firstItem="0FI-i2-43w" firstAttribute="leading" secondItem="ZI1-K8-xRx" secondAttribute="leading" constant="16" id="EbB-Y1-feO"/>
-                        <constraint firstItem="RUs-ve-LVs" firstAttribute="leading" secondItem="ZI1-K8-xRx" secondAttribute="leading" constant="16" id="Kz2-Fd-S82"/>
-                        <constraint firstAttribute="trailing" secondItem="0FI-i2-43w" secondAttribute="trailing" constant="16" id="gTq-s6-tvI"/>
-                        <constraint firstItem="RUs-ve-LVs" firstAttribute="top" secondItem="ZI1-K8-xRx" secondAttribute="top" id="lnx-M1-oVz"/>
-                        <constraint firstItem="0FI-i2-43w" firstAttribute="top" secondItem="RUs-ve-LVs" secondAttribute="bottom" constant="8" id="mNz-3Q-xBb"/>
-                    </constraints>
-                </customView>
-            </subviews>
-            <constraints>
-                <constraint firstAttribute="bottom" secondItem="ZI1-K8-xRx" secondAttribute="bottom" id="5Sy-W8-4BP"/>
-                <constraint firstItem="ZI1-K8-xRx" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="HJC-a9-sBd"/>
-                <constraint firstAttribute="trailing" secondItem="ZI1-K8-xRx" secondAttribute="trailing" id="Nh3-qJ-2xG"/>
-                <constraint firstItem="ZI1-K8-xRx" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="Pmc-6S-Wjn"/>
-            </constraints>
-            <point key="canvasLocation" x="11" y="158"/>
+            <point key="canvasLocation" x="-10.5" y="360.5"/>
         </customView>
     </objects>
-    <resources>
-        <image name="btn_arrow_gray_down_s_norm_on" width="12" height="12"/>
-    </resources>
 </document>

+ 54 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Json/KMBatchJsonView.swift

@@ -0,0 +1,54 @@
+//
+//  KMBatchJsonView.swift
+//  PDF Reader Pro
+//
+//  Created by lizhe on 2025/1/8.
+//
+
+import Cocoa
+
+class KMBatchJsonView: KMBatchConvertPDFItemView {
+    
+    override func setup() {
+        super.setup()
+        settingView = KMConvertJsonSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
+        }
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
+        }
+    }
+    
+    override func reloadData() {
+
+    }
+    
+}

+ 18 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Json/KMBatchJsonView.xib

@@ -0,0 +1,18 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchJsonView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="139" y="154"/>
+        </customView>
+    </objects>
+</document>

+ 37 - 12
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/PPT/KMBatchConverPDFPPTView.swift

@@ -8,22 +8,47 @@
 import Cocoa
 
 class KMBatchConverPDFPPTView: KMBatchConvertPDFItemView {
-    @IBOutlet weak var textRecognitionView: KMBatchTextRecognitionView!
-    override func draw(_ dirtyRect: NSRect) {
-        super.draw(dirtyRect)
-
-        // Drawing code here.
-    }
-
+    
     override func setup() {
+        
         super.setup()
+        settingView = KMConvertPPTsSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
+        }
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
+        }
     }
     
     override func reloadData() {
-        
-        self.textRecognitionView.data = self.data
-        self.textRecognitionView.presenter = self.presenter
-        self.textRecognitionView.type = self.type
-        self.textRecognitionView.reloadData()
+
     }
 }

+ 5 - 23
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/PPT/KMBatchConverPDFPPTView.xib

@@ -1,36 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFPPTView" customModule="PDF_Office" customModuleProvider="target">
-            <connections>
-                <outlet property="textRecognitionView" destination="Qne-yt-WF7" id="RN0-5W-MDP"/>
-            </connections>
-        </customObject>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFPPTView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">
-            <rect key="frame" x="0.0" y="0.0" width="244" height="90"/>
+            <rect key="frame" x="0.0" y="0.0" width="271" height="522"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <subviews>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Qne-yt-WF7" customClass="KMBatchTextRecognitionView" customModule="PDF_Office" customModuleProvider="target">
-                    <rect key="frame" x="0.0" y="0.0" width="244" height="90"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="90" id="xAV-W4-EpF"/>
-                    </constraints>
-                </customView>
-            </subviews>
-            <constraints>
-                <constraint firstAttribute="bottom" secondItem="Qne-yt-WF7" secondAttribute="bottom" id="CbL-WJ-Iqx"/>
-                <constraint firstItem="Qne-yt-WF7" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="Goh-0t-SsR"/>
-                <constraint firstItem="Qne-yt-WF7" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="ifk-2U-Bkb"/>
-                <constraint firstAttribute="trailing" secondItem="Qne-yt-WF7" secondAttribute="trailing" id="yR8-7g-TTq"/>
-            </constraints>
-            <point key="canvasLocation" x="-289" y="116"/>
+            <point key="canvasLocation" x="-45.5" y="335"/>
         </customView>
     </objects>
 </document>

+ 54 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/RTF/KMBatchRTFView.swift

@@ -0,0 +1,54 @@
+//
+//  KMBatchRTFView.swift
+//  PDF Reader Pro
+//
+//  Created by lizhe on 2025/1/8.
+//
+
+import Cocoa
+
+class KMBatchRTFView: KMBatchConvertPDFItemView {
+    
+    override func setup() {
+        super.setup()
+        settingView = KMConvertPPTsSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
+        }
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
+        }
+    }
+    
+    override func reloadData() {
+
+    }
+    
+}

+ 18 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/RTF/KMBatchRTFView.xib

@@ -0,0 +1,18 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchRTFView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="139" y="154"/>
+        </customView>
+    </objects>
+</document>

+ 35 - 31
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/TextRecognition/KMBatchTextRecognitionView.swift

@@ -8,46 +8,51 @@
 import Cocoa
 
 class KMBatchTextRecognitionView: KMBatchConvertPDFItemView {
-    @IBOutlet weak var textRecognitionSettingLabel: NSTextField!
-    @IBOutlet weak var recognizeTextButton: KMImageTitleButton!
-    @IBOutlet weak var languageLabel: NSTextField!
-    
-    override func draw(_ dirtyRect: NSRect) {
-        super.draw(dirtyRect)
-
-        // Drawing code here.
-    }
     
     override func setup() {
         super.setup()
-        
-        self.recognizeTextButton.title = NSLocalizedString("Recognize text if needed", comment: "")
-        self.recognizeTextButton.imageName = "btn_checkbox_unsel_on"
-        self.recognizeTextButton.action = { [unowned self] (view, button) in
-            self.presenter.needRecognizeTextAction()
+        settingView = KMConvertPPTsSettingView.createFromNib()
+        settingView?.frame = self.bounds
+        guard let settingView = settingView else { return }
+        settingView.autoresizingMask = [.width, .height, .maxYMargin]
+        addSubview(settingView)
+
+        settingView.lanugageDidSelected = { [weak self] value, _ in
+            guard let index = value as? Int else {
+                return
+            }
+            
+//            self?.saveLanugageSelectedIndex(index: index)
+        }
+
+        settingView.pageRangeDidChange = { [weak self] pageRange in
+//            self?.pageRange = pageRange
+            if (pageRange != .custom) {
+//                self?._updatePreView(pageRange: pageRange)
+            }
+        }
+        settingView.pageRangeDidInputFinishCallback = { [unowned self] string in
+//            self.pageRangeString = string
+//            let array = self.findSelectPage(pageRangeString: string)
+//            if array.count == 0 {
+//                let alert = NSAlert()
+//                alert.alertStyle = .warning
+//                alert.messageText = KMLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
+//                alert.runModal()
+//
+//                self.settingView?.pageRangeItemView?.pageSizeVC?.stringValue = ""
+//            } else {
+//                self._updatePreView(pageRange: .custom, pageString: string)
+//            }
         }
-        
-        self.textRecognitionSettingLabel.textColor = NSColor.km_init(hex: "#616469")
-        self.textRecognitionSettingLabel.stringValue = NSLocalizedString("Text Recognition Settings", comment: "")
-        self.textRecognitionSettingLabel.font = NSFont.SFProTextRegularFont(12.0)
-        
-        self.recognizeTextButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.recognizeTextButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
-        
-        self.languageLabel.textColor = NSColor.km_init(hex: "#252629")
-        self.languageLabel.font = NSFont.SFProTextRegularFont(14.0)
     }
     
     override func reloadData() {
-        if data.needRecognizeText {
-            self.recognizeTextButton.imageName = "btn_checkbox_sel_on"
-        } else {
-            self.recognizeTextButton.imageName = "btn_checkbox_unsel_on"
-        }
+
     }
-    
 }
 
+
 protocol KMBatchTextRecognitionViewAction {}
 extension KMBatchTextRecognitionView: KMBatchTextRecognitionViewAction {
     @IBAction func languageAction(_ sender: NSButton) {
@@ -60,7 +65,6 @@ extension KMBatchTextRecognitionView: KMBatchTextRecognitionViewAction {
     }
 
     @objc func languageClick(item: NSMenuItem) {
-        self.languageLabel.stringValue = item.title
         self.presenter.recognizeTextLanguageAction(string: item.title)
     }
 }

+ 6 - 99
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/TextRecognition/KMBatchTextRecognitionView.xib

@@ -1,111 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchTextRecognitionView" customModule="PDF_Office" customModuleProvider="target">
-            <connections>
-                <outlet property="languageLabel" destination="BRR-SX-d21" id="tyH-C5-s6A"/>
-                <outlet property="recognizeTextButton" destination="EJe-6n-OJK" id="sWt-H4-wZf"/>
-                <outlet property="textRecognitionSettingLabel" destination="A9w-b9-Y78" id="wrk-ZE-vbz"/>
-            </connections>
-        </customObject>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchTextRecognitionView" customModule="PDF_Reader_Pro" customModuleProvider="target"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">
-            <rect key="frame" x="0.0" y="0.0" width="271" height="90"/>
+            <rect key="frame" x="0.0" y="0.0" width="247" height="439"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <subviews>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="8EO-k6-nvn">
-                    <rect key="frame" x="0.0" y="0.0" width="271" height="90"/>
-                    <subviews>
-                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="A9w-b9-Y78">
-                            <rect key="frame" x="14" y="70" width="159" height="20"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="20" id="1FO-r7-WDh"/>
-                            </constraints>
-                            <textFieldCell key="cell" lineBreakMode="clipping" title="Text Recognition Settings" id="ykN-KN-abT">
-                                <font key="font" usesAppearanceFont="YES"/>
-                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                            </textFieldCell>
-                        </textField>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="3M9-V9-HPM">
-                            <rect key="frame" x="16" y="0.0" width="239" height="32"/>
-                            <subviews>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BRR-SX-d21">
-                                    <rect key="frame" x="6" y="8" width="48" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="English" id="Rk7-jG-Rlr">
-                                        <font key="font" metaFont="system"/>
-                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                    </textFieldCell>
-                                </textField>
-                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="lI9-Q1-0yN">
-                                    <rect key="frame" x="219" y="10" width="12" height="12"/>
-                                    <constraints>
-                                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12" id="9lr-lo-Htt"/>
-                                        <constraint firstAttribute="height" constant="12" id="byE-b1-3w8"/>
-                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="fGv-JA-FeZ"/>
-                                        <constraint firstAttribute="width" constant="12" id="vHz-iv-nNG"/>
-                                    </constraints>
-                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="PBc-2w-dNL"/>
-                                </imageView>
-                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1gg-tk-Tnt">
-                                    <rect key="frame" x="0.0" y="0.0" width="239" height="32"/>
-                                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="ZWF-Wv-Gcl">
-                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                        <font key="font" metaFont="system"/>
-                                    </buttonCell>
-                                    <connections>
-                                        <action selector="languageAction:" target="-2" id="vBU-TZ-w4X"/>
-                                    </connections>
-                                </button>
-                            </subviews>
-                            <constraints>
-                                <constraint firstItem="1gg-tk-Tnt" firstAttribute="top" secondItem="3M9-V9-HPM" secondAttribute="top" id="6tI-Q2-MTt"/>
-                                <constraint firstAttribute="height" constant="32" id="77o-ms-mu5"/>
-                                <constraint firstItem="BRR-SX-d21" firstAttribute="centerY" secondItem="3M9-V9-HPM" secondAttribute="centerY" id="7hf-d8-ll6"/>
-                                <constraint firstAttribute="trailing" secondItem="lI9-Q1-0yN" secondAttribute="trailing" constant="8" id="Ain-s7-DIL"/>
-                                <constraint firstAttribute="trailing" secondItem="1gg-tk-Tnt" secondAttribute="trailing" id="SDz-NJ-aBU"/>
-                                <constraint firstItem="BRR-SX-d21" firstAttribute="leading" secondItem="3M9-V9-HPM" secondAttribute="leading" constant="8" id="hGi-Fb-de4"/>
-                                <constraint firstItem="lI9-Q1-0yN" firstAttribute="centerY" secondItem="3M9-V9-HPM" secondAttribute="centerY" id="n02-4h-V4r"/>
-                                <constraint firstItem="1gg-tk-Tnt" firstAttribute="leading" secondItem="3M9-V9-HPM" secondAttribute="leading" id="xmb-8G-VtL"/>
-                                <constraint firstAttribute="bottom" secondItem="1gg-tk-Tnt" secondAttribute="bottom" id="ygI-Bl-f4W"/>
-                            </constraints>
-                        </customView>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="EJe-6n-OJK" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="16" y="40" width="239" height="22"/>
-                            <constraints>
-                                <constraint firstAttribute="height" constant="22" id="rd8-FA-G5G"/>
-                            </constraints>
-                        </customView>
-                    </subviews>
-                    <constraints>
-                        <constraint firstItem="3M9-V9-HPM" firstAttribute="leading" secondItem="8EO-k6-nvn" secondAttribute="leading" constant="16" id="2K9-pe-ER6"/>
-                        <constraint firstItem="EJe-6n-OJK" firstAttribute="top" secondItem="A9w-b9-Y78" secondAttribute="bottom" constant="8" id="Ae5-br-M4G"/>
-                        <constraint firstItem="EJe-6n-OJK" firstAttribute="leading" secondItem="8EO-k6-nvn" secondAttribute="leading" constant="16" id="D5U-Eu-0zc"/>
-                        <constraint firstItem="A9w-b9-Y78" firstAttribute="leading" secondItem="8EO-k6-nvn" secondAttribute="leading" constant="16" id="Ive-Vj-HsB"/>
-                        <constraint firstAttribute="trailing" secondItem="EJe-6n-OJK" secondAttribute="trailing" constant="16" id="XWx-hY-UV8"/>
-                        <constraint firstItem="3M9-V9-HPM" firstAttribute="top" secondItem="EJe-6n-OJK" secondAttribute="bottom" constant="8" id="iAA-lp-IF9"/>
-                        <constraint firstItem="A9w-b9-Y78" firstAttribute="top" secondItem="8EO-k6-nvn" secondAttribute="top" id="lY0-y8-Gx7"/>
-                        <constraint firstAttribute="trailing" secondItem="3M9-V9-HPM" secondAttribute="trailing" constant="16" id="sD0-aY-EWo"/>
-                        <constraint firstAttribute="height" constant="90" id="wZL-1Z-gNO"/>
-                    </constraints>
-                </customView>
-            </subviews>
-            <constraints>
-                <constraint firstAttribute="bottom" secondItem="8EO-k6-nvn" secondAttribute="bottom" id="Qq2-Wp-Ngi"/>
-                <constraint firstAttribute="trailing" secondItem="8EO-k6-nvn" secondAttribute="trailing" id="c1F-Ev-Fjf"/>
-                <constraint firstItem="8EO-k6-nvn" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="cas-3O-LSM"/>
-                <constraint firstItem="8EO-k6-nvn" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="jAA-0p-NpJ"/>
-            </constraints>
-            <point key="canvasLocation" x="-53.5" y="234"/>
+            <point key="canvasLocation" x="-65.5" y="408.5"/>
         </customView>
     </objects>
-    <resources>
-        <image name="btn_arrow_gray_down_s_norm_on" width="12" height="12"/>
-    </resources>
 </document>

+ 3 - 10
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Word/KMBatchConverPDFWordView.swift

@@ -8,19 +8,12 @@
 import Cocoa
 
 class KMBatchConverPDFWordView: KMBatchConvertPDFItemView {
-    var settingView: KMConvertWordSettingView!
-    
-    
-    override func draw(_ dirtyRect: NSRect) {
-        super.draw(dirtyRect)
-
-        // Drawing code here.
-    }
     
     override func setup() {
+        
         super.setup()
-        let settingView = KMConvertWordSettingView.createFromNib()
-        settingView?.isBatch = true
+        
+        settingView = KMConvertWordSettingView.createFromNib()
         settingView?.frame = self.bounds
         guard let settingView = settingView else { return }
         settingView.autoresizingMask = [.width, .height, .maxYMargin]

+ 74 - 2
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -1741,6 +1741,24 @@
 		ADB2D6FE294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6FC294882B70029D2B3 /* KMTextFieldStepperView.xib */; };
 		ADB2D6FF294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6FC294882B70029D2B3 /* KMTextFieldStepperView.xib */; };
 		ADB5E50E2A3703E6007110A8 /* KMInAppPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AAF2A31B76300DBFD3C /* KMInAppPurchaseManager.swift */; };
+		ADBC15E92D2E0ED3000ACD95 /* KMBatchRTFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15E82D2E0ED3000ACD95 /* KMBatchRTFView.swift */; };
+		ADBC15EA2D2E0ED3000ACD95 /* KMBatchRTFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15E82D2E0ED3000ACD95 /* KMBatchRTFView.swift */; };
+		ADBC15EB2D2E0ED3000ACD95 /* KMBatchRTFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15E82D2E0ED3000ACD95 /* KMBatchRTFView.swift */; };
+		ADBC15ED2D2E0EDF000ACD95 /* KMBatchRTFView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15EC2D2E0EDF000ACD95 /* KMBatchRTFView.xib */; };
+		ADBC15EE2D2E0EDF000ACD95 /* KMBatchRTFView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15EC2D2E0EDF000ACD95 /* KMBatchRTFView.xib */; };
+		ADBC15EF2D2E0EDF000ACD95 /* KMBatchRTFView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15EC2D2E0EDF000ACD95 /* KMBatchRTFView.xib */; };
+		ADBC15F12D2E0EFA000ACD95 /* KMBatchJsonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15F02D2E0EFA000ACD95 /* KMBatchJsonView.swift */; };
+		ADBC15F22D2E0EFA000ACD95 /* KMBatchJsonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15F02D2E0EFA000ACD95 /* KMBatchJsonView.swift */; };
+		ADBC15F32D2E0EFA000ACD95 /* KMBatchJsonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15F02D2E0EFA000ACD95 /* KMBatchJsonView.swift */; };
+		ADBC15F52D2E0F06000ACD95 /* KMBatchJsonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15F42D2E0F06000ACD95 /* KMBatchJsonView.xib */; };
+		ADBC15F62D2E0F06000ACD95 /* KMBatchJsonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15F42D2E0F06000ACD95 /* KMBatchJsonView.xib */; };
+		ADBC15F72D2E0F06000ACD95 /* KMBatchJsonView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15F42D2E0F06000ACD95 /* KMBatchJsonView.xib */; };
+		ADBC15F92D2E0F1F000ACD95 /* KMBatchHtmlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15F82D2E0F1F000ACD95 /* KMBatchHtmlView.swift */; };
+		ADBC15FA2D2E0F1F000ACD95 /* KMBatchHtmlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15F82D2E0F1F000ACD95 /* KMBatchHtmlView.swift */; };
+		ADBC15FB2D2E0F1F000ACD95 /* KMBatchHtmlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC15F82D2E0F1F000ACD95 /* KMBatchHtmlView.swift */; };
+		ADBC15FD2D2E0F29000ACD95 /* KMBatchHtmlView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15FC2D2E0F29000ACD95 /* KMBatchHtmlView.xib */; };
+		ADBC15FE2D2E0F29000ACD95 /* KMBatchHtmlView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15FC2D2E0F29000ACD95 /* KMBatchHtmlView.xib */; };
+		ADBC15FF2D2E0F29000ACD95 /* KMBatchHtmlView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADBC15FC2D2E0F29000ACD95 /* KMBatchHtmlView.xib */; };
 		ADBC174F2A2991F700959CEE /* KMPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC174E2A2991F700959CEE /* KMPurchaseManager.swift */; };
 		ADBC17502A2991F700959CEE /* KMPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC174E2A2991F700959CEE /* KMPurchaseManager.swift */; };
 		ADBC17512A2991F700959CEE /* KMPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBC174E2A2991F700959CEE /* KMPurchaseManager.swift */; };
@@ -5393,6 +5411,12 @@
 		ADB2D6F1294741720029D2B3 /* KMPrintPaperSetView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPrintPaperSetView.xib; sourceTree = "<group>"; };
 		ADB2D6F8294882AE0029D2B3 /* KMTextFieldStepperView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMTextFieldStepperView.swift; sourceTree = "<group>"; };
 		ADB2D6FC294882B70029D2B3 /* KMTextFieldStepperView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMTextFieldStepperView.xib; sourceTree = "<group>"; };
+		ADBC15E82D2E0ED3000ACD95 /* KMBatchRTFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchRTFView.swift; sourceTree = "<group>"; };
+		ADBC15EC2D2E0EDF000ACD95 /* KMBatchRTFView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchRTFView.xib; sourceTree = "<group>"; };
+		ADBC15F02D2E0EFA000ACD95 /* KMBatchJsonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchJsonView.swift; sourceTree = "<group>"; };
+		ADBC15F42D2E0F06000ACD95 /* KMBatchJsonView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchJsonView.xib; sourceTree = "<group>"; };
+		ADBC15F82D2E0F1F000ACD95 /* KMBatchHtmlView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchHtmlView.swift; sourceTree = "<group>"; };
+		ADBC15FC2D2E0F29000ACD95 /* KMBatchHtmlView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchHtmlView.xib; sourceTree = "<group>"; };
 		ADBC174E2A2991F700959CEE /* KMPurchaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMPurchaseManager.swift; sourceTree = "<group>"; };
 		ADBC2CF4299C7B3E006280C8 /* Print.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Print.xcassets; sourceTree = "<group>"; };
 		ADBC2CF9299CA6B9006280C8 /* KMPrintDuplexPrintingSetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPrintDuplexPrintingSetView.swift; sourceTree = "<group>"; };
@@ -8550,6 +8574,9 @@
 		AD8B58F92D2B777700150EA6 /* Views */ = {
 			isa = PBXGroup;
 			children = (
+				ADBC15E72D2E0EA3000ACD95 /* Html */,
+				ADBC15E62D2E0E9B000ACD95 /* Json */,
+				ADBC15E52D2E0E79000ACD95 /* RTF */,
 				AD8B58FA2D2B777700150EA6 /* TextRecognition */,
 				AD8B58FD2D2B777700150EA6 /* Excel */,
 				AD8B59002D2B777700150EA6 /* Image */,
@@ -8564,8 +8591,8 @@
 		AD8B58FA2D2B777700150EA6 /* TextRecognition */ = {
 			isa = PBXGroup;
 			children = (
-				AD8B58FB2D2B777700150EA6 /* KMBatchTextRecognitionView.xib */,
 				AD8B58FC2D2B777700150EA6 /* KMBatchTextRecognitionView.swift */,
+				AD8B58FB2D2B777700150EA6 /* KMBatchTextRecognitionView.xib */,
 			);
 			path = TextRecognition;
 			sourceTree = "<group>";
@@ -8573,8 +8600,8 @@
 		AD8B58FD2D2B777700150EA6 /* Excel */ = {
 			isa = PBXGroup;
 			children = (
-				AD8B58FE2D2B777700150EA6 /* KMBatchConverPDFExcelView.xib */,
 				AD8B58FF2D2B777700150EA6 /* KMBatchConverPDFExcelView.swift */,
+				AD8B58FE2D2B777700150EA6 /* KMBatchConverPDFExcelView.xib */,
 			);
 			path = Excel;
 			sourceTree = "<group>";
@@ -9059,6 +9086,33 @@
 			path = KMTextFieldStepperView;
 			sourceTree = "<group>";
 		};
+		ADBC15E52D2E0E79000ACD95 /* RTF */ = {
+			isa = PBXGroup;
+			children = (
+				ADBC15E82D2E0ED3000ACD95 /* KMBatchRTFView.swift */,
+				ADBC15EC2D2E0EDF000ACD95 /* KMBatchRTFView.xib */,
+			);
+			path = RTF;
+			sourceTree = "<group>";
+		};
+		ADBC15E62D2E0E9B000ACD95 /* Json */ = {
+			isa = PBXGroup;
+			children = (
+				ADBC15F02D2E0EFA000ACD95 /* KMBatchJsonView.swift */,
+				ADBC15F42D2E0F06000ACD95 /* KMBatchJsonView.xib */,
+			);
+			path = Json;
+			sourceTree = "<group>";
+		};
+		ADBC15E72D2E0EA3000ACD95 /* Html */ = {
+			isa = PBXGroup;
+			children = (
+				ADBC15F82D2E0F1F000ACD95 /* KMBatchHtmlView.swift */,
+				ADBC15FC2D2E0F29000ACD95 /* KMBatchHtmlView.xib */,
+			);
+			path = Html;
+			sourceTree = "<group>";
+		};
 		ADBC174D2A2991F700959CEE /* InAppPurchase */ = {
 			isa = PBXGroup;
 			children = (
@@ -13245,6 +13299,7 @@
 				BB8AA53F2CC66E490084F183 /* PDFImages.xcassets in Resources */,
 				BB234F042BA3D798008B3754 /* KMAIIconGuideView.xib in Resources */,
 				AD07BCE22D02CBB30075054B /* KMCompressContentView.xib in Resources */,
+				ADBC15ED2D2E0EDF000ACD95 /* KMBatchRTFView.xib in Resources */,
 				BBE412C42D12A3410069A661 /* KMRedactToolbarController.xib in Resources */,
 				ADDF83982B391A5D00A81A4E /* PDFCertExportAccessoryView.xib in Resources */,
 				AD8E48DD2D1BE5800055D3E6 /* KMOCRProgressView.xib in Resources */,
@@ -13404,6 +13459,7 @@
 				ADDF83832B391A5D00A81A4E /* DSignatureSaveTypeViewController.xib in Resources */,
 				BBD8EE992B8EC86A00EB05FE /* AutoSaveFileItem.xib in Resources */,
 				9F3BCDC82CCB749400BDAB67 /* 快速教学.pdf in Resources */,
+				ADBC15FD2D2E0F29000ACD95 /* KMBatchHtmlView.xib in Resources */,
 				AD1FE8382BD7C98300AA4A9B /* KMPDFPrintManageWindowController.xib in Resources */,
 				AD1D480B2AFB18DA007AC1F0 /* KMCompressWindowController.xib in Resources */,
 				9F1F82DD292F84D60092C4B4 /* KMHomeInsertActionViewController.xib in Resources */,
@@ -13616,6 +13672,7 @@
 				F37ACE6B2D0F182C00150B48 /* default.metallib in Resources */,
 				BBE788D52CBD2463008086E2 /* AlertControllerVC.xib in Resources */,
 				BBFBE6C528DD7B98008B2335 /* Main.storyboard in Resources */,
+				ADBC15F52D2E0F06000ACD95 /* KMBatchJsonView.xib in Resources */,
 				BBB2A9A02CB65C8E0066560B /* KMURLCreatePDFWindowController.xib in Resources */,
 				BB1B0AD42B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */,
 				ADDF83532B391A5C00A81A4E /* DSignatureFileListViewController.xib in Resources */,
@@ -13652,6 +13709,7 @@
 				9F8539F72947137500DF644E /* sadfavicon.png in Resources */,
 				BBA922292B4E96450061057A /* KMPurchaseCompareWindowController.xib in Resources */,
 				F337CC202CC6456D00D46AF4 /* KMNThumbnailBaseViewController.xib in Resources */,
+				ADBC15EE2D2E0EDF000ACD95 /* KMBatchRTFView.xib in Resources */,
 				ADAFDA4D2AEA7F2700F084BC /* KMAdvertisementShowView.xib in Resources */,
 				AD1D48262AFB6BCB007AC1F0 /* KMMergeView.xib in Resources */,
 				BB9AEB292D0FC988004BF8D2 /* FormsTextFieldController.xib in Resources */,
@@ -13704,6 +13762,7 @@
 				F30B22802CB7DAF10041002E /* KMNQuickToolWindowController.xib in Resources */,
 				BB451AAE2CF59F68003E1565 /* KMNoteController.xib in Resources */,
 				653647B72CDCA5DE00CDB13E /* KMBatchOperateBaseWindowController.xib in Resources */,
+				ADBC15FE2D2E0F29000ACD95 /* KMBatchHtmlView.xib in Resources */,
 				BBE788EE2CBD2464008086E2 /* SegmentedVC.xib in Resources */,
 				BBFBE74C28DD7DE4008B2335 /* Assets.xcassets in Resources */,
 				ADE3C1AF29A4779E00793B13 /* KMPrintAccessoryController.xib in Resources */,
@@ -13779,6 +13838,7 @@
 				BB10FAEA2AFE03CD00F18D65 /* KMPDFEditPageRangeWindowController.xib in Resources */,
 				AD07BCF12D02D6A60075054B /* KMBatchOperateRemoveHeaderFooterViewController.xib in Resources */,
 				BB1B0AE12B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */,
+				ADBC15F62D2E0F06000ACD95 /* KMBatchJsonView.xib in Resources */,
 				BBAFC84E298519F700D0648E /* KMSavePanelAccessoryController.xib in Resources */,
 				ADBC2CF6299C7B3E006280C8 /* Print.xcassets in Resources */,
 				BB52F5792CC236B6007418DB /* KMLinkWebView.xib in Resources */,
@@ -14290,6 +14350,7 @@
 				BB0FE0572B734DD1001E0F88 /* AIUserInfoController.xib in Resources */,
 				653647B22CDCA5DE00CDB13E /* KMBatchOperateLeftViewController.xib in Resources */,
 				F337CC4A2CC7EEE100D46AF4 /* KMNPDFInsertPDFWindowController.xib in Resources */,
+				ADBC15EF2D2E0EDF000ACD95 /* KMBatchRTFView.xib in Resources */,
 				BB0FE0422B734DD1001E0F88 /* AITypeChooseView.xib in Resources */,
 				BB19A7382CB79D77008204DC /* KMHomeRecommondView.xib in Resources */,
 				89E4E7312963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
@@ -14449,6 +14510,7 @@
 				BBC5ABDC2D01C411008BA0CB /* KMSignatureListController.xib in Resources */,
 				BB8AA53D2CC65C900084F183 /* KMNAlignmentController.xib in Resources */,
 				658FDBB72C9D90CE00EFA72E /* KMNoteFilterStateCollevtionViewItem.xib in Resources */,
+				ADBC15FF2D2E0F29000ACD95 /* KMBatchHtmlView.xib in Resources */,
 				BB183DD62B4EAD5400F99C7E /* Ubuntu-Bold.ttf in Resources */,
 				651559132CCA6E2400C0F0D9 /* KMConvertBaseWindowController.xib in Resources */,
 				BBB789832BE8BF2300F7E09C /* AINewConfigWindowController.xib in Resources */,
@@ -14661,6 +14723,7 @@
 				ADE86A7D2B0221E100414DFA /* KMSecurityWindowController.xib in Resources */,
 				9F00CCBB2A2F1E0F00AC462E /* dsa_priv.pem in Resources */,
 				BBF62C6E2B033B5B007B7E86 /* KMPDFEditExtractWindow.xib in Resources */,
+				ADBC15F72D2E0F06000ACD95 /* KMBatchJsonView.xib in Resources */,
 				AD8E48D42D1BB17D0055D3E6 /* KMOCRSettingView.xib in Resources */,
 				BB5A9D602CB6521400F64C1F /* SettingsGeneralView.xib in Resources */,
 				BBD761D72D1962CD006C2E48 /* KMPDFFileInfoWindowController.xib in Resources */,
@@ -14832,6 +14895,7 @@
 				AD9527CA295297B70039D2BC /* KMPrintModel.swift in Sources */,
 				9FD0FA4B29D43D6800F2AB0D /* KMDeviceBrowserWindowController.swift in Sources */,
 				BBE788BA2CBD2463008086E2 /* AlertControllerVC.swift in Sources */,
+				ADBC15F92D2E0F1F000ACD95 /* KMBatchHtmlView.swift in Sources */,
 				BB2C84782BAE71E400AF6142 /* KMBotaTableView.swift in Sources */,
 				9F9461842BD644BF0076574B /* KMTableDataManager.m in Sources */,
 				651675D92CE3312000019A20 /* KMBOTAOutlineView.swift in Sources */,
@@ -15027,6 +15091,7 @@
 				BB52F56C2CC2369C007418DB /* KMLinkEmailView.swift in Sources */,
 				AD8B597F2D2B777700150EA6 /* KMBatchConverPDFWordView.swift in Sources */,
 				ADDF83232B391A5C00A81A4E /* CDSDrawView.m in Sources */,
+				ADBC15E92D2E0ED3000ACD95 /* KMBatchRTFView.swift in Sources */,
 				BB7929F52CEF342D006FFD5D /* KMPageRangeSelectView.swift in Sources */,
 				9F1FE4BD29406E4700E952CA /* URLDropTarget.m in Sources */,
 				BB97BE242BC3E02D00BECEA8 /* SKExportAccessoryController.m in Sources */,
@@ -15559,6 +15624,7 @@
 				BBB7899F2BE8BF2400F7E09C /* AIChatView.swift in Sources */,
 				F325FD142D26B90600832097 /* KMSideViewController.swift in Sources */,
 				BBB789A52BE8BF2400F7E09C /* AIChatStringResultItem.swift in Sources */,
+				ADBC15F12D2E0EFA000ACD95 /* KMBatchJsonView.swift in Sources */,
 				AD1CA4192A061CE10070541F /* KMAnnotationScreenTypeViewItem.swift in Sources */,
 				BBE788C32CBD2463008086E2 /* EmptyVC.swift in Sources */,
 				9F1FE4F029406E4700E952CA /* BackgroundGradientView.m in Sources */,
@@ -15744,6 +15810,7 @@
 				651675C22CE3312000019A20 /* KMCustomOutlineView.swift in Sources */,
 				ADE86A812B02220700414DFA /* KMSecurityView.swift in Sources */,
 				AD8B598C2D2B777700150EA6 /* KMBatchSettingView.swift in Sources */,
+				ADBC15F22D2E0EFA000ACD95 /* KMBatchJsonView.swift in Sources */,
 				BB8F4566295AA3ED0037EA22 /* KMHeaderFooterManager.swift in Sources */,
 				BB183DDE2B4EBE1B00F99C7E /* KMTrialSuccessController.swift in Sources */,
 				BB8810C52B4F95A900AFA63E /* NSObject+DeviceInfo.m in Sources */,
@@ -15815,6 +15882,7 @@
 				BB9599CC2B3184230062D346 /* KMRedactSelectPagesWindowController.swift in Sources */,
 				656C1E3E2CD0745200295F82 /* KMConvertExcelSettingView.swift in Sources */,
 				BB853C7E2AF8B5D6009C20C1 /* KMBatchOperateAddPasswordViewController.swift in Sources */,
+				ADBC15FA2D2E0F1F000ACD95 /* KMBatchHtmlView.swift in Sources */,
 				BBE788AC2CBD2463008086E2 /* CheckBoxVC.swift in Sources */,
 				BBE068A32CDDF149000512BC /* KMBatesTemplateItem.swift in Sources */,
 				BB1969D82B2842AD00922736 /* KMSnapshotWindowController.swift in Sources */,
@@ -16458,6 +16526,7 @@
 				BB8B173D2907CDD9001C5EA5 /* NibLoadable.swift in Sources */,
 				BB4A94922B04926700940F8B /* KMGOCROperation.swift in Sources */,
 				BBF729C02B19783600576AC5 /* KMBatchRemoveHeaderFooterOperation.swift in Sources */,
+				ADBC15EA2D2E0ED3000ACD95 /* KMBatchRTFView.swift in Sources */,
 				9F8539CC29430BF300DF644E /* KMBrowserWindowController.swift in Sources */,
 				BB162E98295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
 				AD7D5CD42B957442006562CD /* KMBookmarkOutlineFileCellView.swift in Sources */,
@@ -16859,6 +16928,7 @@
 				9F1FE4A129406E4700E952CA /* HoverButton.m in Sources */,
 				BBB789922BE8BF2300F7E09C /* AITypeItemChooseView.swift in Sources */,
 				BBEFD0262AFA065F003FABD8 /* KMBatchAddHeaderFooterOperation.swift in Sources */,
+				ADBC15EB2D2E0ED3000ACD95 /* KMBatchRTFView.swift in Sources */,
 				BB79FAB42CDC65BA00BF7B39 /* KMBGTemplateController.swift in Sources */,
 				BBD14F582CDA02570077D52E /* KMEditToolbarView.swift in Sources */,
 				AD8B59632D2B777700150EA6 /* KMBatchConvertPDFViewModel.swift in Sources */,
@@ -16874,6 +16944,7 @@
 				BBE788BC2CBD2463008086E2 /* AlertControllerVC.swift in Sources */,
 				ADBC2D39299F0A5A006280C8 /* KMPrintHelpViewController.swift in Sources */,
 				9F9461862BD644BF0076574B /* KMTableDataManager.m in Sources */,
+				ADBC15FB2D2E0F1F000ACD95 /* KMBatchHtmlView.swift in Sources */,
 				BB2C847A2BAE71E400AF6142 /* KMBotaTableView.swift in Sources */,
 				89D9896E28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.swift in Sources */,
 				BB86C1EF28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
@@ -17130,6 +17201,7 @@
 				65AD988B2CB615F000927779 /* KMNoteFilterStateViewModel.swift in Sources */,
 				BB7256B52CDB816100B6CE64 /* KMBackgroundPropertyController.swift in Sources */,
 				BB1B0ACA2B4FC6E900889528 /* KMGuideConfig.swift in Sources */,
+				ADBC15F32D2E0EFA000ACD95 /* KMBatchJsonView.swift in Sources */,
 				BB8810D82B4F984000AFA63E /* JSONKit.m in Sources */,
 				9FE0BBE62B0EFBA300CD1CAC /* KMAnnotationFontWindowController.swift in Sources */,
 				BB03D69E2B0249A2008C9976 /* KMPDFEditInsertPageWindow.swift in Sources */,