Parcourir la source

Merge branch 'develop_2025' of git.kdan.cc:Mac_PDF/PDF_Office into develop_2025

niehaoyu il y a 2 mois
Parent
commit
1cffe9ae42
100 fichiers modifiés avec 9805 ajouts et 0 suppressions
  1. 4 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/OCR/Tool/Model/KMOCRModel.swift
  2. 20 0
      PDF Office/PDF Master/KMClass/NewBatch/KMBatchManager/KMBatchManager.swift
  3. 189 0
      PDF Office/PDF Master/KMClass/NewBatch/KMBatchWindowController.swift
  4. 106 0
      PDF Office/PDF Master/KMClass/NewBatch/KMBatchWindowController.xib
  5. 6 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/Contents.json
  6. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_down_s_norm_on.imageset/Contents.json
  7. 74 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_down_s_norm_on.imageset/ic.pdf
  8. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_right_s_norm_on.imageset/Contents.json
  9. 74 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_right_s_norm_on.imageset/ic.pdf
  10. 74 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_down_s_norm_on.imageset/Color=gray, Style=down, Size=s, State=norm, Disabled=false.pdf
  11. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_down_s_norm_on.imageset/Contents.json
  12. 74 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_right_s_norm_on.imageset/Color=gray, Style=right, Size=s, State=act, Disabled=false.pdf
  13. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_right_s_norm_on.imageset/Contents.json
  14. 74 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_up_s_norm_on.imageset/Color=gray, Style=up, Size=s, State=norm, Disabled=false.pdf
  15. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_up_s_norm_on.imageset/Contents.json
  16. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_hov_on.imageset/Contents.json
  17. 143 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_hov_on.imageset/State=hov, Disabled=false-1.pdf
  18. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_off.imageset/Contents.json
  19. 155 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_off.imageset/State=multisel, Disabled=true.pdf
  20. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_on.imageset/Contents.json
  21. 87 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_on.imageset/State=multisel, Disabled=false.pdf
  22. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_off.imageset/Contents.json
  23. 167 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_off.imageset/State=sel, Disabled=true-1.pdf
  24. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_on.imageset/Contents.json
  25. 99 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_on.imageset/State=sel, Disabled=false-1.pdf
  26. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_off.imageset/Contents.json
  27. 143 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_off.imageset/State=unsel, Disabled=true-1.pdf
  28. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_on.imageset/Contents.json
  29. 143 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_on.imageset/State=unsel, Disabled=false-1.pdf
  30. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_hov_on.imageset/Contents.json
  31. 111 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_hov_on.imageset/State=hov, Disabled=false.pdf
  32. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_off.imageset/Contents.json
  33. 123 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_off.imageset/State=sel, Disabled=true.pdf
  34. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_on.imageset/Contents.json
  35. 123 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_on.imageset/State=sel, Disabled=false.pdf
  36. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_off.imageset/Contents.json
  37. 111 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_off.imageset/State=unsel, Disabled=true.pdf
  38. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_on.imageset/Contents.json
  39. 111 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_on.imageset/State=unsel, Disabled=false.pdf
  40. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_false.imageset/Contents.json
  41. 184 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_false.imageset/Select=false-4.pdf
  42. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_true.imageset/Contents.json
  43. 184 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_true.imageset/Select=true-4.pdf
  44. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_false.imageset/Contents.json
  45. 191 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_false.imageset/Select=false-6.pdf
  46. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_true.imageset/Contents.json
  47. 191 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_true.imageset/Select=true-6.pdf
  48. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_false.imageset/Contents.json
  49. 182 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_false.imageset/Select=false-1.pdf
  50. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_true.imageset/Contents.json
  51. 182 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_true.imageset/Select=true-1.pdf
  52. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_false.imageset/Contents.json
  53. 115 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_false.imageset/Select=false.pdf
  54. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_true.imageset/Contents.json
  55. 115 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_true.imageset/Select=true.pdf
  56. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_false.imageset/Contents.json
  57. 103 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_false.imageset/Select=false-5.pdf
  58. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_true.imageset/Contents.json
  59. 103 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_true.imageset/Select=true-5.pdf
  60. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_false.imageset/Contents.json
  61. 97 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_false.imageset/Select=false-7.pdf
  62. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_true.imageset/Contents.json
  63. 97 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_true.imageset/Select=true-7.pdf
  64. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_false.imageset/Contents.json
  65. 1237 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_false.imageset/Select=false-2.pdf
  66. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_true.imageset/Contents.json
  67. 1237 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_true.imageset/Select=true-2.pdf
  68. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_false.imageset/Contents.json
  69. 117 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_false.imageset/Select=false-3.pdf
  70. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_true.imageset/Contents.json
  71. 117 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_true.imageset/Select=true-3.pdf
  72. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_false.imageset/Contents.json
  73. 95 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_false.imageset/Disabled=false, State=norm.pdf
  74. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_true.imageset/Contents.json
  75. 95 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_true.imageset/Disabled=true, State=norm.pdf
  76. 21 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_help.imageset/Contents.json
  77. 141 0
      PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_help.imageset/help.pdf
  78. 136 0
      PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/KMBatchCollectionView.swift
  79. 56 0
      PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/KMBatchCollectionView.xib
  80. 45 0
      PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/Model/KMBatchCollectionViewModel.swift
  81. 110 0
      PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/Presenter/KMBatchCollectionViewPrensenter.swift
  82. 45 0
      PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/View/KMBatchCollectionViewItem.swift
  83. 60 0
      PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/View/KMBatchCollectionViewItem.xib
  84. 43 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Background/KMBatchBackgroundView.swift
  85. 50 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Background/KMBatchBackgroundView.xib
  86. 165 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatchRemove/KMBatchRemoveView.swift
  87. 170 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatchRemove/KMBatchRemoveView.xib
  88. 45 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatchRemove/Model/KMBatchRemoveViewModel.swift
  89. 49 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatesNumber/KMBatchBatesNumberView.swift
  90. 52 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatesNumber/KMBatchBatesNumberView.xib
  91. 122 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Compress/KMBatchCompressView.swift
  92. 140 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Compress/KMBatchCompressView.xib
  93. 26 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Compress/Model/KMBatchCompressViewModel.swift
  94. 162 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/KMBatchConvertPDFView.swift
  95. 163 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/KMBatchConvertPDFView.xib
  96. 146 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Model/KMBatchConvertPDFViewModel.swift
  97. 178 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Presenter/KMBatchConvertPDFViewPresenter.swift
  98. 19 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Views/Base/KMBatchConvertPDFItemView.swift
  99. 73 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.swift
  100. 0 0
      PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.xib

+ 4 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/OCR/Tool/Model/KMOCRModel.swift

@@ -35,4 +35,8 @@ class KMOCRModel: NSObject {
     
     var text: String = ""
 //    var document: CPDFDocument?
+    
+    static func supportedTypes() -> [String] {
+        return ["jpg", "cur", "bmp", "jpeg", "gif", "png", "tiff", "tif", "ico", "icns", "tga", "psd", "eps", "hdr", "jp2", "jpc", "pict", "sgi"]
+    }
 }

+ 20 - 0
PDF Office/PDF Master/KMClass/NewBatch/KMBatchManager/KMBatchManager.swift

@@ -0,0 +1,20 @@
+//
+//  KMBatchManager.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/2/17.
+//
+
+import Cocoa
+
+enum KMBatchManagerSate: String, CaseIterable {
+    case unknow
+    case processing
+}
+
+class KMBatchManager: NSObject {
+    public static let manager = KMBatchManager()
+    fileprivate(set) var state: KMBatchManagerSate = .unknow
+    
+    
+}

+ 189 - 0
PDF Office/PDF Master/KMClass/NewBatch/KMBatchWindowController.swift

@@ -0,0 +1,189 @@
+//
+//  KMBatchWindowController.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchWindowController: NSWindowController {
+
+    @IBOutlet weak var batchPrecessingView: KMBatchProcessingView!
+    @IBOutlet weak var batchCollectionView: KMBatchCollectionView!
+    @IBOutlet weak var batchHandleView: NSView!
+    @IBOutlet weak var settingView: KMBatchSettingView!
+    @IBOutlet weak var titleLabel: NSTextField!
+    
+    var batchData: [KMBatchProcessingTableViewModel]?
+    var inputType: DataNavigationViewButtonActionType? {
+        didSet {
+            var type: KMBatchCollectionViewType = .convertPDF
+            switch inputType {
+            case .BatchRemove:
+                type = .batchRemove
+            case .Background:
+                type = .background
+            case .Watermark:
+                type = .watermark
+            case .Compression:
+                type = .compress
+            case .Security:
+                type = .security
+            case.HeaderAndFooter:
+                type = .headerAndFooter
+            case .BatesCode:
+                type = .batesNumber
+            default:
+                type = .convertPDF
+            }
+            self.type = type
+        }
+    }
+    
+    var inputSubType: Any?
+    
+    var type: KMBatchCollectionViewType = .convertPDF {
+        didSet {
+            self.reloadData()
+        }
+    }
+    
+    deinit {
+        KMPrint("KMImageToPDFWindowController 释放")
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+
+        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+        self.window?.title = NSLocalizedString("Batch", comment: "")
+        self.setup()
+        self.reloadData()
+    }
+    
+    
+    func setup() {
+        self.window?.contentView?.wantsLayer = true
+        self.window?.contentView?.layer?.backgroundColor = NSColor.white.cgColor
+        
+        self.titleLabel.font = NSFont.SFProTextRegularFont(16.0)
+        self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        
+        self.batchCollectionView.delegate = self
+        self.batchPrecessingView.delegate = self
+        
+        self.settingView.type = .convertPDF
+    }
+    
+    func reloadData() {
+        self.batchPrecessingView.inputType = self.inputType
+        self.batchCollectionView.inputType = self.type
+        self.settingView.type = self.type
+        self.settingView.subType = self.inputSubType
+    }
+    
+    //MARK: 打开文件
+    static func openFiles(window: NSWindow) {
+        if KMBatchWindowController.isSampleController() {
+            KMPrint("存在相同文件")
+            if let controller: KMBatchWindowController = self.fetchSampleController() {
+                controller.inputType = .Batch
+                controller.showWindow(window)
+            }
+        } else {
+            KMBatchProcessingView.openfiles(window: window) { openPanel in
+                openPanel.title = "选择图片"
+                openPanel.canChooseDirectories = false
+                openPanel.canChooseFiles = true
+                openPanel.allowsMultipleSelection = true
+                openPanel.allowedFileTypes = KMOCRModel.supportedTypes()
+            } completion: { (panel ,data) in
+                if data.count != 0 {
+                    let batchWindowController: KMBatchWindowController = KMBatchWindowController.init(windowNibName: "KMBatchWindowController")
+                    batchWindowController.showWindow(window)
+                    batchWindowController.batchPrecessingView.inputData = data
+                    batchWindowController.inputType = .Batch
+                }
+            }
+        }
+    }
+    
+    //MARK: 打开文件
+    static func openFile(_ url: URL?, _ type: DataNavigationViewButtonActionType, _ subType: Any = "") {
+        if KMBatchWindowController.isSampleController() {
+            if let controller: KMBatchWindowController = self.fetchSampleController() {
+                KMPrint("存在相同文件")
+                controller.inputSubType = subType
+                controller.inputType = type
+                controller.showWindow(NSApp.mainWindow)
+            }
+        } else {
+            let batchWindowController: KMBatchWindowController = KMBatchWindowController.init(windowNibName: "KMBatchWindowController")
+            batchWindowController.showWindow(NSApp.mainWindow)
+            if url != nil {
+                batchWindowController.batchPrecessingView.inputData = [url!]
+            }
+            
+            batchWindowController.inputSubType = subType
+            batchWindowController.inputType = type
+        }
+    }
+    
+    static func isSampleController() -> Bool {
+        for window in NSApp.windows {
+            let controller = window.windowController
+            if controller is KMBatchWindowController {
+                return true
+            }
+        }
+        return false
+    }
+    
+    static func fetchSampleController() -> KMBatchWindowController? {
+        for window in NSApp.windows {
+            let controller = window.windowController
+            if controller is KMBatchWindowController {
+                return controller as! KMBatchWindowController
+            }
+        }
+        
+        return nil
+    }
+}
+
+extension KMBatchWindowController: KMBatchProcessingViewDelegate {
+    func reloadData(data: [KMBatchProcessingTableViewModel]) {
+        self.batchData = data
+        self.settingView.filesData = self.batchData
+    }
+}
+
+extension KMBatchWindowController: KMBatchCollectionViewDelegate {
+    func didSelect(index: IndexPath, data: KMBatchCollectionViewModel) {
+        KMPrint(data.type.rawValue)
+        let dataType: KMBatchCollectionViewType = data.type
+        self.settingView.type = dataType
+        
+        var type: DataNavigationViewButtonActionType = self.inputType ?? .ConvertPDF
+        switch dataType {
+        case .batchRemove:
+            type = .BatchRemove
+        case .background:
+            type = .Background
+        case .watermark:
+            type = .Watermark
+        case .compress:
+            type = .Compression
+        case .security:
+            type = .Security
+        case.headerAndFooter:
+            type = .HeaderAndFooter
+        case .batesNumber:
+            type = .BatesCode
+        default:
+            type = .ConvertPDF
+        }
+        self.batchPrecessingView.inputType = type
+    }
+}

+ 106 - 0
PDF Office/PDF Master/KMClass/NewBatch/KMBatchWindowController.xib

@@ -0,0 +1,106 @@
+<?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="KMBatchWindowController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="batchCollectionView" destination="NpS-mf-MjM" id="2Cn-9G-deg"/>
+                <outlet property="batchHandleView" destination="gb1-Aa-tbK" id="F8k-Ha-0pb"/>
+                <outlet property="batchPrecessingView" destination="Quv-tZ-EYd" id="mU2-SE-yX7"/>
+                <outlet property="settingView" destination="DNN-jM-3Lh" id="cmU-9D-7sd"/>
+                <outlet property="titleLabel" destination="xVD-EG-S9x" id="3fh-eH-TeT"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="1014" height="559"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <view key="contentView" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="1014" height="559"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="NpS-mf-MjM" customClass="KMBatchCollectionView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                        <rect key="frame" x="0.0" y="0.0" width="206" height="559"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="206" id="Ar4-ka-nDh"/>
+                        </constraints>
+                    </customView>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="gb1-Aa-tbK">
+                        <rect key="frame" x="754" y="0.0" width="260" height="559"/>
+                        <subviews>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="DNN-jM-3Lh" customClass="KMBatchSettingView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="260" height="559"/>
+                            </customView>
+                        </subviews>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="260" id="8VA-Va-3Ig"/>
+                            <constraint firstItem="DNN-jM-3Lh" firstAttribute="leading" secondItem="gb1-Aa-tbK" secondAttribute="leading" id="Tu9-I3-iga"/>
+                            <constraint firstAttribute="bottom" secondItem="DNN-jM-3Lh" secondAttribute="bottom" id="a21-dC-rM5"/>
+                            <constraint firstAttribute="trailing" secondItem="DNN-jM-3Lh" secondAttribute="trailing" id="fyz-Ts-N4p"/>
+                            <constraint firstItem="DNN-jM-3Lh" firstAttribute="top" secondItem="gb1-Aa-tbK" secondAttribute="top" id="g31-cF-azl"/>
+                        </constraints>
+                    </customView>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="gH5-eQ-PMm">
+                        <rect key="frame" x="206" y="0.0" width="548" height="559"/>
+                        <subviews>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="Quv-tZ-EYd" customClass="KMBatchProcessingView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="548" height="509"/>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="mFD-ha-HSU">
+                                <rect key="frame" x="0.0" y="509" width="548" height="50"/>
+                                <subviews>
+                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xVD-EG-S9x">
+                                        <rect key="frame" x="14" y="16" width="96" height="19"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Convert PDF" id="KrB-84-Qgx">
+                                            <font key="font" metaFont="system" size="16"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="xVD-EG-S9x" firstAttribute="leading" secondItem="mFD-ha-HSU" secondAttribute="leading" constant="16" id="Q85-QJ-QqY"/>
+                                    <constraint firstItem="xVD-EG-S9x" firstAttribute="centerY" secondItem="mFD-ha-HSU" secondAttribute="centerY" id="SEk-KJ-ItS"/>
+                                </constraints>
+                            </customView>
+                        </subviews>
+                        <constraints>
+                            <constraint firstAttribute="trailing" secondItem="Quv-tZ-EYd" secondAttribute="trailing" id="1hX-5W-4L5"/>
+                            <constraint firstAttribute="trailing" secondItem="mFD-ha-HSU" secondAttribute="trailing" id="CLD-8X-OO6"/>
+                            <constraint firstItem="Quv-tZ-EYd" firstAttribute="top" secondItem="mFD-ha-HSU" secondAttribute="bottom" id="Mge-H9-gwb"/>
+                            <constraint firstItem="Quv-tZ-EYd" firstAttribute="leading" secondItem="gH5-eQ-PMm" secondAttribute="leading" id="QIT-5k-dc3"/>
+                            <constraint firstAttribute="bottom" secondItem="Quv-tZ-EYd" secondAttribute="bottom" id="egJ-td-GWL"/>
+                            <constraint firstItem="mFD-ha-HSU" firstAttribute="top" secondItem="gH5-eQ-PMm" secondAttribute="top" id="gfg-6Z-Pcg"/>
+                            <constraint firstItem="mFD-ha-HSU" firstAttribute="leading" secondItem="gH5-eQ-PMm" secondAttribute="leading" id="qD8-cm-0x8"/>
+                            <constraint firstItem="Quv-tZ-EYd" firstAttribute="top" secondItem="gH5-eQ-PMm" secondAttribute="top" constant="50" id="rhu-u5-ci5"/>
+                        </constraints>
+                    </customView>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="bottom" secondItem="gH5-eQ-PMm" secondAttribute="bottom" id="Ba1-wk-2L5"/>
+                    <constraint firstItem="gb1-Aa-tbK" firstAttribute="leading" secondItem="gH5-eQ-PMm" secondAttribute="trailing" id="Cyf-J5-8vZ"/>
+                    <constraint firstAttribute="bottom" secondItem="gb1-Aa-tbK" secondAttribute="bottom" id="Eds-JU-XNZ"/>
+                    <constraint firstItem="gb1-Aa-tbK" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="Nn4-Uu-Zqt"/>
+                    <constraint firstAttribute="trailing" secondItem="gb1-Aa-tbK" secondAttribute="trailing" id="UL3-OH-rU8"/>
+                    <constraint firstAttribute="bottom" secondItem="NpS-mf-MjM" secondAttribute="bottom" id="V7t-Vc-2At"/>
+                    <constraint firstItem="NpS-mf-MjM" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="dGe-a2-t3N"/>
+                    <constraint firstItem="gH5-eQ-PMm" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="jir-E1-0Mc"/>
+                    <constraint firstItem="NpS-mf-MjM" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="oI7-Qy-gR2"/>
+                    <constraint firstItem="gH5-eQ-PMm" firstAttribute="leading" secondItem="NpS-mf-MjM" secondAttribute="trailing" id="v7q-oF-GUx"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="240" y="281.5"/>
+        </window>
+    </objects>
+</document>

+ 6 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_down_s_norm_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "ic.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 74 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_down_s_norm_on.imageset/ic.pdf

@@ -0,0 +1,74 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.000000 -0.073212 cm
+0.380392 0.392157 0.411765 scn
+5.030269 1.883876 m
+1.060660 5.853485 l
+0.000000 4.792825 l
+4.499939 0.292886 l
+4.792832 -0.000007 5.267706 -0.000007 5.560599 0.292886 c
+10.060537 4.792825 l
+8.999878 5.853485 l
+5.030269 1.883876 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  328
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 10.060547 5.780273 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000418 00000 n
+0000000440 00000 n
+0000000612 00000 n
+0000000686 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+745
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_right_s_norm_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "ic.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 74 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_default_right_s_norm_on.imageset/ic.pdf

@@ -0,0 +1,74 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+0.000000 1.000000 -1.000000 0.000000 10.060623 -0.000000 cm
+0.380392 0.392157 0.411765 scn
+5.030315 6.090969 m
+1.060660 10.060623 l
+0.000000 8.999963 l
+4.499985 4.499978 l
+4.792878 4.207085 5.267752 4.207085 5.560645 4.499978 c
+10.060629 8.999963 l
+8.999969 10.060623 l
+5.030315 6.090969 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  329
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 5.780273 10.060623 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000419 00000 n
+0000000441 00000 n
+0000000613 00000 n
+0000000687 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+746
+%%EOF

+ 74 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_down_s_norm_on.imageset/Color=gray, Style=down, Size=s, State=norm, Disabled=false.pdf

@@ -0,0 +1,74 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.969727 2.551849 cm
+0.580392 0.596078 0.611765 scn
+5.030269 1.883876 m
+1.060660 5.853485 l
+0.000000 4.792825 l
+4.499939 0.292886 l
+4.792832 -0.000007 5.267706 -0.000007 5.560599 0.292886 c
+10.060537 4.792825 l
+8.999878 5.853485 l
+5.030269 1.883876 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  327
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 12.000000 12.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000417 00000 n
+0000000439 00000 n
+0000000612 00000 n
+0000000686 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+745
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_down_s_norm_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Color=gray, Style=down, Size=s, State=norm, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 74 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_right_s_norm_on.imageset/Color=gray, Style=right, Size=s, State=act, Disabled=false.pdf

@@ -0,0 +1,74 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+0.000000 1.000000 -1.000000 0.000000 13.655365 0.969696 cm
+0.486275 0.501961 0.521569 scn
+5.030315 6.090984 m
+1.060660 10.060638 l
+0.000000 8.999978 l
+4.499985 4.499993 l
+4.792878 4.207100 5.267752 4.207100 5.560645 4.499993 c
+10.060629 8.999978 l
+8.999969 10.060638 l
+5.030315 6.090984 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  328
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 12.000000 12.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000418 00000 n
+0000000440 00000 n
+0000000613 00000 n
+0000000687 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+746
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_right_s_norm_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Color=gray, Style=right, Size=s, State=act, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 74 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_up_s_norm_on.imageset/Color=gray, Style=up, Size=s, State=norm, Disabled=false.pdf

@@ -0,0 +1,74 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+-1.000000 0.000000 -0.000000 -1.000000 11.030274 9.448181 cm
+0.580392 0.596078 0.611765 scn
+5.030269 1.883876 m
+1.060660 5.853485 l
+0.000000 4.792825 l
+4.499939 0.292886 l
+4.792832 -0.000007 5.267706 -0.000007 5.560599 0.292886 c
+10.060537 4.792825 l
+8.999878 5.853485 l
+5.030269 1.883876 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  330
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 12.000000 12.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000420 00000 n
+0000000442 00000 n
+0000000615 00000 n
+0000000689 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+748
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_arrow_gray_up_s_norm_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Color=gray, Style=up, Size=s, State=norm, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_hov_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=hov, Disabled=false-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 143 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_hov_on.imageset/State=hov, Disabled=false-1.pdf

@@ -0,0 +1,143 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+1.000000 1.000000 1.000000 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+1.000000 13.000000 m
+1.000000 14.104569 1.895431 15.000000 3.000000 15.000000 c
+13.000000 15.000000 l
+14.104569 15.000000 15.000000 14.104569 15.000000 13.000000 c
+15.000000 3.000000 l
+15.000000 1.895431 14.104569 1.000000 13.000000 1.000000 c
+3.000000 1.000000 l
+1.895430 1.000000 1.000000 1.895431 1.000000 3.000000 c
+1.000000 13.000000 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.407843 0.674510 0.972549 scn
+2.000000 13.000000 m
+12.000000 13.000000 l
+12.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 13.000000 l
+h
+13.000000 12.000000 m
+13.000000 2.000000 l
+15.000000 2.000000 l
+15.000000 12.000000 l
+13.000000 12.000000 l
+h
+12.000000 1.000000 m
+2.000000 1.000000 l
+2.000000 -1.000000 l
+12.000000 -1.000000 l
+12.000000 1.000000 l
+h
+1.000000 2.000000 m
+1.000000 12.000000 l
+-1.000000 12.000000 l
+-1.000000 2.000000 l
+1.000000 2.000000 l
+h
+2.000000 1.000000 m
+1.447715 1.000000 1.000000 1.447715 1.000000 2.000000 c
+-1.000000 2.000000 l
+-1.000000 0.343146 0.343146 -1.000000 2.000000 -1.000000 c
+2.000000 1.000000 l
+h
+13.000000 2.000000 m
+13.000000 1.447716 12.552285 1.000000 12.000000 1.000000 c
+12.000000 -1.000000 l
+13.656854 -1.000000 15.000000 0.343145 15.000000 2.000000 c
+13.000000 2.000000 l
+h
+12.000000 13.000000 m
+12.552284 13.000000 13.000000 12.552284 13.000000 12.000000 c
+15.000000 12.000000 l
+15.000000 13.656854 13.656855 15.000000 12.000000 15.000000 c
+12.000000 13.000000 l
+h
+2.000000 15.000000 m
+0.343146 15.000000 -1.000000 13.656855 -1.000000 12.000000 c
+1.000000 12.000000 l
+1.000000 12.552284 1.447715 13.000000 2.000000 13.000000 c
+2.000000 15.000000 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2089
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002179 00000 n
+0000002202 00000 n
+0000002375 00000 n
+0000002449 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2508
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_off.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=multisel, Disabled=true.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 155 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_off.imageset/State=multisel, Disabled=true.pdf

@@ -0,0 +1,155 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.929412 0.933333 0.941176 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+q
+1.000000 13.000000 m
+1.000000 14.104569 1.895431 15.000000 3.000000 15.000000 c
+13.000000 15.000000 l
+14.104569 15.000000 15.000000 14.104569 15.000000 13.000000 c
+15.000000 3.000000 l
+15.000000 1.895431 14.104569 1.000000 13.000000 1.000000 c
+3.000000 1.000000 l
+1.895430 1.000000 1.000000 1.895431 1.000000 3.000000 c
+1.000000 13.000000 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+2.000000 13.000000 m
+12.000000 13.000000 l
+12.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 13.000000 l
+h
+13.000000 12.000000 m
+13.000000 2.000000 l
+15.000000 2.000000 l
+15.000000 12.000000 l
+13.000000 12.000000 l
+h
+12.000000 1.000000 m
+2.000000 1.000000 l
+2.000000 -1.000000 l
+12.000000 -1.000000 l
+12.000000 1.000000 l
+h
+1.000000 2.000000 m
+1.000000 12.000000 l
+-1.000000 12.000000 l
+-1.000000 2.000000 l
+1.000000 2.000000 l
+h
+2.000000 1.000000 m
+1.447715 1.000000 1.000000 1.447715 1.000000 2.000000 c
+-1.000000 2.000000 l
+-1.000000 0.343146 0.343146 -1.000000 2.000000 -1.000000 c
+2.000000 1.000000 l
+h
+13.000000 2.000000 m
+13.000000 1.447716 12.552285 1.000000 12.000000 1.000000 c
+12.000000 -1.000000 l
+13.656854 -1.000000 15.000000 0.343145 15.000000 2.000000 c
+13.000000 2.000000 l
+h
+12.000000 13.000000 m
+12.552284 13.000000 13.000000 12.552284 13.000000 12.000000 c
+15.000000 12.000000 l
+15.000000 13.656854 13.656855 15.000000 12.000000 15.000000 c
+12.000000 13.000000 l
+h
+2.000000 15.000000 m
+0.343146 15.000000 -1.000000 13.656855 -1.000000 12.000000 c
+1.000000 12.000000 l
+1.000000 12.552284 1.447715 13.000000 2.000000 13.000000 c
+2.000000 15.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 6.500000 cm
+0.694118 0.701961 0.721569 scn
+0.000000 0.750000 m
+8.000000 0.750000 l
+8.000000 2.250000 l
+0.000000 2.250000 l
+0.000000 0.750000 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2288
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002378 00000 n
+0000002401 00000 n
+0000002574 00000 n
+0000002648 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2707
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=multisel, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 87 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_multisel_on.imageset/State=multisel, Disabled=false.pdf

@@ -0,0 +1,87 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.090196 0.439216 0.956863 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 6.500000 cm
+1.000000 1.000000 1.000000 scn
+0.000000 0.750000 m
+8.000000 0.750000 l
+8.000000 2.250000 l
+0.000000 2.250000 l
+0.000000 0.750000 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  667
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000757 00000 n
+0000000779 00000 n
+0000000952 00000 n
+0000001026 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1085
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_off.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=sel, Disabled=true-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 167 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_off.imageset/State=sel, Disabled=true-1.pdf

@@ -0,0 +1,167 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.929412 0.933333 0.941176 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+q
+1.000000 13.000000 m
+1.000000 14.104569 1.895431 15.000000 3.000000 15.000000 c
+13.000000 15.000000 l
+14.104569 15.000000 15.000000 14.104569 15.000000 13.000000 c
+15.000000 3.000000 l
+15.000000 1.895431 14.104569 1.000000 13.000000 1.000000 c
+3.000000 1.000000 l
+1.895430 1.000000 1.000000 1.895431 1.000000 3.000000 c
+1.000000 13.000000 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+2.000000 13.000000 m
+12.000000 13.000000 l
+12.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 13.000000 l
+h
+13.000000 12.000000 m
+13.000000 2.000000 l
+15.000000 2.000000 l
+15.000000 12.000000 l
+13.000000 12.000000 l
+h
+12.000000 1.000000 m
+2.000000 1.000000 l
+2.000000 -1.000000 l
+12.000000 -1.000000 l
+12.000000 1.000000 l
+h
+1.000000 2.000000 m
+1.000000 12.000000 l
+-1.000000 12.000000 l
+-1.000000 2.000000 l
+1.000000 2.000000 l
+h
+2.000000 1.000000 m
+1.447715 1.000000 1.000000 1.447715 1.000000 2.000000 c
+-1.000000 2.000000 l
+-1.000000 0.343146 0.343146 -1.000000 2.000000 -1.000000 c
+2.000000 1.000000 l
+h
+13.000000 2.000000 m
+13.000000 1.447716 12.552285 1.000000 12.000000 1.000000 c
+12.000000 -1.000000 l
+13.656854 -1.000000 15.000000 0.343145 15.000000 2.000000 c
+13.000000 2.000000 l
+h
+12.000000 13.000000 m
+12.552284 13.000000 13.000000 12.552284 13.000000 12.000000 c
+15.000000 12.000000 l
+15.000000 13.656854 13.656855 15.000000 12.000000 15.000000 c
+12.000000 13.000000 l
+h
+2.000000 15.000000 m
+0.343146 15.000000 -1.000000 13.656855 -1.000000 12.000000 c
+1.000000 12.000000 l
+1.000000 12.552284 1.447715 13.000000 2.000000 13.000000 c
+2.000000 15.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 3.768463 cm
+0.694118 0.701961 0.721569 scn
+3.200000 1.231537 m
+2.687044 0.684384 l
+2.839606 0.541357 3.044955 0.468521 3.253544 0.483450 c
+3.462132 0.498380 3.655014 0.599719 3.785652 0.763016 c
+3.200000 1.231537 l
+h
+-0.512956 3.684384 m
+2.687044 0.684384 l
+3.712956 1.778690 l
+0.512956 4.778690 l
+-0.512956 3.684384 l
+h
+3.785652 0.763016 m
+8.585651 6.763016 l
+7.414349 7.700058 l
+2.614348 1.700058 l
+3.785652 0.763016 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2566
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002656 00000 n
+0000002679 00000 n
+0000002852 00000 n
+0000002926 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2985
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=sel, Disabled=false-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 99 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_sel_on.imageset/State=sel, Disabled=false-1.pdf

@@ -0,0 +1,99 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.090196 0.439216 0.956863 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 3.768463 cm
+1.000000 1.000000 1.000000 scn
+3.200000 1.231537 m
+2.687044 0.684384 l
+2.839606 0.541357 3.044955 0.468521 3.253544 0.483450 c
+3.462132 0.498380 3.655014 0.599719 3.785652 0.763016 c
+3.200000 1.231537 l
+h
+-0.512956 3.684384 m
+2.687044 0.684384 l
+3.712956 1.778690 l
+0.512956 4.778690 l
+-0.512956 3.684384 l
+h
+3.785652 0.763016 m
+8.585651 6.763016 l
+7.414349 7.700058 l
+2.614348 1.700058 l
+3.785652 0.763016 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  945
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001035 00000 n
+0000001057 00000 n
+0000001230 00000 n
+0000001304 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1363
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_off.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=unsel, Disabled=true-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 143 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_off.imageset/State=unsel, Disabled=true-1.pdf

@@ -0,0 +1,143 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.929412 0.933333 0.941176 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+q
+1.000000 13.000000 m
+1.000000 14.104569 1.895431 15.000000 3.000000 15.000000 c
+13.000000 15.000000 l
+14.104569 15.000000 15.000000 14.104569 15.000000 13.000000 c
+15.000000 3.000000 l
+15.000000 1.895431 14.104569 1.000000 13.000000 1.000000 c
+3.000000 1.000000 l
+1.895430 1.000000 1.000000 1.895431 1.000000 3.000000 c
+1.000000 13.000000 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+2.000000 13.000000 m
+12.000000 13.000000 l
+12.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 13.000000 l
+h
+13.000000 12.000000 m
+13.000000 2.000000 l
+15.000000 2.000000 l
+15.000000 12.000000 l
+13.000000 12.000000 l
+h
+12.000000 1.000000 m
+2.000000 1.000000 l
+2.000000 -1.000000 l
+12.000000 -1.000000 l
+12.000000 1.000000 l
+h
+1.000000 2.000000 m
+1.000000 12.000000 l
+-1.000000 12.000000 l
+-1.000000 2.000000 l
+1.000000 2.000000 l
+h
+2.000000 1.000000 m
+1.447715 1.000000 1.000000 1.447715 1.000000 2.000000 c
+-1.000000 2.000000 l
+-1.000000 0.343146 0.343146 -1.000000 2.000000 -1.000000 c
+2.000000 1.000000 l
+h
+13.000000 2.000000 m
+13.000000 1.447716 12.552285 1.000000 12.000000 1.000000 c
+12.000000 -1.000000 l
+13.656854 -1.000000 15.000000 0.343145 15.000000 2.000000 c
+13.000000 2.000000 l
+h
+12.000000 13.000000 m
+12.552284 13.000000 13.000000 12.552284 13.000000 12.000000 c
+15.000000 12.000000 l
+15.000000 13.656854 13.656855 15.000000 12.000000 15.000000 c
+12.000000 13.000000 l
+h
+2.000000 15.000000 m
+0.343146 15.000000 -1.000000 13.656855 -1.000000 12.000000 c
+1.000000 12.000000 l
+1.000000 12.552284 1.447715 13.000000 2.000000 13.000000 c
+2.000000 15.000000 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2089
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002179 00000 n
+0000002202 00000 n
+0000002375 00000 n
+0000002449 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2508
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=unsel, Disabled=false-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 143 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_checkbox_unsel_on.imageset/State=unsel, Disabled=false-1.pdf

@@ -0,0 +1,143 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+1.000000 1.000000 1.000000 scn
+0.000000 12.000000 m
+0.000000 13.104569 0.895431 14.000000 2.000000 14.000000 c
+12.000000 14.000000 l
+13.104569 14.000000 14.000000 13.104569 14.000000 12.000000 c
+14.000000 2.000000 l
+14.000000 0.895431 13.104569 0.000000 12.000000 0.000000 c
+2.000000 0.000000 l
+0.895430 0.000000 0.000000 0.895431 0.000000 2.000000 c
+0.000000 12.000000 l
+h
+f
+n
+Q
+1.000000 13.000000 m
+1.000000 14.104569 1.895431 15.000000 3.000000 15.000000 c
+13.000000 15.000000 l
+14.104569 15.000000 15.000000 14.104569 15.000000 13.000000 c
+15.000000 3.000000 l
+15.000000 1.895431 14.104569 1.000000 13.000000 1.000000 c
+3.000000 1.000000 l
+1.895430 1.000000 1.000000 1.895431 1.000000 3.000000 c
+1.000000 13.000000 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+2.000000 13.000000 m
+12.000000 13.000000 l
+12.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 13.000000 l
+h
+13.000000 12.000000 m
+13.000000 2.000000 l
+15.000000 2.000000 l
+15.000000 12.000000 l
+13.000000 12.000000 l
+h
+12.000000 1.000000 m
+2.000000 1.000000 l
+2.000000 -1.000000 l
+12.000000 -1.000000 l
+12.000000 1.000000 l
+h
+1.000000 2.000000 m
+1.000000 12.000000 l
+-1.000000 12.000000 l
+-1.000000 2.000000 l
+1.000000 2.000000 l
+h
+2.000000 1.000000 m
+1.447715 1.000000 1.000000 1.447715 1.000000 2.000000 c
+-1.000000 2.000000 l
+-1.000000 0.343146 0.343146 -1.000000 2.000000 -1.000000 c
+2.000000 1.000000 l
+h
+13.000000 2.000000 m
+13.000000 1.447716 12.552285 1.000000 12.000000 1.000000 c
+12.000000 -1.000000 l
+13.656854 -1.000000 15.000000 0.343145 15.000000 2.000000 c
+13.000000 2.000000 l
+h
+12.000000 13.000000 m
+12.552284 13.000000 13.000000 12.552284 13.000000 12.000000 c
+15.000000 12.000000 l
+15.000000 13.656854 13.656855 15.000000 12.000000 15.000000 c
+12.000000 13.000000 l
+h
+2.000000 15.000000 m
+0.343146 15.000000 -1.000000 13.656855 -1.000000 12.000000 c
+1.000000 12.000000 l
+1.000000 12.552284 1.447715 13.000000 2.000000 13.000000 c
+2.000000 15.000000 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2089
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002179 00000 n
+0000002202 00000 n
+0000002375 00000 n
+0000002449 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2508
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_hov_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=hov, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 111 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_hov_on.imageset/State=hov, Disabled=false.pdf

@@ -0,0 +1,111 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+1.000000 1.000000 1.000000 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+15.000000 8.000000 m
+15.000000 4.134007 11.865993 1.000000 8.000000 1.000000 c
+4.134007 1.000000 1.000000 4.134007 1.000000 8.000000 c
+1.000000 11.865993 4.134007 15.000000 8.000000 15.000000 c
+11.865993 15.000000 15.000000 11.865993 15.000000 8.000000 c
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.407843 0.674510 0.972549 scn
+13.000000 7.000000 m
+13.000000 3.686292 10.313708 1.000000 7.000000 1.000000 c
+7.000000 -1.000000 l
+11.418278 -1.000000 15.000000 2.581722 15.000000 7.000000 c
+13.000000 7.000000 l
+h
+7.000000 1.000000 m
+3.686291 1.000000 1.000000 3.686292 1.000000 7.000000 c
+-1.000000 7.000000 l
+-1.000000 2.581722 2.581722 -1.000000 7.000000 -1.000000 c
+7.000000 1.000000 l
+h
+1.000000 7.000000 m
+1.000000 10.313708 3.686291 13.000000 7.000000 13.000000 c
+7.000000 15.000000 l
+2.581722 15.000000 -1.000000 11.418278 -1.000000 7.000000 c
+1.000000 7.000000 l
+h
+7.000000 13.000000 m
+10.313708 13.000000 13.000000 10.313708 13.000000 7.000000 c
+15.000000 7.000000 l
+15.000000 11.418278 11.418278 15.000000 7.000000 15.000000 c
+7.000000 13.000000 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1475
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001565 00000 n
+0000001588 00000 n
+0000001761 00000 n
+0000001835 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1894
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_off.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=sel, Disabled=true.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 123 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_off.imageset/State=sel, Disabled=true.pdf

@@ -0,0 +1,123 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.929412 0.933333 0.941176 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+15.000000 8.000000 m
+15.000000 4.134007 11.865993 1.000000 8.000000 1.000000 c
+4.134007 1.000000 1.000000 4.134007 1.000000 8.000000 c
+1.000000 11.865993 4.134007 15.000000 8.000000 15.000000 c
+11.865993 15.000000 15.000000 11.865993 15.000000 8.000000 c
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+13.000000 7.000000 m
+13.000000 3.686292 10.313708 1.000000 7.000000 1.000000 c
+7.000000 -1.000000 l
+11.418278 -1.000000 15.000000 2.581722 15.000000 7.000000 c
+13.000000 7.000000 l
+h
+7.000000 1.000000 m
+3.686291 1.000000 1.000000 3.686292 1.000000 7.000000 c
+-1.000000 7.000000 l
+-1.000000 2.581722 2.581722 -1.000000 7.000000 -1.000000 c
+7.000000 1.000000 l
+h
+1.000000 7.000000 m
+1.000000 10.313708 3.686291 13.000000 7.000000 13.000000 c
+7.000000 15.000000 l
+2.581722 15.000000 -1.000000 11.418278 -1.000000 7.000000 c
+1.000000 7.000000 l
+h
+7.000000 13.000000 m
+10.313708 13.000000 13.000000 10.313708 13.000000 7.000000 c
+15.000000 7.000000 l
+15.000000 11.418278 11.418278 15.000000 7.000000 15.000000 c
+7.000000 13.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 4.000000 cm
+0.694118 0.701961 0.721569 scn
+8.000000 4.000000 m
+8.000000 1.790861 6.209139 0.000000 4.000000 0.000000 c
+1.790861 0.000000 0.000000 1.790861 0.000000 4.000000 c
+0.000000 6.209139 1.790861 8.000000 4.000000 8.000000 c
+6.209139 8.000000 8.000000 6.209139 8.000000 4.000000 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1818
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001908 00000 n
+0000001931 00000 n
+0000002104 00000 n
+0000002178 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2237
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=sel, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 123 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_sel_on.imageset/State=sel, Disabled=false.pdf

@@ -0,0 +1,123 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+1.000000 1.000000 1.000000 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+15.000000 8.000000 m
+15.000000 4.134007 11.865993 1.000000 8.000000 1.000000 c
+4.134007 1.000000 1.000000 4.134007 1.000000 8.000000 c
+1.000000 11.865993 4.134007 15.000000 8.000000 15.000000 c
+11.865993 15.000000 15.000000 11.865993 15.000000 8.000000 c
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.090196 0.439216 0.956863 scn
+13.000000 7.000000 m
+13.000000 3.686292 10.313708 1.000000 7.000000 1.000000 c
+7.000000 -1.000000 l
+11.418278 -1.000000 15.000000 2.581722 15.000000 7.000000 c
+13.000000 7.000000 l
+h
+7.000000 1.000000 m
+3.686291 1.000000 1.000000 3.686292 1.000000 7.000000 c
+-1.000000 7.000000 l
+-1.000000 2.581722 2.581722 -1.000000 7.000000 -1.000000 c
+7.000000 1.000000 l
+h
+1.000000 7.000000 m
+1.000000 10.313708 3.686291 13.000000 7.000000 13.000000 c
+7.000000 15.000000 l
+2.581722 15.000000 -1.000000 11.418278 -1.000000 7.000000 c
+1.000000 7.000000 l
+h
+7.000000 13.000000 m
+10.313708 13.000000 13.000000 10.313708 13.000000 7.000000 c
+15.000000 7.000000 l
+15.000000 11.418278 11.418278 15.000000 7.000000 15.000000 c
+7.000000 13.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 4.000000 cm
+0.090196 0.439216 0.956863 scn
+8.000000 4.000000 m
+8.000000 1.790861 6.209139 0.000000 4.000000 0.000000 c
+1.790861 0.000000 0.000000 1.790861 0.000000 4.000000 c
+0.000000 6.209139 1.790861 8.000000 4.000000 8.000000 c
+6.209139 8.000000 8.000000 6.209139 8.000000 4.000000 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1818
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001908 00000 n
+0000001931 00000 n
+0000002104 00000 n
+0000002178 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2237
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_off.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=unsel, Disabled=true.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 111 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_off.imageset/State=unsel, Disabled=true.pdf

@@ -0,0 +1,111 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.929412 0.933333 0.941176 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+15.000000 8.000000 m
+15.000000 4.134007 11.865993 1.000000 8.000000 1.000000 c
+4.134007 1.000000 1.000000 4.134007 1.000000 8.000000 c
+1.000000 11.865993 4.134007 15.000000 8.000000 15.000000 c
+11.865993 15.000000 15.000000 11.865993 15.000000 8.000000 c
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+13.000000 7.000000 m
+13.000000 3.686292 10.313708 1.000000 7.000000 1.000000 c
+7.000000 -1.000000 l
+11.418278 -1.000000 15.000000 2.581722 15.000000 7.000000 c
+13.000000 7.000000 l
+h
+7.000000 1.000000 m
+3.686291 1.000000 1.000000 3.686292 1.000000 7.000000 c
+-1.000000 7.000000 l
+-1.000000 2.581722 2.581722 -1.000000 7.000000 -1.000000 c
+7.000000 1.000000 l
+h
+1.000000 7.000000 m
+1.000000 10.313708 3.686291 13.000000 7.000000 13.000000 c
+7.000000 15.000000 l
+2.581722 15.000000 -1.000000 11.418278 -1.000000 7.000000 c
+1.000000 7.000000 l
+h
+7.000000 13.000000 m
+10.313708 13.000000 13.000000 10.313708 13.000000 7.000000 c
+15.000000 7.000000 l
+15.000000 11.418278 11.418278 15.000000 7.000000 15.000000 c
+7.000000 13.000000 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1475
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001565 00000 n
+0000001588 00000 n
+0000001761 00000 n
+0000001835 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1894
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_on.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "State=unsel, Disabled=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 111 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/btn_radio_unsel_on.imageset/State=unsel, Disabled=false.pdf

@@ -0,0 +1,111 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+1.000000 1.000000 1.000000 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+15.000000 8.000000 m
+15.000000 4.134007 11.865993 1.000000 8.000000 1.000000 c
+4.134007 1.000000 1.000000 4.134007 1.000000 8.000000 c
+1.000000 11.865993 4.134007 15.000000 8.000000 15.000000 c
+11.865993 15.000000 15.000000 11.865993 15.000000 8.000000 c
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.874510 0.882353 0.898039 scn
+13.000000 7.000000 m
+13.000000 3.686292 10.313708 1.000000 7.000000 1.000000 c
+7.000000 -1.000000 l
+11.418278 -1.000000 15.000000 2.581722 15.000000 7.000000 c
+13.000000 7.000000 l
+h
+7.000000 1.000000 m
+3.686291 1.000000 1.000000 3.686292 1.000000 7.000000 c
+-1.000000 7.000000 l
+-1.000000 2.581722 2.581722 -1.000000 7.000000 -1.000000 c
+7.000000 1.000000 l
+h
+1.000000 7.000000 m
+1.000000 10.313708 3.686291 13.000000 7.000000 13.000000 c
+7.000000 15.000000 l
+2.581722 15.000000 -1.000000 11.418278 -1.000000 7.000000 c
+1.000000 7.000000 l
+h
+7.000000 13.000000 m
+10.313708 13.000000 13.000000 10.313708 13.000000 7.000000 c
+15.000000 7.000000 l
+15.000000 11.418278 11.418278 15.000000 7.000000 15.000000 c
+7.000000 13.000000 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1475
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001565 00000 n
+0000001588 00000 n
+0000001761 00000 n
+0000001835 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1894
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-4.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 184 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_false.imageset/Select=false-4.pdf

@@ -0,0 +1,184 @@
+%PDF-1.7
+
+1 0 obj
+  << /Type /XObject
+     /Length 2 0 R
+     /Group << /Type /Group
+               /S /Transparency
+            >>
+     /Subtype /Form
+     /Resources << >>
+     /BBox [ 0.000000 0.000000 20.000000 20.000000 ]
+  >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 -0.678223 -0.802765 cm
+0.380392 0.392157 0.411765 scn
+1.414213 8.485291 m
+12.727921 19.799000 l
+11.313708 21.213213 l
+0.000000 9.899505 l
+1.414213 8.485291 l
+h
+4.242582 5.656861 m
+15.556291 16.970570 l
+14.142077 18.384783 l
+2.828369 7.071074 l
+4.242582 5.656861 l
+h
+18.384661 14.142139 m
+7.070951 2.828430 l
+5.656738 4.242645 l
+16.970446 15.556353 l
+18.384661 14.142139 l
+h
+9.899321 0.000000 m
+21.213030 11.313709 l
+19.798815 12.727922 l
+8.485107 1.414215 l
+9.899321 0.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+2 0 obj
+  554
+endobj
+
+3 0 obj
+  << /Type /XObject
+     /Length 4 0 R
+     /Group << /Type /Group
+               /S /Transparency
+            >>
+     /Subtype /Form
+     /Resources << >>
+     /BBox [ 0.000000 0.000000 20.000000 20.000000 ]
+  >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 3.000000 cm
+0.380392 0.392157 0.411765 scn
+0.000000 14.000000 m
+6.333253 14.000000 l
+10.000000 9.800000 l
+10.000000 0.000000 l
+0.000000 0.000000 l
+0.000000 14.000000 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+4 0 obj
+  252
+endobj
+
+5 0 obj
+  << /XObject << /X1 1 0 R >>
+     /ExtGState << /E1 << /SMask << /Type /Mask
+                                    /G 3 0 R
+                                    /S /Alpha
+                                 >>
+                          /Type /ExtGState
+                       >> >>
+  >>
+endobj
+
+6 0 obj
+  << /Length 7 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.380392 0.392157 0.411765 scn
+2.000000 2.000000 m
+14.000000 2.000000 l
+14.000000 13.251528 l
+9.867070 18.000000 l
+2.000000 18.000000 l
+2.000000 2.000000 l
+h
+2.000000 20.000000 m
+0.895431 20.000000 0.000000 19.104568 0.000000 18.000000 c
+0.000000 2.000000 l
+0.000000 0.895430 0.895431 0.000000 2.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 13.251528 l
+16.000000 13.734164 15.825472 14.200521 15.508610 14.564576 c
+11.375679 19.313049 l
+10.995841 19.749458 10.445629 20.000000 9.867069 20.000000 c
+2.000000 20.000000 l
+h
+f*
+n
+Q
+q
+/E1 gs
+/X1 Do
+Q
+
+endstream
+endobj
+
+7 0 obj
+  698
+endobj
+
+8 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 5 0 R
+     /Contents 6 0 R
+     /Parent 9 0 R
+  >>
+endobj
+
+9 0 obj
+  << /Kids [ 8 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+10 0 obj
+  << /Pages 9 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 11
+0000000000 65535 f
+0000000010 00000 n
+0000000812 00000 n
+0000000834 00000 n
+0000001334 00000 n
+0000001356 00000 n
+0000001654 00000 n
+0000002408 00000 n
+0000002430 00000 n
+0000002603 00000 n
+0000002677 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 10 0 R
+   /Size 11
+>>
+startxref
+2737
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-4.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 184 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_background_true.imageset/Select=true-4.pdf

@@ -0,0 +1,184 @@
+%PDF-1.7
+
+1 0 obj
+  << /Type /XObject
+     /Length 2 0 R
+     /Group << /Type /Group
+               /S /Transparency
+            >>
+     /Subtype /Form
+     /Resources << >>
+     /BBox [ 0.000000 0.000000 20.000000 20.000000 ]
+  >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 -0.678223 -0.802765 cm
+0.090196 0.439216 0.956863 scn
+1.414213 8.485291 m
+12.727921 19.799000 l
+11.313708 21.213213 l
+0.000000 9.899505 l
+1.414213 8.485291 l
+h
+4.242582 5.656861 m
+15.556291 16.970570 l
+14.142077 18.384783 l
+2.828369 7.071074 l
+4.242582 5.656861 l
+h
+18.384661 14.142139 m
+7.070951 2.828430 l
+5.656738 4.242645 l
+16.970446 15.556353 l
+18.384661 14.142139 l
+h
+9.899321 0.000000 m
+21.213030 11.313709 l
+19.798815 12.727922 l
+8.485107 1.414215 l
+9.899321 0.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+2 0 obj
+  554
+endobj
+
+3 0 obj
+  << /Type /XObject
+     /Length 4 0 R
+     /Group << /Type /Group
+               /S /Transparency
+            >>
+     /Subtype /Form
+     /Resources << >>
+     /BBox [ 0.000000 0.000000 20.000000 20.000000 ]
+  >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 3.000000 cm
+0.380392 0.392157 0.411765 scn
+0.000000 14.000000 m
+6.333253 14.000000 l
+10.000000 9.800000 l
+10.000000 0.000000 l
+0.000000 0.000000 l
+0.000000 14.000000 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+4 0 obj
+  252
+endobj
+
+5 0 obj
+  << /XObject << /X1 1 0 R >>
+     /ExtGState << /E1 << /SMask << /Type /Mask
+                                    /G 3 0 R
+                                    /S /Alpha
+                                 >>
+                          /Type /ExtGState
+                       >> >>
+  >>
+endobj
+
+6 0 obj
+  << /Length 7 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.090196 0.439216 0.956863 scn
+2.000000 2.000000 m
+14.000000 2.000000 l
+14.000000 13.251528 l
+9.867070 18.000000 l
+2.000000 18.000000 l
+2.000000 2.000000 l
+h
+2.000000 20.000000 m
+0.895431 20.000000 0.000000 19.104568 0.000000 18.000000 c
+0.000000 2.000000 l
+0.000000 0.895430 0.895431 0.000000 2.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 13.251528 l
+16.000000 13.734164 15.825472 14.200521 15.508610 14.564576 c
+11.375679 19.313049 l
+10.995841 19.749458 10.445629 20.000000 9.867069 20.000000 c
+2.000000 20.000000 l
+h
+f*
+n
+Q
+q
+/E1 gs
+/X1 Do
+Q
+
+endstream
+endobj
+
+7 0 obj
+  698
+endobj
+
+8 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 5 0 R
+     /Contents 6 0 R
+     /Parent 9 0 R
+  >>
+endobj
+
+9 0 obj
+  << /Kids [ 8 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+10 0 obj
+  << /Pages 9 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 11
+0000000000 65535 f
+0000000010 00000 n
+0000000812 00000 n
+0000000834 00000 n
+0000001334 00000 n
+0000001356 00000 n
+0000001654 00000 n
+0000002408 00000 n
+0000002430 00000 n
+0000002603 00000 n
+0000002677 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 10 0 R
+   /Size 11
+>>
+startxref
+2737
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-6.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 191 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_false.imageset/Select=false-6.pdf

@@ -0,0 +1,191 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.000000 17.999996 m
+2.000000 19.104565 2.895431 19.999996 4.000000 19.999996 c
+11.867069 19.999996 l
+12.445629 19.999996 12.995841 19.749454 13.375679 19.313046 c
+17.508610 14.564572 l
+17.825472 14.200518 18.000000 13.734160 18.000000 13.251524 c
+18.000000 1.999996 l
+18.000000 0.895426 17.104568 -0.000004 16.000000 -0.000004 c
+4.000000 -0.000004 l
+2.895431 -0.000004 2.000000 0.895426 2.000000 1.999996 c
+2.000000 17.999996 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.380392 0.392157 0.411765 scn
+15.508610 14.564576 m
+14.000000 13.251528 l
+15.508610 14.564576 l
+h
+11.375679 19.313049 m
+9.867070 18.000000 l
+11.375679 19.313049 l
+h
+14.000000 2.000000 m
+2.000000 2.000000 l
+2.000000 -2.000000 l
+14.000000 -2.000000 l
+14.000000 2.000000 l
+h
+2.000000 2.000000 m
+2.000000 18.000000 l
+-2.000000 18.000000 l
+-2.000000 2.000000 l
+2.000000 2.000000 l
+h
+2.000000 18.000000 m
+9.867069 18.000000 l
+9.867069 22.000000 l
+2.000000 22.000000 l
+2.000000 18.000000 l
+h
+14.000000 13.251528 m
+14.000000 2.000000 l
+18.000000 2.000000 l
+18.000000 13.251528 l
+14.000000 13.251528 l
+h
+9.867070 18.000000 m
+14.000000 13.251528 l
+17.017220 15.877625 l
+12.884289 20.626099 l
+9.867070 18.000000 l
+h
+18.000000 13.251528 m
+18.000000 14.216801 17.650944 15.149515 17.017220 15.877625 c
+14.000000 13.251528 l
+14.000000 13.251528 l
+18.000000 13.251528 l
+h
+9.867069 18.000000 m
+9.867070 18.000000 l
+12.884289 20.626099 l
+12.124612 21.498919 11.024188 22.000000 9.867069 22.000000 c
+9.867069 18.000000 l
+h
+2.000000 2.000000 m
+2.000000 2.000000 l
+-2.000000 2.000000 l
+-2.000000 -0.209139 -0.209139 -2.000000 2.000000 -2.000000 c
+2.000000 2.000000 l
+h
+14.000000 -2.000000 m
+16.209139 -2.000000 18.000000 -0.209139 18.000000 2.000000 c
+14.000000 2.000000 l
+14.000000 2.000000 l
+14.000000 -2.000000 l
+h
+2.000000 18.000000 m
+2.000000 18.000000 l
+2.000000 22.000000 l
+-0.209139 22.000000 -2.000000 20.209139 -2.000000 18.000000 c
+2.000000 18.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 6.204102 6.000000 cm
+0.380392 0.392157 0.411765 scn
+2.218262 0.000000 m
+2.604980 1.928223 l
+3.770508 1.928223 l
+3.383789 0.000000 l
+4.801758 0.000000 l
+5.183105 1.928223 l
+6.461426 1.928223 l
+6.719238 3.281738 l
+5.451660 3.281738 l
+5.704102 4.565430 l
+6.960938 4.565430 l
+7.218750 5.918945 l
+5.972656 5.918945 l
+6.337891 7.755859 l
+4.919922 7.755859 l
+4.560059 5.918945 l
+3.389160 5.918945 l
+3.754395 7.755859 l
+2.347168 7.755859 l
+1.981934 5.918945 l
+0.751953 5.918945 l
+0.494141 4.565430 l
+1.713379 4.565430 l
+1.460938 3.281738 l
+0.257812 3.281738 l
+0.000000 1.928223 l
+1.192383 1.928223 l
+0.811035 0.000000 l
+2.218262 0.000000 l
+h
+2.750000 3.168945 m
+3.045410 4.662109 l
+4.409668 4.662109 l
+4.114258 3.168945 l
+2.750000 3.168945 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2763
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002853 00000 n
+0000002876 00000 n
+0000003049 00000 n
+0000003123 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+3182
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-6.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 191 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_bates_true.imageset/Select=true-6.pdf

@@ -0,0 +1,191 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.000000 17.999996 m
+2.000000 19.104565 2.895431 19.999996 4.000000 19.999996 c
+11.867069 19.999996 l
+12.445629 19.999996 12.995841 19.749454 13.375679 19.313046 c
+17.508610 14.564572 l
+17.825472 14.200518 18.000000 13.734160 18.000000 13.251524 c
+18.000000 1.999996 l
+18.000000 0.895426 17.104568 -0.000004 16.000000 -0.000004 c
+4.000000 -0.000004 l
+2.895431 -0.000004 2.000000 0.895426 2.000000 1.999996 c
+2.000000 17.999996 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.090196 0.439216 0.956863 scn
+15.508610 14.564576 m
+14.000000 13.251528 l
+15.508610 14.564576 l
+h
+11.375679 19.313049 m
+9.867070 18.000000 l
+11.375679 19.313049 l
+h
+14.000000 2.000000 m
+2.000000 2.000000 l
+2.000000 -2.000000 l
+14.000000 -2.000000 l
+14.000000 2.000000 l
+h
+2.000000 2.000000 m
+2.000000 18.000000 l
+-2.000000 18.000000 l
+-2.000000 2.000000 l
+2.000000 2.000000 l
+h
+2.000000 18.000000 m
+9.867069 18.000000 l
+9.867069 22.000000 l
+2.000000 22.000000 l
+2.000000 18.000000 l
+h
+14.000000 13.251528 m
+14.000000 2.000000 l
+18.000000 2.000000 l
+18.000000 13.251528 l
+14.000000 13.251528 l
+h
+9.867070 18.000000 m
+14.000000 13.251528 l
+17.017220 15.877625 l
+12.884289 20.626099 l
+9.867070 18.000000 l
+h
+18.000000 13.251528 m
+18.000000 14.216801 17.650944 15.149515 17.017220 15.877625 c
+14.000000 13.251528 l
+14.000000 13.251528 l
+18.000000 13.251528 l
+h
+9.867069 18.000000 m
+9.867070 18.000000 l
+12.884289 20.626099 l
+12.124612 21.498919 11.024188 22.000000 9.867069 22.000000 c
+9.867069 18.000000 l
+h
+2.000000 2.000000 m
+2.000000 2.000000 l
+-2.000000 2.000000 l
+-2.000000 -0.209139 -0.209139 -2.000000 2.000000 -2.000000 c
+2.000000 2.000000 l
+h
+14.000000 -2.000000 m
+16.209139 -2.000000 18.000000 -0.209139 18.000000 2.000000 c
+14.000000 2.000000 l
+14.000000 2.000000 l
+14.000000 -2.000000 l
+h
+2.000000 18.000000 m
+2.000000 18.000000 l
+2.000000 22.000000 l
+-0.209139 22.000000 -2.000000 20.209139 -2.000000 18.000000 c
+2.000000 18.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 6.204102 6.000000 cm
+0.090196 0.439216 0.956863 scn
+2.218262 0.000000 m
+2.604980 1.928223 l
+3.770508 1.928223 l
+3.383789 0.000000 l
+4.801758 0.000000 l
+5.183105 1.928223 l
+6.461426 1.928223 l
+6.719238 3.281738 l
+5.451660 3.281738 l
+5.704102 4.565430 l
+6.960938 4.565430 l
+7.218750 5.918945 l
+5.972656 5.918945 l
+6.337891 7.755859 l
+4.919922 7.755859 l
+4.560059 5.918945 l
+3.389160 5.918945 l
+3.754395 7.755859 l
+2.347168 7.755859 l
+1.981934 5.918945 l
+0.751953 5.918945 l
+0.494141 4.565430 l
+1.713379 4.565430 l
+1.460938 3.281738 l
+0.257812 3.281738 l
+0.000000 1.928223 l
+1.192383 1.928223 l
+0.811035 0.000000 l
+2.218262 0.000000 l
+h
+2.750000 3.168945 m
+3.045410 4.662109 l
+4.409668 4.662109 l
+4.114258 3.168945 l
+2.750000 3.168945 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2763
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002853 00000 n
+0000002876 00000 n
+0000003049 00000 n
+0000003123 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+3182
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 182 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_false.imageset/Select=false-1.pdf

@@ -0,0 +1,182 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.000000 17.999996 m
+2.000000 19.104565 2.895431 19.999996 4.000000 19.999996 c
+11.867069 19.999996 l
+12.445629 19.999996 12.995841 19.749454 13.375679 19.313046 c
+17.508610 14.564572 l
+17.825472 14.200518 18.000000 13.734160 18.000000 13.251524 c
+18.000000 1.999996 l
+18.000000 0.895426 17.104568 -0.000004 16.000000 -0.000004 c
+4.000000 -0.000004 l
+2.895431 -0.000004 2.000000 0.895426 2.000000 1.999996 c
+2.000000 17.999996 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.380392 0.392157 0.411765 scn
+15.508610 14.564576 m
+14.000000 13.251528 l
+15.508610 14.564576 l
+h
+11.375679 19.313049 m
+9.867070 18.000000 l
+11.375679 19.313049 l
+h
+14.000000 2.000000 m
+2.000000 2.000000 l
+2.000000 -2.000000 l
+14.000000 -2.000000 l
+14.000000 2.000000 l
+h
+2.000000 2.000000 m
+2.000000 18.000000 l
+-2.000000 18.000000 l
+-2.000000 2.000000 l
+2.000000 2.000000 l
+h
+2.000000 18.000000 m
+9.867069 18.000000 l
+9.867069 22.000000 l
+2.000000 22.000000 l
+2.000000 18.000000 l
+h
+14.000000 13.251528 m
+14.000000 2.000000 l
+18.000000 2.000000 l
+18.000000 13.251528 l
+14.000000 13.251528 l
+h
+9.867070 18.000000 m
+14.000000 13.251528 l
+17.017220 15.877625 l
+12.884289 20.626099 l
+9.867070 18.000000 l
+h
+18.000000 13.251528 m
+18.000000 14.216801 17.650944 15.149515 17.017220 15.877625 c
+14.000000 13.251528 l
+14.000000 13.251528 l
+18.000000 13.251528 l
+h
+9.867069 18.000000 m
+9.867070 18.000000 l
+12.884289 20.626099 l
+12.124612 21.498919 11.024188 22.000000 9.867069 22.000000 c
+9.867069 18.000000 l
+h
+2.000000 2.000000 m
+2.000000 2.000000 l
+-2.000000 2.000000 l
+-2.000000 -0.209139 -0.209139 -2.000000 2.000000 -2.000000 c
+2.000000 2.000000 l
+h
+14.000000 -2.000000 m
+16.209139 -2.000000 18.000000 -0.209139 18.000000 2.000000 c
+14.000000 2.000000 l
+14.000000 2.000000 l
+14.000000 -2.000000 l
+h
+2.000000 18.000000 m
+2.000000 18.000000 l
+2.000000 22.000000 l
+-0.209139 22.000000 -2.000000 20.209139 -2.000000 18.000000 c
+2.000000 18.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 6.000000 4.000000 cm
+0.380392 0.392157 0.411765 scn
+2.000000 14.000000 m
+0.000000 14.000000 l
+0.000000 12.000000 l
+2.000000 12.000000 l
+2.000000 10.000000 l
+0.000000 10.000000 l
+0.000000 8.000000 l
+2.000000 8.000000 l
+2.000000 6.000000 l
+0.000000 6.000000 l
+0.000000 4.000000 l
+0.000000 1.000000 l
+0.000000 0.447716 0.447715 0.000000 1.000000 0.000000 c
+3.000000 0.000000 l
+3.552285 0.000000 4.000000 0.447716 4.000000 1.000000 c
+4.000000 4.000000 l
+2.000000 4.000000 l
+2.000000 6.000000 l
+4.000000 6.000000 l
+4.000000 8.000000 l
+2.000000 8.000000 l
+2.000000 10.000000 l
+4.000000 10.000000 l
+4.000000 12.000000 l
+2.000000 12.000000 l
+2.000000 14.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2685
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002775 00000 n
+0000002798 00000 n
+0000002971 00000 n
+0000003045 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+3104
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-1.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 182 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_compress_true.imageset/Select=true-1.pdf

@@ -0,0 +1,182 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.000000 17.999996 m
+2.000000 19.104565 2.895431 19.999996 4.000000 19.999996 c
+11.867069 19.999996 l
+12.445629 19.999996 12.995841 19.749454 13.375679 19.313046 c
+17.508610 14.564572 l
+17.825472 14.200518 18.000000 13.734160 18.000000 13.251524 c
+18.000000 1.999996 l
+18.000000 0.895426 17.104568 -0.000004 16.000000 -0.000004 c
+4.000000 -0.000004 l
+2.895431 -0.000004 2.000000 0.895426 2.000000 1.999996 c
+2.000000 17.999996 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.090196 0.439216 0.956863 scn
+15.508610 14.564576 m
+14.000000 13.251528 l
+15.508610 14.564576 l
+h
+11.375679 19.313049 m
+9.867070 18.000000 l
+11.375679 19.313049 l
+h
+14.000000 2.000000 m
+2.000000 2.000000 l
+2.000000 -2.000000 l
+14.000000 -2.000000 l
+14.000000 2.000000 l
+h
+2.000000 2.000000 m
+2.000000 18.000000 l
+-2.000000 18.000000 l
+-2.000000 2.000000 l
+2.000000 2.000000 l
+h
+2.000000 18.000000 m
+9.867069 18.000000 l
+9.867069 22.000000 l
+2.000000 22.000000 l
+2.000000 18.000000 l
+h
+14.000000 13.251528 m
+14.000000 2.000000 l
+18.000000 2.000000 l
+18.000000 13.251528 l
+14.000000 13.251528 l
+h
+9.867070 18.000000 m
+14.000000 13.251528 l
+17.017220 15.877625 l
+12.884289 20.626099 l
+9.867070 18.000000 l
+h
+18.000000 13.251528 m
+18.000000 14.216801 17.650944 15.149515 17.017220 15.877625 c
+14.000000 13.251528 l
+14.000000 13.251528 l
+18.000000 13.251528 l
+h
+9.867069 18.000000 m
+9.867070 18.000000 l
+12.884289 20.626099 l
+12.124612 21.498919 11.024188 22.000000 9.867069 22.000000 c
+9.867069 18.000000 l
+h
+2.000000 2.000000 m
+2.000000 2.000000 l
+-2.000000 2.000000 l
+-2.000000 -0.209139 -0.209139 -2.000000 2.000000 -2.000000 c
+2.000000 2.000000 l
+h
+14.000000 -2.000000 m
+16.209139 -2.000000 18.000000 -0.209139 18.000000 2.000000 c
+14.000000 2.000000 l
+14.000000 2.000000 l
+14.000000 -2.000000 l
+h
+2.000000 18.000000 m
+2.000000 18.000000 l
+2.000000 22.000000 l
+-0.209139 22.000000 -2.000000 20.209139 -2.000000 18.000000 c
+2.000000 18.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 6.000000 4.000000 cm
+0.090196 0.439216 0.956863 scn
+2.000000 14.000000 m
+0.000000 14.000000 l
+0.000000 12.000000 l
+2.000000 12.000000 l
+2.000000 10.000000 l
+0.000000 10.000000 l
+0.000000 8.000000 l
+2.000000 8.000000 l
+2.000000 6.000000 l
+0.000000 6.000000 l
+0.000000 4.000000 l
+0.000000 1.000000 l
+0.000000 0.447715 0.447715 0.000000 1.000000 0.000000 c
+3.000000 0.000000 l
+3.552285 0.000000 4.000000 0.447715 4.000000 1.000000 c
+4.000000 4.000000 l
+2.000000 4.000000 l
+2.000000 6.000000 l
+4.000000 6.000000 l
+4.000000 8.000000 l
+2.000000 8.000000 l
+2.000000 10.000000 l
+4.000000 10.000000 l
+4.000000 12.000000 l
+2.000000 12.000000 l
+2.000000 14.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2685
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002775 00000 n
+0000002798 00000 n
+0000002971 00000 n
+0000003045 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+3104
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 115 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_false.imageset/Select=false.pdf

@@ -0,0 +1,115 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.330811 0.000000 cm
+0.380392 0.392157 0.411765 scn
+2.669156 17.400000 m
+2.669156 18.835941 3.833216 20.000000 5.269156 20.000000 c
+9.669156 20.000000 l
+12.669156 20.000000 l
+14.069156 20.000000 l
+15.505095 20.000000 16.669155 18.835941 16.669155 17.400000 c
+16.669155 12.186018 l
+18.071136 13.743163 l
+19.409357 12.256837 l
+16.676302 9.221302 l
+16.007193 8.478139 l
+15.338081 9.221302 l
+12.605026 12.256837 l
+13.943247 13.743163 l
+14.669156 12.936914 l
+14.669156 17.400000 l
+14.669156 17.731371 14.400527 18.000000 14.069156 18.000000 c
+12.669156 18.000000 l
+9.669156 18.000000 l
+5.269156 18.000000 l
+4.937785 18.000000 4.669156 17.731371 4.669156 17.400000 c
+4.669156 14.750000 l
+2.669156 14.750000 l
+2.669156 17.400000 l
+h
+4.669156 8.141994 m
+4.669156 2.600000 l
+4.669156 2.268629 4.937786 2.000000 5.269156 2.000000 c
+6.669156 2.000000 l
+9.669156 2.000000 l
+14.069156 2.000000 l
+14.400526 2.000000 14.669156 2.268629 14.669156 2.600000 c
+14.669156 5.250000 l
+16.669155 5.250000 l
+16.669155 2.600000 l
+16.669155 1.164061 15.505096 0.000000 14.069156 0.000000 c
+9.669156 0.000000 l
+6.669156 0.000000 l
+5.269156 0.000000 l
+3.833215 0.000000 2.669156 1.164061 2.669156 2.600000 c
+2.669156 8.735073 l
+1.338220 7.256837 l
+0.000000 8.743163 l
+2.733055 11.778698 l
+3.402165 12.521861 l
+4.071275 11.778698 l
+6.804331 8.743163 l
+5.466110 7.256837 l
+4.669156 8.141994 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1439
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001529 00000 n
+0000001552 00000 n
+0000001725 00000 n
+0000001799 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1858
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 115 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_convertPDF_true.imageset/Select=true.pdf

@@ -0,0 +1,115 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 0.330811 0.000000 cm
+0.090196 0.439216 0.956863 scn
+2.669156 17.400000 m
+2.669156 18.835941 3.833216 20.000000 5.269156 20.000000 c
+9.669156 20.000000 l
+12.669156 20.000000 l
+14.069156 20.000000 l
+15.505095 20.000000 16.669155 18.835941 16.669155 17.400000 c
+16.669155 12.186018 l
+18.071136 13.743163 l
+19.409357 12.256837 l
+16.676302 9.221302 l
+16.007193 8.478139 l
+15.338081 9.221302 l
+12.605026 12.256837 l
+13.943247 13.743163 l
+14.669156 12.936914 l
+14.669156 17.400000 l
+14.669156 17.731371 14.400527 18.000000 14.069156 18.000000 c
+12.669156 18.000000 l
+9.669156 18.000000 l
+5.269156 18.000000 l
+4.937785 18.000000 4.669156 17.731371 4.669156 17.400000 c
+4.669156 14.750000 l
+2.669156 14.750000 l
+2.669156 17.400000 l
+h
+4.669156 8.141994 m
+4.669156 2.600000 l
+4.669156 2.268629 4.937786 2.000000 5.269156 2.000000 c
+6.669156 2.000000 l
+9.669156 2.000000 l
+14.069156 2.000000 l
+14.400526 2.000000 14.669156 2.268629 14.669156 2.600000 c
+14.669156 5.250000 l
+16.669155 5.250000 l
+16.669155 2.600000 l
+16.669155 1.164061 15.505096 0.000000 14.069156 0.000000 c
+9.669156 0.000000 l
+6.669156 0.000000 l
+5.269156 0.000000 l
+3.833215 0.000000 2.669156 1.164061 2.669156 2.600000 c
+2.669156 8.735073 l
+1.338220 7.256837 l
+0.000000 8.743163 l
+2.733055 11.778698 l
+3.402165 12.521861 l
+4.071275 11.778698 l
+6.804331 8.743163 l
+5.466110 7.256837 l
+4.669156 8.141994 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1439
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001529 00000 n
+0000001552 00000 n
+0000001725 00000 n
+0000001799 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1858
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-5.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 103 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_false.imageset/Select=false-5.pdf

@@ -0,0 +1,103 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.380392 0.392157 0.411765 scn
+2.000000 2.000000 m
+14.000000 2.000000 l
+14.000000 13.251528 l
+9.867070 18.000000 l
+2.000000 18.000000 l
+2.000000 2.000000 l
+h
+2.000000 20.000000 m
+0.895431 20.000000 0.000000 19.104568 0.000000 18.000000 c
+0.000000 2.000000 l
+0.000000 0.895430 0.895431 0.000000 2.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 13.251528 l
+16.000000 13.734164 15.825472 14.200521 15.508610 14.564576 c
+11.375679 19.313049 l
+10.995841 19.749458 10.445629 20.000000 9.867069 20.000000 c
+2.000000 20.000000 l
+h
+f*
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 3.000000 cm
+0.380392 0.392157 0.411765 scn
+6.333253 14.000000 m
+0.000000 14.000000 l
+0.000000 8.000000 l
+10.000000 8.000000 l
+10.000000 9.800000 l
+6.333253 14.000000 l
+h
+10.000000 4.000000 m
+0.000000 4.000000 l
+0.000000 0.000000 l
+10.000000 0.000000 l
+10.000000 4.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1010
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001100 00000 n
+0000001123 00000 n
+0000001296 00000 n
+0000001370 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1429
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-5.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 103 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_headerAndFooter_true.imageset/Select=true-5.pdf

@@ -0,0 +1,103 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.090196 0.439216 0.956863 scn
+2.000000 2.000000 m
+14.000000 2.000000 l
+14.000000 13.251528 l
+9.867070 18.000000 l
+2.000000 18.000000 l
+2.000000 2.000000 l
+h
+2.000000 20.000000 m
+0.895431 20.000000 0.000000 19.104568 0.000000 18.000000 c
+0.000000 2.000000 l
+0.000000 0.895430 0.895431 0.000000 2.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 13.251528 l
+16.000000 13.734164 15.825472 14.200521 15.508610 14.564576 c
+11.375679 19.313049 l
+10.995841 19.749458 10.445629 20.000000 9.867069 20.000000 c
+2.000000 20.000000 l
+h
+f*
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 3.000000 cm
+0.090196 0.439216 0.956863 scn
+6.333253 14.000000 m
+0.000000 14.000000 l
+0.000000 8.000000 l
+10.000000 8.000000 l
+10.000000 9.800000 l
+6.333253 14.000000 l
+h
+10.000000 4.000000 m
+0.000000 4.000000 l
+0.000000 0.000000 l
+10.000000 0.000000 l
+10.000000 4.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1010
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001100 00000 n
+0000001123 00000 n
+0000001296 00000 n
+0000001370 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1429
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-7.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 97 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_false.imageset/Select=false-7.pdf

@@ -0,0 +1,97 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 0.000000 cm
+0.380392 0.392157 0.411765 scn
+7.000000 18.000000 m
+11.000000 18.000000 l
+11.000000 20.000000 l
+7.000000 20.000000 l
+7.000000 18.000000 l
+h
+16.000000 15.000000 m
+18.000000 15.000000 l
+18.000000 17.000000 l
+14.000000 17.000000 l
+4.000000 17.000000 l
+0.000000 17.000000 l
+0.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 2.000000 l
+2.000000 0.895430 2.895430 0.000000 4.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 15.000000 l
+h
+14.000000 15.000000 m
+4.000000 15.000000 l
+4.000000 2.000000 l
+14.000000 2.000000 l
+14.000000 15.000000 l
+h
+8.000000 5.000000 m
+8.000000 12.000000 l
+10.000000 12.000000 l
+10.000000 5.000000 l
+8.000000 5.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  801
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000891 00000 n
+0000000913 00000 n
+0000001086 00000 n
+0000001160 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1219
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-7.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 97 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_remove_true.imageset/Select=true-7.pdf

@@ -0,0 +1,97 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 0.000000 cm
+0.090196 0.439216 0.956863 scn
+7.000000 18.000000 m
+11.000000 18.000000 l
+11.000000 20.000000 l
+7.000000 20.000000 l
+7.000000 18.000000 l
+h
+16.000000 15.000000 m
+18.000000 15.000000 l
+18.000000 17.000000 l
+14.000000 17.000000 l
+4.000000 17.000000 l
+0.000000 17.000000 l
+0.000000 15.000000 l
+2.000000 15.000000 l
+2.000000 2.000000 l
+2.000000 0.895430 2.895430 0.000000 4.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 15.000000 l
+h
+14.000000 15.000000 m
+4.000000 15.000000 l
+4.000000 2.000000 l
+14.000000 2.000000 l
+14.000000 15.000000 l
+h
+8.000000 5.000000 m
+8.000000 12.000000 l
+10.000000 12.000000 l
+10.000000 5.000000 l
+8.000000 5.000000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  801
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000891 00000 n
+0000000913 00000 n
+0000001086 00000 n
+0000001160 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1219
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-2.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 1237 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_false.imageset/Select=false-2.pdf


+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-2.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 1237 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_security_true.imageset/Select=true-2.pdf


+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=false-3.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 117 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_false.imageset/Select=false-3.pdf

@@ -0,0 +1,117 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.380392 0.392157 0.411765 scn
+2.000000 2.000000 m
+14.000000 2.000000 l
+14.000000 13.251528 l
+9.867070 18.000000 l
+2.000000 18.000000 l
+2.000000 2.000000 l
+h
+2.000000 20.000000 m
+0.895431 20.000000 0.000000 19.104568 0.000000 18.000000 c
+0.000000 2.000000 l
+0.000000 0.895430 0.895431 0.000000 2.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 13.251528 l
+16.000000 13.734164 15.825472 14.200521 15.508610 14.564576 c
+11.375679 19.313049 l
+10.995841 19.749458 10.445629 20.000000 9.867069 20.000000 c
+2.000000 20.000000 l
+h
+f*
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 6.053711 5.883789 cm
+0.380392 0.392157 0.411765 scn
+2.454102 0.000000 m
+3.424805 0.000000 4.238281 0.410156 4.573242 1.059570 c
+4.703125 1.059570 l
+4.703125 0.116211 l
+7.082031 0.116211 l
+7.082031 5.304688 l
+7.082031 6.945312 5.885742 7.902344 3.787109 7.902344 c
+1.729492 7.902344 0.416992 6.979492 0.280273 5.578125 c
+0.273438 5.496094 l
+2.467773 5.496094 l
+2.481445 5.530273 l
+2.625000 5.913086 3.014648 6.125000 3.650391 6.125000 c
+4.320312 6.125000 4.703125 5.817383 4.703125 5.304688 c
+4.703125 4.709961 l
+3.041992 4.614258 l
+1.080078 4.491211 0.000000 3.691406 0.000000 2.310547 c
+0.000000 2.296875 l
+0.000000 0.909180 0.998047 0.000000 2.454102 0.000000 c
+h
+2.331055 2.467773 m
+2.331055 2.481445 l
+2.331055 2.932617 2.707031 3.219727 3.424805 3.267578 c
+4.703125 3.349609 l
+4.703125 2.850586 l
+4.703125 2.194336 4.108398 1.688477 3.342773 1.688477 c
+2.734375 1.688477 2.331055 1.989258 2.331055 2.467773 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1641
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001731 00000 n
+0000001754 00000 n
+0000001927 00000 n
+0000002001 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2060
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Select=true-3.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 117 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_batchtool_watermark_true.imageset/Select=true-3.pdf

@@ -0,0 +1,117 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 -0.000004 cm
+0.090196 0.439216 0.956863 scn
+2.000000 2.000000 m
+14.000000 2.000000 l
+14.000000 13.251528 l
+9.867070 18.000000 l
+2.000000 18.000000 l
+2.000000 2.000000 l
+h
+2.000000 20.000000 m
+0.895431 20.000000 0.000000 19.104568 0.000000 18.000000 c
+0.000000 2.000000 l
+0.000000 0.895430 0.895431 0.000000 2.000000 0.000000 c
+14.000000 0.000000 l
+15.104569 0.000000 16.000000 0.895430 16.000000 2.000000 c
+16.000000 13.251528 l
+16.000000 13.734164 15.825472 14.200521 15.508610 14.564576 c
+11.375679 19.313049 l
+10.995841 19.749458 10.445629 20.000000 9.867069 20.000000 c
+2.000000 20.000000 l
+h
+f*
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 6.053711 5.883789 cm
+0.090196 0.439216 0.956863 scn
+2.454102 0.000000 m
+3.424805 0.000000 4.238281 0.410156 4.573242 1.059570 c
+4.703125 1.059570 l
+4.703125 0.116211 l
+7.082031 0.116211 l
+7.082031 5.304688 l
+7.082031 6.945312 5.885742 7.902344 3.787109 7.902344 c
+1.729492 7.902344 0.416992 6.979492 0.280273 5.578125 c
+0.273438 5.496094 l
+2.467773 5.496094 l
+2.481445 5.530273 l
+2.625000 5.913086 3.014648 6.125000 3.650391 6.125000 c
+4.320312 6.125000 4.703125 5.817383 4.703125 5.304688 c
+4.703125 4.709961 l
+3.041992 4.614258 l
+1.080078 4.491211 0.000000 3.691406 0.000000 2.310547 c
+0.000000 2.296875 l
+0.000000 0.909180 0.998047 0.000000 2.454102 0.000000 c
+h
+2.331055 2.467773 m
+2.331055 2.481445 l
+2.331055 2.932617 2.707031 3.219727 3.424805 3.267578 c
+4.703125 3.349609 l
+4.703125 2.850586 l
+4.703125 2.194336 4.108398 1.688477 3.342773 1.688477 c
+2.734375 1.688477 2.331055 1.989258 2.331055 2.467773 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1641
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000001731 00000 n
+0000001754 00000 n
+0000001927 00000 n
+0000002001 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2060
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_false.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Disabled=false, State=norm.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 95 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_false.imageset/Disabled=false, State=norm.pdf

@@ -0,0 +1,95 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 0.250000 cm
+0.380392 0.392157 0.411765 scn
+5.000000 14.000000 m
+9.000000 14.000000 l
+9.000000 15.500000 l
+5.000000 15.500000 l
+5.000000 14.000000 l
+h
+0.000000 11.500000 m
+1.250000 11.500000 l
+1.250000 0.750000 l
+1.250000 0.335787 1.585786 0.000000 2.000000 0.000000 c
+12.000000 0.000000 l
+12.414213 0.000000 12.750000 0.335787 12.750000 0.750000 c
+12.750000 11.500000 l
+14.000000 11.500000 l
+14.000000 13.000000 l
+0.000000 13.000000 l
+0.000000 11.500000 l
+h
+2.750000 1.500000 m
+2.750000 11.500000 l
+11.250000 11.500000 l
+11.250000 1.500000 l
+2.750000 1.500000 l
+h
+6.250000 9.250000 m
+6.250000 4.250000 l
+7.750000 4.250000 l
+7.750000 9.250000 l
+6.250000 9.250000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  749
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000839 00000 n
+0000000861 00000 n
+0000001034 00000 n
+0000001108 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1167
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_true.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Disabled=true, State=norm.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 95 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_clear_norm_true.imageset/Disabled=true, State=norm.pdf

@@ -0,0 +1,95 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 0.250000 cm
+0.694118 0.701961 0.721569 scn
+5.000000 14.000000 m
+9.000000 14.000000 l
+9.000000 15.500000 l
+5.000000 15.500000 l
+5.000000 14.000000 l
+h
+0.000000 11.500000 m
+1.250000 11.500000 l
+1.250000 0.750000 l
+1.250000 0.335787 1.585786 0.000000 2.000000 0.000000 c
+12.000000 0.000000 l
+12.414213 0.000000 12.750000 0.335787 12.750000 0.750000 c
+12.750000 11.500000 l
+14.000000 11.500000 l
+14.000000 13.000000 l
+0.000000 13.000000 l
+0.000000 11.500000 l
+h
+2.750000 1.500000 m
+2.750000 11.500000 l
+11.250000 11.500000 l
+11.250000 1.500000 l
+2.750000 1.500000 l
+h
+6.250000 9.250000 m
+6.250000 4.250000 l
+7.750000 4.250000 l
+7.750000 9.250000 l
+6.250000 9.250000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  749
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000839 00000 n
+0000000861 00000 n
+0000001034 00000 n
+0000001108 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1167
+%%EOF

+ 21 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_help.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "help.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 141 - 0
PDF Office/PDF Master/KMClass/NewBatch/Source/Batch.xcassets/icon_btn_help.imageset/help.pdf

@@ -0,0 +1,141 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+1.000000 1.000000 1.000000 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+15.000000 8.000000 m
+15.000000 4.134007 11.865993 1.000000 8.000000 1.000000 c
+4.134007 1.000000 1.000000 4.134007 1.000000 8.000000 c
+1.000000 11.865993 4.134007 15.000000 8.000000 15.000000 c
+11.865993 15.000000 15.000000 11.865993 15.000000 8.000000 c
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.807843 0.815686 0.831373 scn
+13.000000 7.000000 m
+13.000000 3.686292 10.313708 1.000000 7.000000 1.000000 c
+7.000000 -1.000000 l
+11.418278 -1.000000 15.000000 2.581722 15.000000 7.000000 c
+13.000000 7.000000 l
+h
+7.000000 1.000000 m
+3.686291 1.000000 1.000000 3.686292 1.000000 7.000000 c
+-1.000000 7.000000 l
+-1.000000 2.581722 2.581722 -1.000000 7.000000 -1.000000 c
+7.000000 1.000000 l
+h
+1.000000 7.000000 m
+1.000000 10.313708 3.686291 13.000000 7.000000 13.000000 c
+7.000000 15.000000 l
+2.581722 15.000000 -1.000000 11.418278 -1.000000 7.000000 c
+1.000000 7.000000 l
+h
+7.000000 13.000000 m
+10.313708 13.000000 13.000000 10.313708 13.000000 7.000000 c
+15.000000 7.000000 l
+15.000000 11.418278 11.418278 15.000000 7.000000 15.000000 c
+7.000000 13.000000 l
+h
+f
+n
+Q
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 5.462891 3.853516 cm
+0.580392 0.596078 0.611765 scn
+1.828125 2.783203 m
+3.187500 2.783203 l
+3.187500 3.123047 l
+3.187500 3.708984 3.404297 4.013672 4.171875 4.458984 c
+4.968750 4.933594 5.414062 5.560547 5.414062 6.451172 c
+5.414062 6.462891 l
+5.414062 7.746094 4.341797 8.671875 2.736328 8.671875 c
+0.996094 8.671875 0.041016 7.664062 0.000000 6.292969 c
+0.000000 6.281250 l
+1.365234 6.287109 l
+1.376953 6.292969 l
+1.417969 7.013672 1.904297 7.476562 2.660156 7.476562 c
+3.398438 7.476562 3.890625 7.025391 3.890625 6.410156 c
+3.890625 6.398438 l
+3.890625 5.824219 3.644531 5.507812 2.917969 5.068359 c
+2.109375 4.593750 1.769531 4.066406 1.822266 3.199219 c
+1.828125 2.783203 l
+h
+2.572266 0.000000 m
+3.169922 0.000000 3.544922 0.363281 3.544922 0.919922 c
+3.544922 1.482422 3.169922 1.845703 2.572266 1.845703 c
+1.986328 1.845703 1.599609 1.482422 1.599609 0.919922 c
+1.599609 0.363281 1.986328 0.000000 2.572266 0.000000 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2448
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000002538 00000 n
+0000002561 00000 n
+0000002734 00000 n
+0000002808 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2867
+%%EOF

+ 136 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/KMBatchCollectionView.swift

@@ -0,0 +1,136 @@
+//
+//  KMBatchCollectionView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchCollectionView: BaseXibView {
+    @IBOutlet weak var collectionView: NSCollectionView!
+    
+    var delegate: KMBatchCollectionViewDelegate?
+    var inputType: KMBatchCollectionViewType? {
+        didSet {
+            self.didSelectBatchType(type: inputType!)
+        }
+    }
+
+//    /**
+//      @abstract 外部传入数据
+//      @param inputData 文件路劲
+//      */
+//    var inputData: [URL]! {
+//        didSet {
+//            self.tableView.inputData = inputData
+//        }
+//    }
+    var presenter: KMBatchCollectionViewPrensenter = KMBatchCollectionViewPrensenter()
+    var data:[KMBatchCollectionViewModel] = []
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        self.delegate = nil
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.contentView.wantsLayer = true
+        self.contentView.layer?.backgroundColor = NSColor.km_init(hex: "#F7F8FA").cgColor
+        
+        self.collectionView.delegate = self
+        self.collectionView.dataSource = self
+        self.collectionView.isSelectable = true
+        self.collectionView.allowsMultipleSelection = false
+        //注册cell
+        self.collectionView.register(KMBatchCollectionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMBatchCollectionViewItem"))
+        
+        self.presenter.initPresenter(view: self)
+    }
+    
+    func reloadData() {
+        
+    }
+}
+
+extension KMBatchCollectionView: KMBatchCollectionViewPrensenterDelegate {
+    func showData(presenter: KMBatchCollectionViewPrensenter, data: Array<KMBatchCollectionViewModel>) {
+        self.data = data
+        self.collectionView.reloadData()
+    }
+}
+
+extension KMBatchCollectionView: NSCollectionViewDelegate {
+    //当item被选中
+    public func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
+        for item in self.data {
+            item.isSelect = false
+        }
+        
+        let view = collectionView.item(at: indexPaths.first!) as! KMBatchCollectionViewItem
+        view.model.isSelect = true
+        self.collectionView.reloadData()
+        
+        if self.delegate != nil {
+            self.delegate?.didSelect(index: indexPaths.first!, data: view.model)
+        }
+    }
+    
+//   //当item取消选中
+//    public func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) {
+//        let view = collectionView.item(at: indexPaths.first!) as! KMBatchCollectionViewItem
+//        view.model.isSelect = false
+//        self.collectionView.reloadData()
+//    }
+    
+    func didSelectBatchType(type: KMBatchCollectionViewType) {
+        for item in self.data {
+            if item.type == type {
+                item.isSelect = true
+            } else {
+                item.isSelect = false
+            }
+        }
+        self.collectionView.reloadData()
+    }
+}
+
+extension KMBatchCollectionView: NSCollectionViewDataSource {
+    func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
+        return self.data.count
+    }
+    
+    //返回对应的item自定义个体
+    public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
+        let view = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMBatchCollectionViewItem"), for: indexPath) as! KMBatchCollectionViewItem
+        
+        view.model = self.data[indexPath.item]
+        return view
+    }
+}
+
+extension KMBatchCollectionView: NSCollectionViewDelegateFlowLayout {
+    
+    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
+        return NSSize(width: self.contentView.bounds.width, height: 32)
+    }
+    
+    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
+        return 16
+    }
+}
+
+//MARK: KMBatchCollectionViewDelegate
+protocol KMBatchCollectionViewDelegate: NSObject {
+    func didSelect(index: IndexPath, data: KMBatchCollectionViewModel)
+}
+
+
+

+ 56 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/KMBatchCollectionView.xib

@@ -0,0 +1,56 @@
+<?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="KMBatchCollectionView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="collectionView" destination="Ld8-ua-fw8" id="WsK-8e-z8p"/>
+            </connections>
+        </customObject>
+        <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="615" height="364"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LaZ-yZ-XGg">
+                    <rect key="frame" x="0.0" y="0.0" width="615" height="356"/>
+                    <clipView key="contentView" drawsBackground="NO" id="S4k-1R-KQT">
+                        <rect key="frame" x="0.0" y="0.0" width="615" height="356"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <collectionView id="Ld8-ua-fw8">
+                                <rect key="frame" x="0.0" y="0.0" width="615" height="356"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
+                                <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" id="bIe-ul-s0S">
+                                    <size key="itemSize" width="50" height="50"/>
+                                </collectionViewFlowLayout>
+                                <color key="primaryBackgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                            </collectionView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                    </clipView>
+                    <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="3wY-vY-Gbo">
+                        <rect key="frame" x="-100" y="-100" width="233" height="15"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </scroller>
+                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="6vC-AB-SCr">
+                        <rect key="frame" x="234" y="1" width="15" height="143"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </scroller>
+                </scrollView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="LaZ-yZ-XGg" secondAttribute="trailing" id="0Dj-l3-hSR"/>
+                <constraint firstItem="LaZ-yZ-XGg" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="8" id="F8C-v1-BEB"/>
+                <constraint firstAttribute="bottom" secondItem="LaZ-yZ-XGg" secondAttribute="bottom" id="YfA-CJ-RRF"/>
+                <constraint firstItem="LaZ-yZ-XGg" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="lc4-a0-Bbu"/>
+            </constraints>
+            <point key="canvasLocation" x="12.5" y="201"/>
+        </customView>
+    </objects>
+</document>

+ 45 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/Model/KMBatchCollectionViewModel.swift

@@ -0,0 +1,45 @@
+//
+//  KMBatchCollectionViewModel.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+enum KMBatchCollectionViewType: String {
+    case unknow = "unknow"
+    case convertPDF = "ConvertPDF"
+    case compress = "Compress"
+    case security = "Security"
+    case watermark = "Watermark"
+    case background = "Background"
+    case headerAndFooter = "Header & Footer"
+    case batesNumber = "Bates Number"
+    case batchRemove = "Batch Remove"
+    
+    static func typeOfRawVale(value: String) -> KMBatchCollectionViewType {
+        var type: KMBatchCollectionViewType
+        switch value {
+        case "ConvertPDF": type = .convertPDF
+        case "Compress": type = .compress
+        case "Security": type = .security
+        case "Watermark": type = .watermark
+        case "Background": type = .background
+        case "Header & Footer": type = .headerAndFooter
+        case "Bates Number": type = .batesNumber
+        case "Batch Remove": type = .batchRemove
+        default:
+            type = .convertPDF
+        }
+        return type
+    }
+}
+
+class KMBatchCollectionViewModel: NSObject {
+    var imageString: String = ""
+    var selectImageString: String = ""
+    var title: String = ""
+    var isSelect: Bool = false
+    var type: KMBatchCollectionViewType = .convertPDF
+}

+ 110 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/Presenter/KMBatchCollectionViewPrensenter.swift

@@ -0,0 +1,110 @@
+//
+//  KMBatchCollectionViewPrensenter.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchCollectionViewPrensenter: NSObject {
+    lazy var modelData: [KMBatchCollectionViewModel] = []
+    var view: KMBatchCollectionView?
+    fileprivate weak var delegate: KMBatchCollectionViewPrensenterDelegate?
+
+}
+
+extension KMBatchCollectionViewPrensenter: KMBatchCollectionViewPrensenterProtocol {
+    /**
+     初始化presenter
+     */
+    func initPresenter(view: KMBatchCollectionView) {
+        self.delegate = view
+        
+        self.modelData.removeAll()
+        
+        
+        let array = [["title":"ConvertPDF",
+                      "image":"icon_batchtool_convertPDF_false",
+                      "selectImage":"icon_batchtool_convertPDF_true",
+                      "isSelect": false],
+                     ["title":"Compress",
+                      "image":"icon_batchtool_compress_false",
+                      "selectImage":"icon_batchtool_compress_true",
+                      "isSelect": false],
+                     ["title":"Security",
+                      "image":"icon_batchtool_security_false",
+                      "selectImage":"icon_batchtool_security_true",
+                      "isSelect": false],
+                     ["title":"Watermark",
+                      "image":"icon_batchtool_watermark_false",
+                      "selectImage":"icon_batchtool_watermark_true",
+                      "isSelect": false],
+                     ["title":"Background",
+                      "image":"icon_batchtool_background_false",
+                      "selectImage":"icon_batchtool_background_true",
+                      "isSelect": false],
+                     ["title":"Header & Footer",
+                      "image":"icon_batchtool_headerAndFooter_false",
+                      "selectImage":"icon_batchtool_headerAndFooter_true",
+                      "isSelect": false],
+                     ["title":"Bates Number",
+                      "image":"icon_batchtool_bates_false",
+                      "selectImage":"icon_batchtool_bates_true",
+                      "isSelect": false],
+                     ["title":"Batch Remove",
+                      "image":"icon_batchtool_remove_false",
+                      "selectImage":"icon_batchtool_remove_true",
+                      "isSelect": false]
+        ]
+        
+        for dic in array {
+            let model = KMBatchCollectionViewModel()
+            model.imageString = dic["image"] as! String
+            model.selectImageString = dic["selectImage"] as! String
+            model.title = dic["title"] as! String
+            model.isSelect = dic["isSelect"] as! Bool
+            model.type = KMBatchCollectionViewType.typeOfRawVale(value: dic["title"] as! String)
+            //设置默认选中
+            if model.type == .convertPDF {
+                model.isSelect = true
+            }
+            self.modelData.append(model)
+        }
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func cleanAll() {
+        self.modelData.removeAll()
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func free() {
+        view = nil
+        delegate = nil
+    }
+}
+
+
+protocol KMBatchCollectionViewPrensenterDelegate: AnyObject {
+    /**
+     @abstract 回调,返回处理后的数据<KMBatchProcessingViewModel>类型
+     @param presenter
+     @param data 返回数据
+     */
+    func showData(presenter: KMBatchCollectionViewPrensenter, data: Array<KMBatchCollectionViewModel>)
+}
+
+protocol KMBatchCollectionViewPrensenterProtocol {
+    /**
+     @abstract 绑定视图与数据
+     @param view 视图
+     @param data 资源 <KMBatchProcessingViewModel>类型
+     */
+    func initPresenter(view: KMBatchCollectionView)
+    /**
+     @abstract 解除绑定
+     */
+    func free()
+}

+ 45 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/View/KMBatchCollectionViewItem.swift

@@ -0,0 +1,45 @@
+//
+//  KMBatchCollectionViewItem.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchCollectionViewItem: NSCollectionViewItem {
+
+    @IBOutlet weak var contentView: NSView!
+    @IBOutlet weak var iconImageView: NSImageView!
+    @IBOutlet weak var titleTextField: NSTextField!
+    
+    var model: KMBatchCollectionViewModel = KMBatchCollectionViewModel() {
+        didSet {
+            self.reloadData()
+        }
+    }
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        self.contentView.wantsLayer = true
+        self.contentView.layer?.cornerRadius = 4
+        self.titleTextField.font = NSFont.SFProTextRegularFont(14.0)
+    }
+    
+    func reloadData() {
+        self.titleTextField.stringValue = NSLocalizedString(self.model.title, comment: "")
+        
+        if self.model.isSelect {
+            self.titleTextField.textColor = NSColor.km_init(hex: "#1770F4")
+            
+            self.iconImageView.image = NSImage(named: self.model.selectImageString)
+            self.contentView.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4", alpha: 0.1).cgColor
+        } else {
+            self.titleTextField.textColor = NSColor.km_init(hex: "#616469")
+            
+            self.iconImageView.image = NSImage(named: self.model.imageString)
+            self.contentView.layer?.backgroundColor = NSColor.clear.cgColor
+        }
+    }
+    
+}

+ 60 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/BatchCollectionView/View/KMBatchCollectionViewItem.xib

@@ -0,0 +1,60 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchCollectionViewItem" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="M7b-ct-fs6" id="WQ7-qY-hUa"/>
+                <outlet property="iconImageView" destination="A4Q-jt-6W1" id="eo8-f1-TCZ"/>
+                <outlet property="titleTextField" destination="IO9-EJ-mU5" id="9Tq-Kc-Ifj"/>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="Hz6-mo-xeY">
+            <rect key="frame" x="0.0" y="0.0" width="311" height="32"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="M7b-ct-fs6">
+                    <rect key="frame" x="8" y="0.0" width="295" height="32"/>
+                    <subviews>
+                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="A4Q-jt-6W1">
+                            <rect key="frame" x="8" y="6" width="16" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="oIS-kO-MN0"/>
+                                <constraint firstAttribute="width" constant="16" id="uTr-tV-Vcc"/>
+                            </constraints>
+                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="EB6-xw-P0J"/>
+                        </imageView>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IO9-EJ-mU5">
+                            <rect key="frame" x="30" y="8" width="81" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Convert PDF" id="qSs-zA-wWa">
+                                <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>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="A4Q-jt-6W1" firstAttribute="centerY" secondItem="M7b-ct-fs6" secondAttribute="centerY" id="Anf-bd-Dhx"/>
+                        <constraint firstItem="IO9-EJ-mU5" firstAttribute="centerY" secondItem="M7b-ct-fs6" secondAttribute="centerY" id="IZc-WJ-T7F"/>
+                        <constraint firstItem="IO9-EJ-mU5" firstAttribute="leading" secondItem="A4Q-jt-6W1" secondAttribute="trailing" constant="8" id="gnK-M7-sxR"/>
+                        <constraint firstItem="A4Q-jt-6W1" firstAttribute="leading" secondItem="M7b-ct-fs6" secondAttribute="leading" constant="8" id="lF6-uc-SOL"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="M7b-ct-fs6" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="8" id="Jlq-YJ-Lnv"/>
+                <constraint firstItem="M7b-ct-fs6" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="Nd5-W6-jNb"/>
+                <constraint firstAttribute="bottom" secondItem="M7b-ct-fs6" secondAttribute="bottom" id="Rcs-41-ox8"/>
+                <constraint firstAttribute="trailing" secondItem="M7b-ct-fs6" secondAttribute="trailing" constant="8" id="up3-WR-1rt"/>
+            </constraints>
+            <point key="canvasLocation" x="-361.5" y="96"/>
+        </customView>
+    </objects>
+</document>

+ 43 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Background/KMBatchBackgroundView.swift

@@ -0,0 +1,43 @@
+//
+//  KMBatchBackgroundView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchBackgroundView: KMBatchSettingItemView {
+    @IBOutlet weak var applyButton: NSButton!
+    @IBOutlet weak var itemContentView: NSView!
+    
+    override func setup() {
+        super.setup()
+        
+        self.applyButton.wantsLayer = true
+        self.applyButton.layer?.cornerRadius = 4
+        self.applyButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
+        self.applyButton.stringValue = NSLocalizedString("Compress", comment: "")
+        self.applyButton.font = NSFont.SFProTextRegularFont(14.0)
+        self.applyButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+    }
+    
+    override func reloadData() {
+        
+        if (self.filesData.count != 0) {
+            self.applyButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
+            self.applyButton.isEnabled = true
+        } else {
+            self.applyButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+            self.applyButton.isEnabled = false
+        }
+    }
+}
+
+
+protocol KMBatchBackgroundViewAction: KMBatchBackgroundView {}
+extension KMBatchBackgroundView: KMBatchBackgroundViewAction {
+    @IBAction func applyButtonAction(_ sender: NSButton) {
+
+    }
+}

+ 50 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Background/KMBatchBackgroundView.xib

@@ -0,0 +1,50 @@
+<?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="KMBatchBackgroundView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="applyButton" destination="Ein-jK-xTE" id="PSc-9F-2ip"/>
+                <outlet property="itemContentView" destination="3KH-8D-VJs" id="MzY-Oc-4Nq"/>
+            </connections>
+        </customObject>
+        <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="224" height="541"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="3KH-8D-VJs">
+                    <rect key="frame" x="0.0" y="48" width="224" height="493"/>
+                </customView>
+                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ein-jK-xTE">
+                    <rect key="frame" x="16" y="16" width="192" height="32"/>
+                    <buttonCell key="cell" type="square" title="Apply" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="HFy-n4-a83">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="hgL-YP-BmG"/>
+                    </constraints>
+                    <connections>
+                        <action selector="applyButtonAction:" target="-2" id="1XH-q0-gmd"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="3KH-8D-VJs" secondAttribute="trailing" id="6u2-pq-xvf"/>
+                <constraint firstItem="3KH-8D-VJs" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="Jm1-WG-ZUz"/>
+                <constraint firstAttribute="trailing" secondItem="Ein-jK-xTE" secondAttribute="trailing" constant="16" id="OgR-0f-g8k"/>
+                <constraint firstItem="Ein-jK-xTE" firstAttribute="top" secondItem="3KH-8D-VJs" secondAttribute="bottom" id="WNa-dO-pbz"/>
+                <constraint firstItem="3KH-8D-VJs" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="eE9-fx-HNp"/>
+                <constraint firstAttribute="bottom" secondItem="Ein-jK-xTE" secondAttribute="bottom" constant="16" id="jCP-kh-t1f"/>
+                <constraint firstItem="Ein-jK-xTE" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="16" id="qs1-pn-UqF"/>
+            </constraints>
+            <point key="canvasLocation" x="-163" y="-128.5"/>
+        </customView>
+    </objects>
+</document>

+ 165 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatchRemove/KMBatchRemoveView.swift

@@ -0,0 +1,165 @@
+//
+//  KMBatchRemoveView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchRemoveView: KMBatchSettingItemView {
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var securityButton: KMImageTitleButton!
+    @IBOutlet weak var watermarkButton: KMImageTitleButton!
+    @IBOutlet weak var backgroundButton: KMImageTitleButton!
+    @IBOutlet weak var headerAndFoolterButton: KMImageTitleButton!
+    @IBOutlet weak var batesNumberButton: KMImageTitleButton!
+    
+    @IBOutlet weak var removeButton: NSButton!
+    var data = KMBatchRemoveViewModel()
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        self.securityButton.title = NSLocalizedString(KMBatchRemoveOptions.language(options: .security), comment: "")
+        self.securityButton.imageName = "btn_checkbox_unsel_on"
+        self.securityButton.action = { [unowned self] (view, button) in
+            if self.data.options.contains(.security) {
+                self.data.options.remove(.security)
+            } else {
+                self.data.options.insert(.security)
+            }
+            self.reloadData()
+        }
+        
+        self.watermarkButton.title = NSLocalizedString(KMBatchRemoveOptions.language(options: .watermark), comment: "")
+        self.watermarkButton.imageName = "btn_checkbox_unsel_on"
+        self.watermarkButton.action = { [unowned self] (view, button) in
+            if self.data.options.contains(.watermark) {
+                self.data.options.remove(.watermark)
+            } else {
+                self.data.options.insert(.watermark)
+            }
+            self.reloadData()
+        }
+        
+        self.backgroundButton.title = NSLocalizedString(KMBatchRemoveOptions.language(options: .background), comment: "")
+        self.backgroundButton.imageName = "btn_checkbox_unsel_on"
+        self.backgroundButton.action = { [unowned self] (view, button) in
+            if self.data.options.contains(.background) {
+                self.data.options.remove(.background)
+            } else {
+                self.data.options.insert(.background)
+            }
+            self.reloadData()
+        }
+        
+        self.headerAndFoolterButton.title = NSLocalizedString(KMBatchRemoveOptions.language(options: .headerAndFooter), comment: "")
+        self.headerAndFoolterButton.imageName = "btn_checkbox_unsel_on"
+        self.headerAndFoolterButton.action = { [unowned self] (view, button) in
+            if self.data.options.contains(.headerAndFooter) {
+                self.data.options.remove(.headerAndFooter)
+            } else {
+                self.data.options.insert(.headerAndFooter)
+            }
+            self.reloadData()
+        }
+        
+        self.batesNumberButton.title = NSLocalizedString(KMBatchRemoveOptions.language(options: .batesNumber), comment: "")
+        self.batesNumberButton.imageName = "btn_checkbox_unsel_on"
+        self.batesNumberButton.action = { [unowned self] (view, button) in
+            if self.data.options.contains(.batesNumber) {
+                self.data.options.remove(.batesNumber)
+            } else {
+                self.data.options.insert(.batesNumber)
+            }
+            self.reloadData()
+        }
+        
+        self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.titleLabel.stringValue = NSLocalizedString("Settings", comment: "")
+        self.titleLabel.font = NSFont.SFProTextRegularFont(16.0)
+        
+        self.removeButton.wantsLayer = true
+        self.removeButton.layer?.cornerRadius = 4
+        self.removeButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
+        self.removeButton.stringValue = NSLocalizedString("Compress", comment: "")
+        self.removeButton.font = NSFont.SFProTextRegularFont(14.0)
+        self.removeButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+        
+        self.securityButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.securityButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.watermarkButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.watermarkButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.backgroundButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.backgroundButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.headerAndFoolterButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.headerAndFoolterButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.batesNumberButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.batesNumberButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+    }
+    
+    override func reloadData() {
+        
+        if data.options.contains(.security) {
+            self.securityButton.imageName = "btn_checkbox_sel_on"
+        } else {
+            self.securityButton.imageName = "btn_checkbox_unsel_on"
+        }
+        
+        if data.options.contains(.watermark) {
+            self.watermarkButton.imageName = "btn_checkbox_sel_on"
+        } else {
+            self.watermarkButton.imageName = "btn_checkbox_unsel_on"
+        }
+        
+        if data.options.contains(.background) {
+            self.backgroundButton.imageName = "btn_checkbox_sel_on"
+        } else {
+            self.backgroundButton.imageName = "btn_checkbox_unsel_on"
+        }
+        
+        if data.options.contains(.batesNumber) {
+            self.batesNumberButton.imageName = "btn_checkbox_sel_on"
+        } else {
+            self.batesNumberButton.imageName = "btn_checkbox_unsel_on"
+        }
+        
+        if data.options.contains(.headerAndFooter) {
+            self.headerAndFoolterButton.imageName = "btn_checkbox_sel_on"
+        } else {
+            self.headerAndFoolterButton.imageName = "btn_checkbox_unsel_on"
+        }
+        
+        if (self.filesData.count != 0 && self.data.options != .none) {
+            self.removeButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
+            self.removeButton.isEnabled = true
+        } else {
+            self.removeButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+            self.removeButton.isEnabled = false
+        }
+    }
+}
+
+
+protocol KMBatchRemoveViewAction: KMBatchRemoveView {}
+extension KMBatchRemoveView: KMBatchRemoveViewAction {
+    @IBAction func removeButtonAction(_ sender: NSButton) {
+        guard self.data != nil else {
+            return
+        }
+        
+        if self.export != nil {
+            self.export!(self, self.data)
+        }
+    }
+}

+ 170 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatchRemove/KMBatchRemoveView.xib

@@ -0,0 +1,170 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBatchRemoveView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="backgroundButton" destination="VNj-N4-ado" id="qXs-0G-keY"/>
+                <outlet property="batesNumberButton" destination="fXE-Wi-SQg" id="QWe-qZ-23G"/>
+                <outlet property="headerAndFoolterButton" destination="IcQ-qY-4el" id="Kt8-uI-QrJ"/>
+                <outlet property="removeButton" destination="jSW-R9-96h" id="v08-3T-zKY"/>
+                <outlet property="securityButton" destination="ZLe-ie-9aW" id="qxk-bB-pAP"/>
+                <outlet property="titleLabel" destination="ByT-MG-Een" id="XSc-Ml-emG"/>
+                <outlet property="watermarkButton" destination="mW8-7V-90H" id="5Xj-JW-Ywv"/>
+            </connections>
+        </customObject>
+        <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="243" height="537"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="OSl-pe-yjA">
+                    <rect key="frame" x="0.0" y="48" width="243" height="489"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="use-k4-jIy">
+                            <rect key="frame" x="0.0" y="439" width="243" height="50"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ByT-MG-Een">
+                                    <rect key="frame" x="14" y="16" width="61" height="19"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Options" id="jtw-Rv-X0C">
+                                        <font key="font" metaFont="system" size="16"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="ByT-MG-Een" firstAttribute="leading" secondItem="use-k4-jIy" secondAttribute="leading" constant="16" id="844-ug-iTF"/>
+                                <constraint firstItem="ByT-MG-Een" firstAttribute="centerY" secondItem="use-k4-jIy" secondAttribute="centerY" id="TiK-v0-1CT"/>
+                                <constraint firstAttribute="height" constant="50" id="Y4G-Qe-9Ec"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="9rk-oH-3ib">
+                            <rect key="frame" x="0.0" y="417" width="243" height="22"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ZLe-ie-9aW" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="0.0" width="211" height="22"/>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="ZLe-ie-9aW" firstAttribute="top" secondItem="9rk-oH-3ib" secondAttribute="top" id="H3k-H4-0Xj"/>
+                                <constraint firstItem="ZLe-ie-9aW" firstAttribute="leading" secondItem="9rk-oH-3ib" secondAttribute="leading" constant="16" id="P8d-Vc-dr0"/>
+                                <constraint firstAttribute="height" constant="22" id="hME-zD-Ebw"/>
+                                <constraint firstAttribute="trailing" secondItem="ZLe-ie-9aW" secondAttribute="trailing" constant="16" id="kbi-eW-Gch"/>
+                                <constraint firstAttribute="bottom" secondItem="ZLe-ie-9aW" secondAttribute="bottom" id="me5-Sz-llJ"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="brs-Fx-E8P">
+                            <rect key="frame" x="0.0" y="387" width="243" height="22"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="mW8-7V-90H" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="0.0" width="211" height="22"/>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="mW8-7V-90H" secondAttribute="trailing" constant="16" id="4Y9-wo-Mkw"/>
+                                <constraint firstAttribute="bottom" secondItem="mW8-7V-90H" secondAttribute="bottom" id="9sV-iB-cvf"/>
+                                <constraint firstItem="mW8-7V-90H" firstAttribute="leading" secondItem="brs-Fx-E8P" secondAttribute="leading" constant="16" id="Rht-lD-o8b"/>
+                                <constraint firstAttribute="height" constant="22" id="gPY-ba-VAq"/>
+                                <constraint firstItem="mW8-7V-90H" firstAttribute="top" secondItem="brs-Fx-E8P" secondAttribute="top" id="iVH-ZI-X6m"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="H6f-uZ-ZAz">
+                            <rect key="frame" x="0.0" y="357" width="243" height="22"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="VNj-N4-ado" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="0.0" width="211" height="22"/>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="VNj-N4-ado" secondAttribute="trailing" constant="16" id="2CI-uO-OOG"/>
+                                <constraint firstAttribute="height" constant="22" id="3FY-OQ-Sog"/>
+                                <constraint firstItem="VNj-N4-ado" firstAttribute="top" secondItem="H6f-uZ-ZAz" secondAttribute="top" id="SEl-9L-N94"/>
+                                <constraint firstAttribute="bottom" secondItem="VNj-N4-ado" secondAttribute="bottom" id="egV-Jx-fVA"/>
+                                <constraint firstItem="VNj-N4-ado" firstAttribute="leading" secondItem="H6f-uZ-ZAz" secondAttribute="leading" constant="16" id="jAV-lg-pVv"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Qul-DJ-tSN">
+                            <rect key="frame" x="0.0" y="327" width="243" height="22"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="IcQ-qY-4el" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="0.0" width="211" height="22"/>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="IcQ-qY-4el" firstAttribute="top" secondItem="Qul-DJ-tSN" secondAttribute="top" id="936-Oa-TuM"/>
+                                <constraint firstAttribute="trailing" secondItem="IcQ-qY-4el" secondAttribute="trailing" constant="16" id="9Hb-md-iPs"/>
+                                <constraint firstAttribute="height" constant="22" id="FFg-8p-CYn"/>
+                                <constraint firstItem="IcQ-qY-4el" firstAttribute="leading" secondItem="Qul-DJ-tSN" secondAttribute="leading" constant="16" id="KET-QA-3va"/>
+                                <constraint firstAttribute="bottom" secondItem="IcQ-qY-4el" secondAttribute="bottom" id="vi7-B5-IVu"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="qh2-hl-kKV">
+                            <rect key="frame" x="0.0" y="297" width="243" height="22"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="fXE-Wi-SQg" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="0.0" width="211" height="22"/>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="fXE-Wi-SQg" firstAttribute="leading" secondItem="qh2-hl-kKV" secondAttribute="leading" constant="16" id="ER2-PI-TpY"/>
+                                <constraint firstAttribute="height" constant="22" id="WRo-t2-cEn"/>
+                                <constraint firstAttribute="trailing" secondItem="fXE-Wi-SQg" secondAttribute="trailing" constant="16" id="ZtP-mB-ZsM"/>
+                                <constraint firstAttribute="bottom" secondItem="fXE-Wi-SQg" secondAttribute="bottom" id="iEf-gY-7ah"/>
+                                <constraint firstItem="fXE-Wi-SQg" firstAttribute="top" secondItem="qh2-hl-kKV" secondAttribute="top" id="xvb-cm-FgN"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="H6f-uZ-ZAz" firstAttribute="leading" secondItem="OSl-pe-yjA" secondAttribute="leading" id="760-vc-qCa"/>
+                        <constraint firstAttribute="trailing" secondItem="Qul-DJ-tSN" secondAttribute="trailing" id="7Dt-ub-O3C"/>
+                        <constraint firstAttribute="trailing" secondItem="use-k4-jIy" secondAttribute="trailing" id="Cob-di-un4"/>
+                        <constraint firstItem="qh2-hl-kKV" firstAttribute="top" secondItem="Qul-DJ-tSN" secondAttribute="bottom" constant="8" id="HVR-b5-rLV"/>
+                        <constraint firstAttribute="trailing" secondItem="H6f-uZ-ZAz" secondAttribute="trailing" id="IHd-nb-lYX"/>
+                        <constraint firstItem="brs-Fx-E8P" firstAttribute="top" secondItem="9rk-oH-3ib" secondAttribute="bottom" constant="8" id="KeV-rQ-JxT"/>
+                        <constraint firstAttribute="trailing" secondItem="brs-Fx-E8P" secondAttribute="trailing" id="Ndy-ta-7dP"/>
+                        <constraint firstAttribute="trailing" secondItem="qh2-hl-kKV" secondAttribute="trailing" id="Uhv-As-kqk"/>
+                        <constraint firstItem="9rk-oH-3ib" firstAttribute="top" secondItem="use-k4-jIy" secondAttribute="bottom" id="YnZ-EW-EIu"/>
+                        <constraint firstItem="use-k4-jIy" firstAttribute="top" secondItem="OSl-pe-yjA" secondAttribute="top" id="eP5-nZ-Op5"/>
+                        <constraint firstItem="9rk-oH-3ib" firstAttribute="leading" secondItem="OSl-pe-yjA" secondAttribute="leading" id="mpE-yE-bSd"/>
+                        <constraint firstItem="qh2-hl-kKV" firstAttribute="leading" secondItem="OSl-pe-yjA" secondAttribute="leading" id="mwW-EB-xyF"/>
+                        <constraint firstItem="use-k4-jIy" firstAttribute="leading" secondItem="OSl-pe-yjA" secondAttribute="leading" id="pc8-qv-dZX"/>
+                        <constraint firstItem="Qul-DJ-tSN" firstAttribute="leading" secondItem="OSl-pe-yjA" secondAttribute="leading" id="phT-CR-7jc"/>
+                        <constraint firstAttribute="trailing" secondItem="9rk-oH-3ib" secondAttribute="trailing" id="w6P-gG-Zz0"/>
+                        <constraint firstItem="Qul-DJ-tSN" firstAttribute="top" secondItem="H6f-uZ-ZAz" secondAttribute="bottom" constant="8" id="y7s-dN-dey"/>
+                        <constraint firstItem="brs-Fx-E8P" firstAttribute="leading" secondItem="OSl-pe-yjA" secondAttribute="leading" id="yYE-SW-ZFq"/>
+                        <constraint firstItem="H6f-uZ-ZAz" firstAttribute="top" secondItem="brs-Fx-E8P" secondAttribute="bottom" constant="8" id="yzF-qu-rZc"/>
+                    </constraints>
+                </customView>
+                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jSW-R9-96h">
+                    <rect key="frame" x="16" y="16" width="211" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="bwa-X2-bj1"/>
+                    </constraints>
+                    <buttonCell key="cell" type="square" title="Remove" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="XGy-ey-MWO">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="removeButtonAction:" target="-2" id="jK2-yT-aWr"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstItem="OSl-pe-yjA" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="2cE-9Y-NcL"/>
+                <constraint firstItem="OSl-pe-yjA" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="Eit-T9-y3q"/>
+                <constraint firstAttribute="trailing" secondItem="jSW-R9-96h" secondAttribute="trailing" constant="16" id="Uoj-cu-hcu"/>
+                <constraint firstAttribute="bottom" secondItem="jSW-R9-96h" secondAttribute="bottom" constant="16" id="ceN-0h-7xM"/>
+                <constraint firstItem="jSW-R9-96h" firstAttribute="top" secondItem="OSl-pe-yjA" secondAttribute="bottom" id="kIP-Rk-S4e"/>
+                <constraint firstItem="jSW-R9-96h" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="16" id="pNX-cC-tba"/>
+                <constraint firstAttribute="trailing" secondItem="OSl-pe-yjA" secondAttribute="trailing" id="tzM-J4-SZs"/>
+            </constraints>
+            <point key="canvasLocation" x="-149.5" y="230.5"/>
+        </customView>
+    </objects>
+</document>

+ 45 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatchRemove/Model/KMBatchRemoveViewModel.swift

@@ -0,0 +1,45 @@
+//
+//  KMBatchRemoveViewModel.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/2/6.
+//
+
+import Cocoa
+
+struct KMBatchRemoveOptions: OptionSet {
+    let rawValue: Int
+
+    static let none = KMBatchRemoveOptions(rawValue: 1 << 0) //
+    static let security = KMBatchRemoveOptions(rawValue: 1 << 1) //
+    static let watermark = KMBatchRemoveOptions(rawValue: 1 << 2) //打印
+    static let background = KMBatchRemoveOptions(rawValue: 1 << 3) //复制
+    static let headerAndFooter = KMBatchRemoveOptions(rawValue: 1 << 4) //复制
+    static let batesNumber = KMBatchRemoveOptions(rawValue: 1 << 5) //复制
+    
+    static let all: KMBatchRemoveOptions = [.security, .watermark, .background, .headerAndFooter, .batesNumber,]
+    
+    static func language(options: KMBatchRemoveOptions) -> String {
+        if options.contains(.security) {
+            return "Security"
+        }
+        if options.contains(.watermark) {
+            return "Watermark"
+        }
+        if options.contains(.background) {
+            return "Background"
+        }
+        if options.contains(.headerAndFooter) {
+            return "Header & Footer"
+        }
+        if options.contains(.batesNumber) {
+            return "Bates Number"
+        }
+        return ""
+    }
+}
+
+
+class KMBatchRemoveViewModel: KMBatchSettingItemViewModel {
+    var options: KMBatchRemoveOptions = .none
+}

+ 49 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatesNumber/KMBatchBatesNumberView.swift

@@ -0,0 +1,49 @@
+//
+//  KMBatchBatesNumberView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchBatesNumberView: KMBatchSettingItemView {
+    @IBOutlet weak var itemContentView: NSView!
+    
+    @IBOutlet weak var applyButton: NSButton!
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.applyButton.wantsLayer = true
+        self.applyButton.layer?.cornerRadius = 4
+        self.applyButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
+        self.applyButton.stringValue = NSLocalizedString("Apply", comment: "")
+        self.applyButton.font = NSFont.SFProTextRegularFont(14.0)
+        self.applyButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+    }
+    
+    override func reloadData() {
+        if (self.filesData.count != 0) {
+            self.applyButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
+            self.applyButton.isEnabled = true
+        } else {
+            self.applyButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+            self.applyButton.isEnabled = false
+        }
+    }
+}
+
+
+protocol KMBatchBatesNumberViewAction: KMBatchBatesNumberView {}
+extension KMBatchBatesNumberView: KMBatchBatesNumberViewAction {
+    @IBAction func applyButtonAction(_ sender: NSButton) {
+
+    }
+}

+ 52 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/BatesNumber/KMBatchBatesNumberView.xib

@@ -0,0 +1,52 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBatesNumberView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="applyButton" destination="dC1-H3-03r" id="5E2-Xo-t8R"/>
+                <outlet property="itemContentView" destination="Vfh-Ms-jRy" id="4s8-wO-LJF"/>
+            </connections>
+        </customObject>
+        <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="225" height="534"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Vfh-Ms-jRy">
+                    <rect key="frame" x="0.0" y="48" width="225" height="486"/>
+                </customView>
+                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dC1-H3-03r">
+                    <rect key="frame" x="16" y="16" width="193" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="wsM-c5-E8a"/>
+                    </constraints>
+                    <buttonCell key="cell" type="square" title="Apply" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="76I-e4-O6A">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="applyButtonAction:" target="-2" id="sHv-NU-4AB"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="dC1-H3-03r" secondAttribute="bottom" constant="16" id="3fY-6t-mll"/>
+                <constraint firstItem="dC1-H3-03r" firstAttribute="top" secondItem="Vfh-Ms-jRy" secondAttribute="bottom" id="822-Hm-Ntr"/>
+                <constraint firstAttribute="trailing" secondItem="dC1-H3-03r" secondAttribute="trailing" constant="16" id="8zc-Fk-SDz"/>
+                <constraint firstAttribute="trailing" secondItem="Vfh-Ms-jRy" secondAttribute="trailing" id="BNA-o3-DAh"/>
+                <constraint firstItem="Vfh-Ms-jRy" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="DFo-un-G3R"/>
+                <constraint firstItem="dC1-H3-03r" firstAttribute="top" secondItem="Vfh-Ms-jRy" secondAttribute="bottom" id="Pc4-Gd-l5X"/>
+                <constraint firstItem="dC1-H3-03r" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="16" id="c6T-7o-PIr"/>
+                <constraint firstItem="Vfh-Ms-jRy" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="eEz-pp-9jW"/>
+                <constraint firstItem="dC1-H3-03r" firstAttribute="top" secondItem="Vfh-Ms-jRy" secondAttribute="bottom" id="gIn-dm-6Ck"/>
+            </constraints>
+            <point key="canvasLocation" x="-160.5" y="245"/>
+        </customView>
+    </objects>
+</document>

+ 122 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Compress/KMBatchCompressView.swift

@@ -0,0 +1,122 @@
+//
+//  KMBatchCompressView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchCompressView: KMBatchSettingItemView {
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var subTitleLabel: NSTextField!
+    @IBOutlet weak var largeButton: KMImageTitleButton!
+    @IBOutlet weak var standardButton: KMImageTitleButton!
+    @IBOutlet weak var smallButton: KMImageTitleButton!
+    @IBOutlet weak var minimumButton: KMImageTitleButton!
+    @IBOutlet weak var compressButton: NSButton!
+    
+    var data: KMBatchCompressViewModel = KMBatchCompressViewModel()
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.largeButton.title = NSLocalizedString("Large File Size", comment: "")
+        self.largeButton.imageName = "btn_radio_unsel_on"
+        self.largeButton.action = { [unowned self] (view, button) in
+            self.data.type = .large
+            self.reloadData()
+        }
+        
+        self.standardButton.title = NSLocalizedString("Standard File Size", comment: "")
+        self.standardButton.imageName = "btn_radio_unsel_on"
+        self.standardButton.action = { [unowned self] (view, button) in
+            self.data.type = .standard
+            self.reloadData()
+        }
+        
+        self.smallButton.title = NSLocalizedString("Small File Size", comment: "")
+        self.smallButton.imageName = "btn_radio_unsel_on"
+        self.smallButton.action = { [unowned self] (view, button) in
+            self.data.type = .small
+            self.reloadData()
+        }
+        
+        self.minimumButton.title = NSLocalizedString("Minimum File Size", comment: "")
+        self.minimumButton.imageName = "btn_radio_unsel_on"
+        self.minimumButton.action = { [unowned self] (view, button) in
+            self.data.type = .minimum
+            self.reloadData()
+        }
+        
+        self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.titleLabel.stringValue = NSLocalizedString("Settings", comment: "")
+        self.titleLabel.font = NSFont.SFProTextRegularFont(16.0)
+        
+        self.subTitleLabel.textColor = NSColor.km_init(hex: "#616469")
+        self.subTitleLabel.stringValue = NSLocalizedString("Optimization Options", comment: "")
+        self.subTitleLabel.font = NSFont.SFProTextRegularFont(12.0)
+        
+        self.compressButton.wantsLayer = true
+        self.compressButton.layer?.cornerRadius = 4
+        self.compressButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
+        self.compressButton.stringValue = NSLocalizedString("Compress", comment: "")
+        self.compressButton.font = NSFont.SFProTextRegularFont(14.0)
+        self.compressButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+        
+        self.largeButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.largeButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.standardButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.standardButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.smallButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.smallButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+        
+        self.minimumButton.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.minimumButton.titleLabel.font = NSFont.SFProTextRegularFont(14.0)
+
+    }
+    
+    override func reloadData() {
+        
+        let array = [self.smallButton, self.minimumButton, self.largeButton, self.standardButton]
+        for button in array {
+            button?.imageName = "btn_radio_unsel_on"
+        }
+        switch self.data.type {
+        case .large:
+            self.largeButton.imageName = "btn_radio_sel_on"
+        case .standard:
+            self.standardButton.imageName = "btn_radio_sel_on"
+        case .small:
+            self.smallButton.imageName = "btn_radio_sel_on"
+        case .minimum:
+            self.minimumButton.imageName = "btn_radio_sel_on"
+        }
+        
+        if (self.filesData.count != 0) {
+            self.compressButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
+            self.compressButton.isEnabled = true
+        } else {
+            self.compressButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+            self.compressButton.isEnabled = false
+        }
+    }
+}
+
+protocol KMBatchCompressViewAction {}
+
+extension KMBatchCompressView: KMBatchCompressViewAction {
+    @IBAction func compressButtonAction(_ sender: Any) {
+        if self.export != nil {
+            self.export!(self, self.data)
+        }
+    }
+}

+ 140 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Compress/KMBatchCompressView.xib

@@ -0,0 +1,140 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchCompressView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="compressButton" destination="tCe-M7-ml6" id="A6A-uA-m1v"/>
+                <outlet property="largeButton" destination="04q-im-23c" id="tm5-es-LvS"/>
+                <outlet property="minimumButton" destination="w3I-aO-cpL" id="rap-kR-T31"/>
+                <outlet property="smallButton" destination="yIQ-5M-l2c" id="Mm3-4z-6Pa"/>
+                <outlet property="standardButton" destination="1WJ-t8-IJX" id="5L1-Cg-9JD"/>
+                <outlet property="subTitleLabel" destination="6xI-ma-ajz" id="Z1h-dR-1yO"/>
+                <outlet property="titleLabel" destination="dwV-pG-pDM" id="guN-Mh-Yhr"/>
+            </connections>
+        </customObject>
+        <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="510"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="rGV-y0-v2C">
+                    <rect key="frame" x="0.0" y="0.0" width="244" height="510"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="tyn-c5-gGM">
+                            <rect key="frame" x="0.0" y="320" width="244" height="140"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6xI-ma-ajz">
+                                    <rect key="frame" x="14" y="120" width="132" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="wZB-Xj-CX4"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Optimization Options" id="Cix-9s-G6q">
+                                        <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="04q-im-23c" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="90" width="212" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="pvu-yQ-fzK"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="1WJ-t8-IJX" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="60" width="212" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="ZGc-g3-KgZ"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="yIQ-5M-l2c" customClass="KMImageTitleButton" customModule="PDF_Office" customModuleProvider="target">
+                                    <rect key="frame" x="16" y="30" width="212" height="22"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="22" id="ViO-C5-Zzu"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="w3I-aO-cpL" 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="Ilf-VF-kKF"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="1WJ-t8-IJX" firstAttribute="top" secondItem="04q-im-23c" secondAttribute="bottom" constant="8" id="3Cj-gK-YVh"/>
+                                <constraint firstItem="1WJ-t8-IJX" firstAttribute="leading" secondItem="tyn-c5-gGM" secondAttribute="leading" constant="16" id="5sv-Ph-3XN"/>
+                                <constraint firstItem="yIQ-5M-l2c" firstAttribute="leading" secondItem="tyn-c5-gGM" secondAttribute="leading" constant="16" id="9h8-Cz-3nE"/>
+                                <constraint firstItem="6xI-ma-ajz" firstAttribute="leading" secondItem="tyn-c5-gGM" secondAttribute="leading" constant="16" id="DKY-l6-StM"/>
+                                <constraint firstAttribute="trailing" secondItem="yIQ-5M-l2c" secondAttribute="trailing" constant="16" id="ECy-8J-I3e"/>
+                                <constraint firstAttribute="trailing" secondItem="1WJ-t8-IJX" secondAttribute="trailing" constant="16" id="G24-xX-iWB"/>
+                                <constraint firstAttribute="trailing" secondItem="04q-im-23c" secondAttribute="trailing" constant="16" id="TdV-9V-Vwf"/>
+                                <constraint firstAttribute="trailing" secondItem="w3I-aO-cpL" secondAttribute="trailing" constant="16" id="VW9-3N-uir"/>
+                                <constraint firstItem="04q-im-23c" firstAttribute="top" secondItem="6xI-ma-ajz" secondAttribute="bottom" constant="8" id="XuF-hv-RJd"/>
+                                <constraint firstItem="6xI-ma-ajz" firstAttribute="top" secondItem="tyn-c5-gGM" secondAttribute="top" id="cdi-1I-wxE"/>
+                                <constraint firstItem="w3I-aO-cpL" firstAttribute="leading" secondItem="tyn-c5-gGM" secondAttribute="leading" constant="16" id="dkd-hg-ZMl"/>
+                                <constraint firstItem="w3I-aO-cpL" firstAttribute="top" secondItem="yIQ-5M-l2c" secondAttribute="bottom" constant="8" symbolic="YES" id="fst-sx-z0D"/>
+                                <constraint firstItem="04q-im-23c" firstAttribute="leading" secondItem="tyn-c5-gGM" secondAttribute="leading" constant="16" id="lgJ-Lq-Kem"/>
+                                <constraint firstItem="yIQ-5M-l2c" firstAttribute="top" secondItem="1WJ-t8-IJX" secondAttribute="bottom" constant="8" id="xYA-6z-9m7"/>
+                                <constraint firstAttribute="height" constant="140" id="xeI-X6-Rxn"/>
+                            </constraints>
+                        </customView>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tCe-M7-ml6">
+                            <rect key="frame" x="16" y="16" width="212" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="9ac-EO-nBE"/>
+                            </constraints>
+                            <buttonCell key="cell" type="square" title="Compress" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="2hM-RS-lMd">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="compressButtonAction:" target="-2" id="qe8-FX-Gw8"/>
+                            </connections>
+                        </button>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="NPr-cy-oIM">
+                            <rect key="frame" x="0.0" y="460" width="244" height="50"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dwV-pG-pDM">
+                                    <rect key="frame" x="14" y="16" width="56" height="19"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Setting" id="sow-fB-H7b">
+                                        <font key="font" metaFont="system" size="16"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="dwV-pG-pDM" firstAttribute="leading" secondItem="NPr-cy-oIM" secondAttribute="leading" constant="16" id="pMB-zS-01h"/>
+                                <constraint firstItem="dwV-pG-pDM" firstAttribute="centerY" secondItem="NPr-cy-oIM" secondAttribute="centerY" id="y7B-Ch-V9z"/>
+                                <constraint firstAttribute="height" constant="50" id="yS9-hO-1MY"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="tyn-c5-gGM" firstAttribute="leading" secondItem="rGV-y0-v2C" secondAttribute="leading" id="2pM-jM-w43"/>
+                        <constraint firstAttribute="trailing" secondItem="NPr-cy-oIM" secondAttribute="trailing" id="7x3-fO-YeK"/>
+                        <constraint firstItem="NPr-cy-oIM" firstAttribute="leading" secondItem="rGV-y0-v2C" secondAttribute="leading" id="AjK-QA-fFQ"/>
+                        <constraint firstAttribute="trailing" secondItem="tyn-c5-gGM" secondAttribute="trailing" id="CGS-Ld-eg3"/>
+                        <constraint firstItem="tCe-M7-ml6" firstAttribute="leading" secondItem="rGV-y0-v2C" secondAttribute="leading" constant="16" id="ErF-Ya-Qrh"/>
+                        <constraint firstAttribute="bottom" secondItem="tCe-M7-ml6" secondAttribute="bottom" constant="16" id="HNv-xf-Bv7"/>
+                        <constraint firstItem="NPr-cy-oIM" firstAttribute="top" secondItem="rGV-y0-v2C" secondAttribute="top" id="Q14-z2-Wy6"/>
+                        <constraint firstAttribute="trailing" secondItem="tCe-M7-ml6" secondAttribute="trailing" constant="16" id="qLK-eR-j9s"/>
+                        <constraint firstItem="tyn-c5-gGM" firstAttribute="top" secondItem="NPr-cy-oIM" secondAttribute="bottom" id="yyH-QQ-2L4"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="rGV-y0-v2C" secondAttribute="bottom" id="5nN-A3-rjc"/>
+                <constraint firstItem="rGV-y0-v2C" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="ORs-nn-F5u"/>
+                <constraint firstAttribute="trailing" secondItem="rGV-y0-v2C" secondAttribute="trailing" id="jGX-uk-tIC"/>
+                <constraint firstItem="rGV-y0-v2C" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="nqd-jR-Hos"/>
+            </constraints>
+            <point key="canvasLocation" x="85" y="97"/>
+        </customView>
+    </objects>
+</document>

+ 26 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/Compress/Model/KMBatchCompressViewModel.swift

@@ -0,0 +1,26 @@
+//
+//  KMBatchCompressViewModel.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/30.
+//
+
+import Cocoa
+
+enum KMBatchCompressOptimizationType: String, CaseIterable {
+    case large = "Large File Size"
+    case standard = "Standard File Size"
+    case small = "Small File Size"
+    case minimum = "Minimum File Size"
+    
+    static func allValues() -> [String] {
+        var array: [String] = []
+        for key in KMBatchCompressOptimizationType.allCases {
+            array.append(key.rawValue)
+        }
+        return array
+    }
+}
+class KMBatchCompressViewModel: KMBatchSettingItemViewModel {
+    var type: KMBatchCompressOptimizationType = .small
+}

+ 162 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/KMBatchConvertPDFView.swift

@@ -0,0 +1,162 @@
+//
+//  KMBatchConvertPDFView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchConvertPDFView: KMBatchSettingItemView {
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var itemContentView: NSView!
+    @IBOutlet weak var formatLabel: NSTextField!
+    
+    @IBOutlet weak var convertButton: NSButton!
+    @IBOutlet weak var convertTitleLabel: NSTextField!
+    @IBOutlet weak var convertIconImage: NSImageView!
+    @IBOutlet weak var convertActionButton: NSButton!
+    
+    var itemViewArray: [KMBatchConvertPDFItemView] = []
+    var currentView: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView()
+    
+    var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
+    var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
+    override var subType: Any? {
+        didSet {
+            self.data.convertPDFType = (subType as? KMBatchConvertPDFType) ?? .word
+            self.reloadData()
+        }
+    }
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.presenter.initPresenter(view: self)
+        
+        self.titleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.titleLabel.stringValue = NSLocalizedString("Settings", comment: "")
+        self.titleLabel.font = NSFont.SFProTextRegularFont(16.0)
+        
+        self.formatLabel.textColor = NSColor.km_init(hex: "#616469")
+        self.formatLabel.stringValue = NSLocalizedString("Format", comment: "")
+        self.formatLabel.font = NSFont.SFProTextRegularFont(12.0)
+        
+        self.convertActionButton.wantsLayer = true
+        self.convertActionButton.layer?.cornerRadius = 4
+        self.convertActionButton.contentTintColor = NSColor.km_init(hex: "#FFFFFF")
+        self.convertActionButton.stringValue = NSLocalizedString("Convert", comment: "")
+        self.convertActionButton.font = NSFont.SFProTextRegularFont(14.0)
+        self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+        
+        self.convertTitleLabel.textColor = NSColor.km_init(hex: "#252629")
+        self.convertTitleLabel.stringValue = NSLocalizedString("Word", comment: "")
+        self.convertTitleLabel.font = NSFont.SFProTextRegularFont(14.0)
+    }
+    
+    override func reloadData() {
+        if self.data.convertPDFType != self.currentView.type ||
+            self.itemViewArray.count == 0 {
+            let view = self.fetchCurrentView(type: self.data.convertPDFType)
+            self.currentView.removeFromSuperview()
+            self.itemContentView.addSubview(view)
+            self.currentView = view
+        }
+        
+        if (self.filesData.count != 0) {
+            self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#1770F4").cgColor
+            self.convertActionButton.isEnabled = true
+        } else {
+            self.convertActionButton.layer?.backgroundColor = NSColor.km_init(hex: "#BDDFFD").cgColor
+            self.convertActionButton.isEnabled = false
+        }
+        
+        self.currentView.data = self.data
+        self.currentView.reloadData()
+        
+        self.convertTitleLabel.stringValue = self.data.convertPDFType.rawValue
+    }
+    
+    func fetchCurrentView(type: KMBatchConvertPDFType) -> KMBatchConvertPDFItemView {
+        var view: KMBatchConvertPDFItemView = KMBatchConvertPDFItemView.init()
+        
+        var isExist = false
+        for item in self.itemViewArray {
+            if item.type == type {
+                isExist = true
+                view = item
+            }
+        }
+        
+        if !isExist {
+            switch type {
+            case .word:
+                view = KMBatchConverPDFWordView.init(frame: self.itemContentView.bounds)
+                break
+            case .excel:
+                view = KMBatchConverPDFExcelView.init(frame: self.itemContentView.bounds)
+                break
+            case .ppt:
+                view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
+                break
+            case .image:
+                view = KMBatchConverPDFImageView.init(frame: self.itemContentView.bounds)
+                break
+            case .csv:
+                view = KMBatchConverPDFCSVView.init(frame: self.itemContentView.bounds)
+                break
+            case .html:
+                view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
+                break
+            case .rtf:
+                view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
+                break
+            default:
+                KMPrint("找不到")
+                break
+            }
+            view.type = type
+            view.presenter = self.presenter
+            view.data = self.data
+            self.itemViewArray.append(view)
+        }
+        
+        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)
+        }
+    }
+}
+
+extension KMBatchConvertPDFView: KMBatchConvertPDFViewPresenterDelegate {
+    func showData(presenter: KMBatchConvertPDFViewPresenter, data: KMBatchConvertPDFViewModel) {
+        self.data = data
+        self.reloadData()
+        self.currentView.reloadData()
+    }
+}

+ 163 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/KMBatchConvertPDFView.xib

@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConvertPDFView" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="convertActionButton" destination="t8i-o1-Alp" id="MHl-AG-but"/>
+                <outlet property="convertButton" destination="64o-IE-4ut" id="SR5-5y-SJN"/>
+                <outlet property="convertIconImage" destination="gqy-Wp-U61" id="lWX-BD-6KH"/>
+                <outlet property="convertTitleLabel" destination="I6b-oY-jAA" id="FuT-fA-xhu"/>
+                <outlet property="formatLabel" destination="Q8R-va-r5O" id="NKv-9j-hwk"/>
+                <outlet property="itemContentView" destination="gRF-Pc-kIx" id="Ree-Je-KVM"/>
+                <outlet property="titleLabel" destination="X6C-S7-N1h" id="X9g-bf-f7W"/>
+            </connections>
+        </customObject>
+        <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="250" height="694"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="cxi-no-clx">
+                    <rect key="frame" x="0.0" y="0.0" width="250" height="694"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="cil-Yp-W4m">
+                            <rect key="frame" x="0.0" y="584" width="250" height="60"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Q8R-va-r5O">
+                                    <rect key="frame" x="14" y="40" width="47" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="2Cv-hP-x8e"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Format" id="6UA-4i-ACI">
+                                        <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="9eH-fh-he9">
+                                    <rect key="frame" x="16" y="0.0" width="218" height="32"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="I6b-oY-jAA">
+                                            <rect key="frame" x="6" y="8" width="34" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="word" id="NcY-rO-cuF">
+                                                <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="gqy-Wp-U61">
+                                            <rect key="frame" x="198" y="10" width="12" height="12"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="12" id="Hu1-VV-zJa"/>
+                                                <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="gzM-Aj-srn"/>
+                                                <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12" id="jtj-dR-uQi"/>
+                                                <constraint firstAttribute="height" constant="12" id="t2p-Uh-0tb"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="fEa-Ag-EN4"/>
+                                        </imageView>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="64o-IE-4ut">
+                                            <rect key="frame" x="0.0" y="0.0" width="218" height="32"/>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="64s-or-Zae">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                            <connections>
+                                                <action selector="convertPDFTypeAction:" target="-2" id="BGL-1i-8ku"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="I6b-oY-jAA" firstAttribute="centerY" secondItem="9eH-fh-he9" secondAttribute="centerY" id="2A0-wi-cMy"/>
+                                        <constraint firstItem="64o-IE-4ut" firstAttribute="leading" secondItem="9eH-fh-he9" secondAttribute="leading" id="BLl-x2-5o2"/>
+                                        <constraint firstAttribute="trailing" secondItem="64o-IE-4ut" secondAttribute="trailing" id="DxL-ej-FY6"/>
+                                        <constraint firstAttribute="height" constant="32" id="IlQ-Rz-xmH"/>
+                                        <constraint firstItem="gqy-Wp-U61" firstAttribute="centerY" secondItem="9eH-fh-he9" secondAttribute="centerY" id="RQq-cC-hhS"/>
+                                        <constraint firstItem="64o-IE-4ut" firstAttribute="top" secondItem="9eH-fh-he9" secondAttribute="top" id="RWk-dd-qEU"/>
+                                        <constraint firstItem="I6b-oY-jAA" firstAttribute="leading" secondItem="9eH-fh-he9" secondAttribute="leading" constant="8" id="ayE-lo-21I"/>
+                                        <constraint firstAttribute="bottom" secondItem="64o-IE-4ut" secondAttribute="bottom" id="mDx-OH-VUJ"/>
+                                        <constraint firstAttribute="trailing" secondItem="gqy-Wp-U61" secondAttribute="trailing" constant="8" id="s0L-UG-2ym"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="Q8R-va-r5O" firstAttribute="top" secondItem="cil-Yp-W4m" secondAttribute="top" id="4Lu-QM-3oW"/>
+                                <constraint firstAttribute="trailing" secondItem="9eH-fh-he9" secondAttribute="trailing" constant="16" id="JWu-YP-aZM"/>
+                                <constraint firstAttribute="height" constant="60" id="Lrc-kO-MT2"/>
+                                <constraint firstItem="9eH-fh-he9" firstAttribute="leading" secondItem="cil-Yp-W4m" secondAttribute="leading" constant="16" id="lWn-5V-t7Q"/>
+                                <constraint firstItem="Q8R-va-r5O" firstAttribute="leading" secondItem="cil-Yp-W4m" secondAttribute="leading" constant="16" id="sAk-Ld-Hto"/>
+                                <constraint firstItem="9eH-fh-he9" firstAttribute="top" secondItem="Q8R-va-r5O" secondAttribute="bottom" constant="8" id="tFk-9J-7Ij"/>
+                            </constraints>
+                        </customView>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="t8i-o1-Alp">
+                            <rect key="frame" x="16" y="16" width="218" height="32"/>
+                            <buttonCell key="cell" type="square" title="Convert" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="sfu-AN-zAL">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="mRK-kE-s49"/>
+                            </constraints>
+                            <connections>
+                                <action selector="convertAction:" target="-2" id="N5z-e7-7eC"/>
+                            </connections>
+                        </button>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="gRF-Pc-kIx">
+                            <rect key="frame" x="0.0" y="68" width="250" height="500"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="500" id="fCT-Hw-rqf"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="aCo-EM-LoA">
+                            <rect key="frame" x="0.0" y="644" width="250" height="50"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X6C-S7-N1h">
+                                    <rect key="frame" x="14" y="16" width="56" height="19"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Setting" id="ghU-cN-H8a">
+                                        <font key="font" metaFont="system" size="16"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="X6C-S7-N1h" firstAttribute="leading" secondItem="aCo-EM-LoA" secondAttribute="leading" constant="16" id="KpX-wb-lce"/>
+                                <constraint firstItem="X6C-S7-N1h" firstAttribute="centerY" secondItem="aCo-EM-LoA" secondAttribute="centerY" id="N47-q6-5c9"/>
+                                <constraint firstAttribute="height" constant="50" id="fju-hp-CaK"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="aCo-EM-LoA" firstAttribute="leading" secondItem="cxi-no-clx" secondAttribute="leading" id="0l6-lt-Qf2"/>
+                        <constraint firstAttribute="trailing" secondItem="aCo-EM-LoA" secondAttribute="trailing" id="2TU-Ih-xqh"/>
+                        <constraint firstItem="gRF-Pc-kIx" firstAttribute="leading" secondItem="cxi-no-clx" secondAttribute="leading" id="JSh-nv-K7B"/>
+                        <constraint firstItem="cil-Yp-W4m" firstAttribute="top" secondItem="aCo-EM-LoA" secondAttribute="bottom" id="MYd-LO-9to"/>
+                        <constraint firstItem="aCo-EM-LoA" firstAttribute="top" secondItem="cxi-no-clx" secondAttribute="top" id="Wq0-hj-ctB"/>
+                        <constraint firstAttribute="trailing" secondItem="t8i-o1-Alp" secondAttribute="trailing" constant="16" id="XKt-LD-gma"/>
+                        <constraint firstItem="gRF-Pc-kIx" firstAttribute="top" secondItem="cil-Yp-W4m" secondAttribute="bottom" constant="16" id="ca2-hc-4uo"/>
+                        <constraint firstItem="t8i-o1-Alp" firstAttribute="leading" secondItem="cxi-no-clx" secondAttribute="leading" constant="16" id="ji3-TU-J35"/>
+                        <constraint firstAttribute="trailing" secondItem="cil-Yp-W4m" secondAttribute="trailing" id="k3c-b6-9M0"/>
+                        <constraint firstAttribute="trailing" secondItem="gRF-Pc-kIx" secondAttribute="trailing" id="lfl-I0-MmQ"/>
+                        <constraint firstItem="cil-Yp-W4m" firstAttribute="leading" secondItem="cxi-no-clx" secondAttribute="leading" id="oVx-Sd-UWs"/>
+                        <constraint firstAttribute="bottom" secondItem="t8i-o1-Alp" secondAttribute="bottom" constant="16" id="pH3-GL-nOb"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="cxi-no-clx" secondAttribute="bottom" id="TtF-AU-hVb"/>
+                <constraint firstItem="cxi-no-clx" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="WlP-Je-gHS"/>
+                <constraint firstItem="cxi-no-clx" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="mt8-MX-1lT"/>
+                <constraint firstAttribute="trailing" secondItem="cxi-no-clx" secondAttribute="trailing" id="sup-lz-Vgv"/>
+            </constraints>
+            <point key="canvasLocation" x="-68" y="139"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="btn_arrow_gray_down_s_norm_on" width="12" height="12"/>
+    </resources>
+</document>

+ 146 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Model/KMBatchConvertPDFViewModel.swift

@@ -0,0 +1,146 @@
+//
+//  KMBatchConvertPDFViewModel.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/18.
+//
+
+import Cocoa
+
+//转换类型
+enum KMBatchConvertPDFType: String, CaseIterable {
+    case word = "Word"
+    case excel = "Excel"
+    case csv = "CSV"
+    case image = "Image"
+    case ppt = "PPT"
+    case rtf = "RTF"
+    case html = "HTML"
+    
+    static func allValues() -> [String] {
+        var array: [String] = []
+        for key in KMBatchConvertPDFType.allCases {
+            array.append(key.rawValue)
+        }
+        return array
+    }
+    
+    static func typeOfRawValue(_ rawValue: String) -> KMBatchConvertPDFType {
+        var type: KMBatchConvertPDFType = .word
+        switch rawValue {
+        case KMBatchConvertPDFType.word.rawValue:
+            type = .word
+        case KMBatchConvertPDFType.excel.rawValue:
+            type = .excel
+        case KMBatchConvertPDFType.csv.rawValue:
+            type = .csv
+        case KMBatchConvertPDFType.image.rawValue:
+            type = .image
+        case KMBatchConvertPDFType.ppt.rawValue:
+            type = .ppt
+        case KMBatchConvertPDFType.rtf.rawValue:
+            type = .rtf
+        case KMBatchConvertPDFType.html.rawValue:
+            type = .html
+        default:
+            type = .word
+        }
+        return type
+    }
+}
+
+enum KMBatchLayoutSettingType: String, CaseIterable {
+    case flowingText = "flowingText"
+    case pageLayout = "pageLayout"
+}
+
+//转换类型
+enum KMBatchConvertPDFExcelTablesType: String, CaseIterable {
+    case oneTable = "支持一个表格提取到单独的工作表"
+    case pageTable = "支持按页面提取表格到单独的工作表"
+    case allTable = "支持将所有表格提取到一个工作表"
+    
+    static func allValues() -> [String] {
+        var array: [String] = []
+        for key in KMBatchConvertPDFExcelTablesType.allCases {
+            array.append(key.rawValue)
+        }
+        return array
+    }
+    
+    static func typeOfRawValue(_ rawValue: String) -> KMBatchConvertPDFExcelTablesType {
+        var type: KMBatchConvertPDFExcelTablesType = .oneTable
+        switch rawValue {
+        case KMBatchConvertPDFExcelTablesType.oneTable.rawValue:
+            type = .oneTable
+        case KMBatchConvertPDFExcelTablesType.pageTable.rawValue:
+            type = .pageTable
+        case KMBatchConvertPDFExcelTablesType.allTable.rawValue:
+            type = .allTable
+        default:
+            type = .oneTable
+        }
+        return type
+    }
+}
+
+//转换类型
+enum KMBatchConvertPDFExcelSettingType: String, CaseIterable {
+    case separate = "Convert each page to a separate worksheet"
+    case format = "Convert all pages to one worksheet format"
+    case tables = "Only Table"
+    case text = "Only Text"
+    
+    static func allValues() -> [String] {
+        var array: [String] = []
+        for key in KMBatchConvertPDFExcelSettingType.allCases {
+            array.append(key.rawValue)
+        }
+        return array
+    }
+}
+
+//转换类型
+enum KMBatchConvertPDFImageType: String, CaseIterable {
+    case png = "PNG"
+    case jpg = "JPG"
+    case jpeg = "JPEG"
+    
+    static func allValues() -> [String] {
+        var array: [String] = []
+        for key in KMBatchConvertPDFImageType.allCases {
+            array.append(key.rawValue)
+        }
+        return array
+    }
+    
+    static func typeOfRawValue(_ rawValue: String) -> KMBatchConvertPDFImageType {
+        var type: KMBatchConvertPDFImageType = .jpeg
+        switch rawValue {
+        case KMBatchConvertPDFImageType.png.rawValue:
+            type = .png
+        case KMBatchConvertPDFImageType.jpg.rawValue:
+            type = .jpg
+        case KMBatchConvertPDFImageType.jpeg.rawValue:
+            type = .jpeg
+        default:
+            type = .png
+        }
+        return type
+    }
+}
+
+class KMBatchConvertPDFViewModel: KMBatchSettingItemViewModel {
+    var languageType: COCRLanguage = .english
+    var convertPDFType: KMBatchConvertPDFType = .word
+    var needRecognizeText: Bool = true
+    //word
+    var layoutSettingType: KMBatchLayoutSettingType = .flowingText
+    //excel
+    var excelSetting: KMBatchConvertPDFExcelSettingType = .separate
+    var excelTablesType: KMBatchConvertPDFExcelTablesType = .oneTable
+    //csv
+    var csvOnlyTables: Bool = false
+    //image
+    var imageType: KMBatchConvertPDFImageType = .jpeg
+}

+ 178 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Presenter/KMBatchConvertPDFViewPresenter.swift

@@ -0,0 +1,178 @@
+//
+//  KMBatchConvertPDFViewPresenter.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/18.
+//
+
+import Cocoa
+
+class KMBatchConvertPDFViewPresenter: NSObject {
+    lazy var modelData: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
+    var view: KMBatchConvertPDFView?
+    fileprivate weak var delegate: KMBatchConvertPDFViewPresenterDelegate?
+
+}
+
+extension KMBatchConvertPDFViewPresenter: KMBatchConvertPDFViewPresenterProtocol {
+    /**
+     初始化presenter
+     */
+    func initPresenter(view: NSView) {
+        self.delegate = (view as! any KMBatchConvertPDFViewPresenterDelegate)
+            
+    }
+    
+    func convertPDFTypeAction(string: String) {
+        self.modelData.convertPDFType = KMBatchConvertPDFType.typeOfRawValue(string)
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func retainFlowingTextAction(button: NSButton) {
+        self.modelData.layoutSettingType = .flowingText
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func retainPageLayoutAction(button: NSButton) {
+        self.modelData.layoutSettingType = .pageLayout
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func worksheetButtonAction(button: NSButton) {
+        self.modelData.excelSetting = .separate
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func formatButtonAction(button: NSButton) {
+        self.modelData.excelSetting = .format
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func onlyTablesButtonAction(button: NSButton) {
+        self.modelData.excelSetting = .tables
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func onlyTextButtonAction(button: NSButton) {
+        self.modelData.excelSetting = .text
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func tablesTypeAction(string: String) {
+        self.modelData.excelTablesType = KMBatchConvertPDFExcelTablesType.typeOfRawValue(string)
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func csvOnlyTablesButtonAction(button: NSButton) {
+        self.modelData.csvOnlyTables = (button.state == .on) ? true : false
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func imageTypeButtonAction(string: String) {
+        self.modelData.imageType = KMBatchConvertPDFImageType.typeOfRawValue(string)
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func needRecognizeTextAction() {
+        self.modelData.needRecognizeText = !self.modelData.needRecognizeText
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func recognizeTextLanguageAction(string: String) {
+        self.modelData.languageType = COCRLanguage.init(rawValue: 0)!
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    
+    func cleanAll() {
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func free() {
+        view = nil
+        delegate = nil
+    }
+}
+
+
+protocol KMBatchConvertPDFViewPresenterDelegate: AnyObject {
+    /**
+     @abstract 回调,返回处理后的数据<KMBatchProcessingViewModel>类型
+     @param presenter
+     @param data 返回数据
+     */
+    func showData(presenter: KMBatchConvertPDFViewPresenter, data: KMBatchConvertPDFViewModel)
+}
+
+protocol KMBatchConvertPDFViewPresenterProtocol {
+    /**
+     @abstract 绑定视图与数据
+     @param view 视图
+     @param data 资源 <KMBatchProcessingViewModel>类型
+     */
+    func initPresenter(view: NSView)
+    /**
+     @abstract 转换类型
+     */
+    func convertPDFTypeAction(string: String)
+    
+    //MARK: word
+    /**
+     @abstract  word布局设置
+     */
+    func retainFlowingTextAction(button: NSButton)
+    /**
+     @abstract  word布局设置
+     */
+    func retainPageLayoutAction(button: NSButton)
+    
+    //MARK: excel
+    /**
+     @abstract  excel设置
+     */
+    func worksheetButtonAction(button: NSButton)
+    /**
+     @abstract  excel设置
+     */
+    func formatButtonAction(button: NSButton)
+    /**
+     @abstract  excel设置
+     */
+    func onlyTablesButtonAction(button: NSButton)
+    /**
+     @abstract  excel设置
+     */
+    func onlyTextButtonAction(button: NSButton)
+    /**
+     @abstract  excel设置
+     */
+    func tablesTypeAction(string: String)
+    
+    //MARK: csv
+    func csvOnlyTablesButtonAction(button: NSButton)
+    
+    //MARK: image
+    func imageTypeButtonAction(string: String)
+    
+    /**
+     @abstract 文字识别
+     */
+    func recognizeTextLanguageAction(string: String)
+    
+    func needRecognizeTextAction()
+    /**
+     @abstract 解除绑定
+     */
+    func free()
+}

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

@@ -0,0 +1,19 @@
+//
+//  KMBatchConvertPDFItemView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/29.
+//
+
+import Cocoa
+
+class KMBatchConvertPDFItemView: BaseXibView {
+
+    var type: KMBatchConvertPDFType = .word
+    var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
+    var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
+    
+    func reloadData() {
+        
+    }
+}

+ 73 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.swift

@@ -0,0 +1,73 @@
+//
+//  KMBatchConverPDFCSVView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/1/30.
+//
+
+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)
+        }
+
+        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)
+    }
+    
+    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)
+    }
+}

+ 0 - 0
PDF Office/PDF Master/KMClass/NewBatch/View/Choose/ConvertPDF/Views/CSV/KMBatchConverPDFCSVView.xib


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff