Browse Source

【PDF工具 - 批量】Compress UI

lizhe 2 years ago
parent
commit
9035a0612f

+ 72 - 0
PDF Office/PDF Office.xcodeproj/project.pbxproj

@@ -1114,6 +1114,24 @@
 		ADC075EE2987A47E006C752F /* KMBatchConverPDFCSVView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC075ED2987A47E006C752F /* KMBatchConverPDFCSVView.xib */; };
 		ADC075EF2987A47E006C752F /* KMBatchConverPDFCSVView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC075ED2987A47E006C752F /* KMBatchConverPDFCSVView.xib */; };
 		ADC075F02987A47E006C752F /* KMBatchConverPDFCSVView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC075ED2987A47E006C752F /* KMBatchConverPDFCSVView.xib */; };
+		ADC075F82987EB9E006C752F /* KMBatchCompressViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC075F72987EB9E006C752F /* KMBatchCompressViewModel.swift */; };
+		ADC075F92987EB9E006C752F /* KMBatchCompressViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC075F72987EB9E006C752F /* KMBatchCompressViewModel.swift */; };
+		ADC075FA2987EB9E006C752F /* KMBatchCompressViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC075F72987EB9E006C752F /* KMBatchCompressViewModel.swift */; };
+		ADC076022987EF69006C752F /* sfprotextheavy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FD2987EF69006C752F /* sfprotextheavy.ttf */; };
+		ADC076032987EF69006C752F /* sfprotextheavy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FD2987EF69006C752F /* sfprotextheavy.ttf */; };
+		ADC076042987EF69006C752F /* sfprotextheavy.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FD2987EF69006C752F /* sfprotextheavy.ttf */; };
+		ADC076052987EF69006C752F /* sfprodisplayregular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FE2987EF69006C752F /* sfprodisplayregular.ttf */; };
+		ADC076062987EF69006C752F /* sfprodisplayregular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FE2987EF69006C752F /* sfprodisplayregular.ttf */; };
+		ADC076072987EF69006C752F /* sfprodisplayregular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FE2987EF69006C752F /* sfprodisplayregular.ttf */; };
+		ADC076082987EF69006C752F /* sfprodisplaybold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FF2987EF69006C752F /* sfprodisplaybold.ttf */; };
+		ADC076092987EF69006C752F /* sfprodisplaybold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FF2987EF69006C752F /* sfprodisplaybold.ttf */; };
+		ADC0760A2987EF69006C752F /* sfprodisplaybold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC075FF2987EF69006C752F /* sfprodisplaybold.ttf */; };
+		ADC0760B2987EF69006C752F /* sfprotextsemibold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC076002987EF69006C752F /* sfprotextsemibold.ttf */; };
+		ADC0760C2987EF69006C752F /* sfprotextsemibold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC076002987EF69006C752F /* sfprotextsemibold.ttf */; };
+		ADC0760D2987EF69006C752F /* sfprotextsemibold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC076002987EF69006C752F /* sfprotextsemibold.ttf */; };
+		ADC0760E2987EF69006C752F /* sfprotextmedium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC076012987EF69006C752F /* sfprotextmedium.ttf */; };
+		ADC0760F2987EF69006C752F /* sfprotextmedium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC076012987EF69006C752F /* sfprotextmedium.ttf */; };
+		ADC076102987EF69006C752F /* sfprotextmedium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = ADC076012987EF69006C752F /* sfprotextmedium.ttf */; };
 		ADC25DF92923BA710080A3F6 /* KMImageToPDFWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC25DF72923BA710080A3F6 /* KMImageToPDFWindowController.swift */; };
 		ADC25DFA2923BA710080A3F6 /* KMImageToPDFWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC25DF72923BA710080A3F6 /* KMImageToPDFWindowController.swift */; };
 		ADC25DFB2923BA710080A3F6 /* KMImageToPDFWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC25DF72923BA710080A3F6 /* KMImageToPDFWindowController.swift */; };
@@ -2710,6 +2728,12 @@
 		ADC075E4298766E6006C752F /* KMBatchConverPDFImageView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchConverPDFImageView.xib; sourceTree = "<group>"; };
 		ADC075E92987A38C006C752F /* KMBatchConverPDFCSVView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchConverPDFCSVView.swift; sourceTree = "<group>"; };
 		ADC075ED2987A47E006C752F /* KMBatchConverPDFCSVView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchConverPDFCSVView.xib; sourceTree = "<group>"; };
+		ADC075F72987EB9E006C752F /* KMBatchCompressViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMBatchCompressViewModel.swift; sourceTree = "<group>"; };
+		ADC075FD2987EF69006C752F /* sfprotextheavy.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = sfprotextheavy.ttf; sourceTree = "<group>"; };
+		ADC075FE2987EF69006C752F /* sfprodisplayregular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = sfprodisplayregular.ttf; sourceTree = "<group>"; };
+		ADC075FF2987EF69006C752F /* sfprodisplaybold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = sfprodisplaybold.ttf; sourceTree = "<group>"; };
+		ADC076002987EF69006C752F /* sfprotextsemibold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = sfprotextsemibold.ttf; sourceTree = "<group>"; };
+		ADC076012987EF69006C752F /* sfprotextmedium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = sfprotextmedium.ttf; sourceTree = "<group>"; };
 		ADC25DF72923BA710080A3F6 /* KMImageToPDFWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMImageToPDFWindowController.swift; sourceTree = "<group>"; };
 		ADC25DF82923BA710080A3F6 /* KMImageToPDFWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMImageToPDFWindowController.xib; sourceTree = "<group>"; };
 		ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingColumnHeaderCell.swift; sourceTree = "<group>"; };
@@ -4251,6 +4275,7 @@
 		ADB1FE662975212300ED072D /* Compress */ = {
 			isa = PBXGroup;
 			children = (
+				ADC075F62987EB9E006C752F /* Model */,
 				ADB1FE7529752F0900ED072D /* KMBatchCompressView.swift */,
 				ADB1FE7929752F1100ED072D /* KMBatchCompressView.xib */,
 			);
@@ -4438,6 +4463,34 @@
 			path = CSV;
 			sourceTree = "<group>";
 		};
+		ADC075F62987EB9E006C752F /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				ADC075F72987EB9E006C752F /* KMBatchCompressViewModel.swift */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		ADC075FB2987EF41006C752F /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				ADC075FC2987EF4B006C752F /* Font */,
+			);
+			path = Source;
+			sourceTree = "<group>";
+		};
+		ADC075FC2987EF4B006C752F /* Font */ = {
+			isa = PBXGroup;
+			children = (
+				ADC075FF2987EF69006C752F /* sfprodisplaybold.ttf */,
+				ADC075FE2987EF69006C752F /* sfprodisplayregular.ttf */,
+				ADC075FD2987EF69006C752F /* sfprotextheavy.ttf */,
+				ADC076012987EF69006C752F /* sfprotextmedium.ttf */,
+				ADC076002987EF69006C752F /* sfprotextsemibold.ttf */,
+			);
+			path = Font;
+			sourceTree = "<group>";
+		};
 		ADC25DF12923BA0D0080A3F6 /* ImageToPDF */ = {
 			isa = PBXGroup;
 			children = (
@@ -5589,6 +5642,7 @@
 				9F1FE3F3293F4F0F00E952CA /* Info.plist */,
 				BBFBE6BD28DD7B97008B2335 /* AppDelegate.swift */,
 				BBFBE6BF28DD7B97008B2335 /* ViewController.swift */,
+				ADC075FB2987EF41006C752F /* Source */,
 				89752DA22936ECD5003FF08E /* Third Pard Library */,
 				BB2C6A7128F2652500478A33 /* Class */,
 				BBFBE6C128DD7B98008B2335 /* Assets.xcassets */,
@@ -6131,8 +6185,10 @@
 				9FDD0F67294AB645000C4DAD /* KMMainViewController.xib in Resources */,
 				ADB2D6E9294740F30029D2B3 /* KMPrintPaperSetWindowController.xib in Resources */,
 				8997012228F41AB8009AF911 /* KMLeftSideViewController.xib in Resources */,
+				ADC076022987EF69006C752F /* sfprotextheavy.ttf in Resources */,
 				ADD1B6F02946C06C00C3FFF7 /* KMPrintChoosePageSizeSizeView.xib in Resources */,
 				BBFE6E602930809A00142C01 /* KMMergeCollectionPageViewItem.xib in Resources */,
+				ADC076082987EF69006C752F /* sfprodisplaybold.ttf in Resources */,
 				BBFBE6C228DD7B98008B2335 /* Assets.xcassets in Resources */,
 				9F1FE4DE29406E4700E952CA /* .gclient in Resources */,
 				ADB1FE2B297006DF00ED072D /* KMBatchWindowController.xib in Resources */,
@@ -6158,6 +6214,7 @@
 				89316855296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
 				89752E072939DB42003FF08E /* KMToolbarViewController.xib in Resources */,
 				BBC3483E2955A60B008D2CD1 /* KMBackgroundPropertyInfoController.xib in Resources */,
+				ADC0760B2987EF69006C752F /* sfprotextsemibold.ttf in Resources */,
 				BBFE6E822930EBD400142C01 /* KMCompressWindowController.xib in Resources */,
 				ADC25DFC2923BA710080A3F6 /* KMImageToPDFWindowController.xib in Resources */,
 				AD4B4550294072B90076FA14 /* KMOCRWindowController.xib in Resources */,
@@ -6289,6 +6346,7 @@
 				9FDD0FA22952FF4D000C4DAD /* $themes.json in Resources */,
 				89D2D2B62947316900BFF5FE /* Quick Start Guide_Widget_Widget.pdf in Resources */,
 				ADCB98CD2924743300B51A03 /* KMBatchProcessingView.xib in Resources */,
+				ADC0760E2987EF69006C752F /* sfprotextmedium.ttf in Resources */,
 				AD4B456C294092160076FA14 /* KMOCRChooseView.xib in Resources */,
 				BBFE6E702930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				BB8F4552295A9FA50037EA22 /* KMCreateHeaderFooterController.xib in Resources */,
@@ -6316,6 +6374,7 @@
 				9F0CB49A29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				ADB1FEB2297543CF00ED072D /* KMBatchSettingView.xib in Resources */,
 				89DB5DAA291B8DE70029624F /* KMOutlineEditViewController.xib in Resources */,
+				ADC076052987EF69006C752F /* sfprodisplayregular.ttf in Resources */,
 				ADCB98FD292750A200B51A03 /* KMBatchProcessingTableView.xib in Resources */,
 				9FBA0F0129015A82001117AF /* KMFastToolCollectionViewItem.xib in Resources */,
 				BBFBE6C528DD7B98008B2335 /* Main.storyboard in Resources */,
@@ -6372,6 +6431,7 @@
 				89752E082939DB42003FF08E /* KMToolbarViewController.xib in Resources */,
 				89D2D2B72947316900BFF5FE /* Quick Start Guide_Widget_Widget.pdf in Resources */,
 				ADCB98CE2924743300B51A03 /* KMBatchProcessingView.xib in Resources */,
+				ADC076062987EF69006C752F /* sfprodisplayregular.ttf in Resources */,
 				BB4EEF3129763EE7003A3537 /* KMRedactBaseWindowController.xib in Resources */,
 				BBFE6E792930E53000142C01 /* KMMergePopoverViewController.xib in Resources */,
 				9FDD0F972952FF4D000C4DAD /* $metadata.json in Resources */,
@@ -6385,6 +6445,7 @@
 				F3A9DC82294309D80074E5D2 /* CPDFListEditAnnotationViewController.xib in Resources */,
 				8942F7F42926087200389627 /* KMSearchViewController.xib in Resources */,
 				9FAAA336290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
+				ADC0760F2987EF69006C752F /* sfprotextmedium.ttf in Resources */,
 				BBAFC8402985194800D0648E /* KMPDFEditAppendWindow.xib in Resources */,
 				F3B7DF9E2948565000333201 /* CPDFListHoverAnnotationViewController.xib in Resources */,
 				BBC3481029558DC1008D2CD1 /* KMBackgroundController.xib in Resources */,
@@ -6409,6 +6470,7 @@
 				ADB2D6F3294741720029D2B3 /* KMPrintPaperSetView.xib in Resources */,
 				ADCB98DE2924775B00B51A03 /* KMBatchProcessingOrderTableCell.xib in Resources */,
 				BB6DD81029347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
+				ADC076032987EF69006C752F /* sfprotextheavy.ttf in Resources */,
 				ADB1FEA32975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
 				89E4E7302963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
 				ADE614B229779C6D00F62ED7 /* KMImageTitleButton.xib in Resources */,
@@ -6490,6 +6552,7 @@
 				ADD1B6D029431D7100C3FFF7 /* KMPrintPreviewView.xib in Resources */,
 				9F853A062947137500DF644E /* newtab_h.pdf in Resources */,
 				ADC075DE29876622006C752F /* KMBatchConverPDFPPTView.xib in Resources */,
+				ADC0760C2987EF69006C752F /* sfprotextsemibold.ttf in Resources */,
 				ADC075EF2987A47E006C752F /* KMBatchConverPDFCSVView.xib in Resources */,
 				9F8DDF312924B855006CDC73 /* KMPDFToolsViewController.xib in Resources */,
 				9F853A002947137500DF644E /* throbber.png in Resources */,
@@ -6520,6 +6583,7 @@
 				BB8B17372907B64D001C5EA5 /* CipherTextView.xib in Resources */,
 				89E9B3FA295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib in Resources */,
 				9F853A032947137500DF644E /* default-icon.pdf in Resources */,
+				ADC076092987EF69006C752F /* sfprodisplaybold.ttf in Resources */,
 				BBC348182955920B008D2CD1 /* KMBackgroundPropertyController.xib in Resources */,
 				BB3EAEB1293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */,
 				9F8539E8294712D600DF644E /* KMChromiumTabContents.xib in Resources */,
@@ -6592,6 +6656,7 @@
 				BBFE6E6A293097A600142C01 /* KMPageRangePickerWindowController.xib in Resources */,
 				BBC34821295593F0008D2CD1 /* KMBackgroundListController.xib in Resources */,
 				ADD1B6FA2946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
+				ADC076072987EF69006C752F /* sfprodisplayregular.ttf in Resources */,
 				BBFE6E722930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				AD9527B429503D620039D2BC /* Untitled.pdf in Resources */,
 				BB5DF1F62959C9F00025CDA1 /* KMHeaderFooterController.xib in Resources */,
@@ -6613,6 +6678,7 @@
 				BB7507EE29861C37002DBDB1 /* PasswordWindowController.xib in Resources */,
 				BBC348402955A60B008D2CD1 /* KMBackgroundPropertyInfoController.xib in Resources */,
 				9FDD0F9E2952FF4D000C4DAD /* comp-light.json in Resources */,
+				ADC0760A2987EF69006C752F /* sfprodisplaybold.ttf in Resources */,
 				ADB1FEA42975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
 				ADC075D529875F6A006C752F /* KMBatchConverPDFExcelView.xib in Resources */,
 				9F8539E9294712D600DF644E /* KMChromiumTabContents.xib in Resources */,
@@ -6656,6 +6722,7 @@
 				9F1FE4E029406E4700E952CA /* .gclient in Resources */,
 				ADCB98EF2924779800B51A03 /* KMBatchProcessingStateTableCell.xib in Resources */,
 				BB897233294B08DE0045787C /* KMWatermarkViewController.xib in Resources */,
+				ADC076042987EF69006C752F /* sfprotextheavy.ttf in Resources */,
 				9F0CB4BA2977BC1000007028 /* KMPropertiesPanelPreviewSubVC.xib in Resources */,
 				9FA607E328FD4C9F00B46586 /* KMHomePopViewController.xib in Resources */,
 				AD44D658292C9E8C00A94554 /* KMImageToPDFChooseView.xib in Resources */,
@@ -6669,6 +6736,7 @@
 				9F0CB4C22977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */,
 				BBFE6E842930EBD400142C01 /* KMCompressWindowController.xib in Resources */,
 				ADCB98E72924777A00B51A03 /* KMBatchProcessingSizeTableCell.xib in Resources */,
+				ADC076102987EF69006C752F /* sfprotextmedium.ttf in Resources */,
 				8997013028F42F15009AF911 /* Biochemistry.pdf in Resources */,
 				9F8539DC294318D600DF644E /* TabsImage.xcassets in Resources */,
 				BBC745EF295F067B0072C2ED /* KMCropSettingWindowController.xib in Resources */,
@@ -6689,6 +6757,7 @@
 				89D9897128FD50EF003A3E87 /* KMAnnotationCollectionViewItem.xib in Resources */,
 				9F1FE4E929406E4700E952CA /* COPYING in Resources */,
 				ADCB98D72924772200B51A03 /* KMBatchProcessingNameTableCell.xib in Resources */,
+				ADC0760D2987EF69006C752F /* sfprotextsemibold.ttf in Resources */,
 				BBEC00B4295C2AF300A26C98 /* KMBatesPreviewController.xib in Resources */,
 				89D2D2B82947316900BFF5FE /* Quick Start Guide_Widget_Widget.pdf in Resources */,
 				8997010328F40710009AF911 /* KMBookMarkViewController.xib in Resources */,
@@ -7238,6 +7307,7 @@
 				9F8DDF342924DA6B006CDC73 /* KMPDFToolsCollectionView.swift in Sources */,
 				BB99ACC2292DE22E0048AFD9 /* KMMergeViewController.swift in Sources */,
 				AD4B455629408CB00076FA14 /* KMOCRChooseView.swift in Sources */,
+				ADC075F82987EB9E006C752F /* KMBatchCompressViewModel.swift in Sources */,
 				BBEC00B7295C2C1600A26C98 /* KMBatesPropertyHomeController.swift in Sources */,
 				9F78EFC228F7E395001E66F4 /* KMHomeViewController+Action.swift in Sources */,
 				BB8F4576295AFA2D0037EA22 /* KMHeaderFooterAdjectiveInfoBaseView.swift in Sources */,
@@ -7776,6 +7846,7 @@
 				BB86C20B28F5569F005AD968 /* NSGeometry_SKExtensions.m in Sources */,
 				BB49ECDE293EED6100C82CA2 /* KMConvertWordWindowController.swift in Sources */,
 				BB6B4C09292F53CE0071CA06 /* KMMergeFileModel.swift in Sources */,
+				ADC075F92987EB9E006C752F /* KMBatchCompressViewModel.swift in Sources */,
 				BBEC00B8295C2C1600A26C98 /* KMBatesPropertyHomeController.swift in Sources */,
 				9F1F82B5292DEF370092C4B4 /* KMCloudDocumentsViewController.swift in Sources */,
 				BB8F4577295AFA2D0037EA22 /* KMHeaderFooterAdjectiveInfoBaseView.swift in Sources */,
@@ -7965,6 +8036,7 @@
 				BBB14A6529792D6900936EDB /* KMRedactPageRangeContentView.swift in Sources */,
 				9FDD0F8A2952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
 				9FA607DB28F8227500B46586 /* KMBox.swift in Sources */,
+				ADC075FA2987EB9E006C752F /* KMBatchCompressViewModel.swift in Sources */,
 				89D2D2E4294C452B00BFF5FE /* KMPDFThumbnailView.swift in Sources */,
 				9F1F82B6292DEF370092C4B4 /* KMCloudDocumentsViewController.swift in Sources */,
 				9F8539D82943180000DF644E /* KMTabAppearance.swift in Sources */,

+ 70 - 4
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.swift

@@ -10,7 +10,14 @@ import Cocoa
 class KMBatchCompressView: KMBatchSettingItemView {
 
     @IBOutlet var contentView: NSView!
-
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var largeButton: KMImageTitleButton!
+    @IBOutlet weak var standardButton: KMImageTitleButton!
+    @IBOutlet weak var smallButton: KMImageTitleButton!
+    @IBOutlet weak var minimumButton: KMImageTitleButton!
+    
+    var model: KMBatchCompressViewModel = KMBatchCompressViewModel()
+    
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
 
@@ -32,8 +39,8 @@ class KMBatchCompressView: KMBatchSettingItemView {
     
     private func initContentView() {
         //绑定xib
-        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
-                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        let resource = NSNib(nibNamed: String(describing: KMBatchCompressView.self),
+                             bundle: Bundle(for: KMBatchCompressView.self))!
         resource.instantiate(withOwner: self, topLevelObjects: nil)
         addSubview(contentView)
         contentView.translatesAutoresizingMaskIntoConstraints = false
@@ -46,7 +53,31 @@ class KMBatchCompressView: KMBatchSettingItemView {
     }
     
     func setup() {
-
+        self.titleLabel.stringValue = NSLocalizedString("Optimization Options", comment: "")
+        
+        self.largeButton.title = NSLocalizedString("Large File Size", comment: "")
+        self.largeButton.imageName = "btn_radio_unsel_on"
+        self.largeButton.action = { [unowned self] (view, button) in
+//            self.presenter.csvOnlyTablesButtonAction(button: button)
+        }
+        
+        self.standardButton.title = NSLocalizedString("Standard File Size", comment: "")
+        self.standardButton.imageName = "btn_radio_unsel_on"
+        self.standardButton.action = { [unowned self] (view, button) in
+//            self.presenter.csvOnlyTablesButtonAction(button: button)
+        }
+        
+        self.smallButton.title = NSLocalizedString("Small File Size", comment: "")
+        self.smallButton.imageName = "btn_radio_unsel_on"
+        self.smallButton.action = { [unowned self] (view, button) in
+//            self.presenter.csvOnlyTablesButtonAction(button: button)
+        }
+        
+        self.minimumButton.title = NSLocalizedString("Minimum File Size", comment: "")
+        self.minimumButton.imageName = "btn_radio_unsel_on"
+        self.minimumButton.action = { [unowned self] (view, button) in
+//            self.presenter.csvOnlyTablesButtonAction(button: button)
+        }
     }
     
     func reloadData() {
@@ -54,3 +85,38 @@ class KMBatchCompressView: KMBatchSettingItemView {
     }
     
 }
+
+protocol KMBatchCompressViewAction {}
+
+extension KMBatchCompressView: KMBatchCompressViewAction {
+    func action() {
+        let panel = NSSavePanel()
+//        panel.nameFieldStringValue = "[新文件]" + documentURL.lastPathComponent
+        let button = NSButton.init(checkboxWithTitle: "保存后打开文档", target: nil, action: nil)
+        button.state = .on
+        panel.accessoryView = button
+        panel.isExtensionHidden = true
+        panel.beginSheetModal(for: self.window!) { [self] response in
+            if response == .OK {
+                for item in self.filesData {
+                    let url = panel.url
+                    let docuemt = CPDFDocument.init(url: URL(fileURLWithPath: item.filePath))
+//                    if (docuemt?.isLocked)! && password != nil {
+//                        docuemt?.unlock(withPassword: password)
+//                    }
+                    
+                    var option = 120
+//                    if self.selectIndex == 0 {
+//                        option = 30
+//                    } else if self.selectIndex == 1 {
+//                        option = 60
+//                    } else if self.selectIndex == 2 {
+//                        option = 90
+//                    }
+                    docuemt?.writeOptimize(to: url, withOptions: [.imageQualityOption : option])
+                }
+                NSWorkspace.shared.activateFileViewerSelecting([panel.url!])
+            }
+        }
+    }
+}

+ 82 - 2
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.xib

@@ -9,14 +9,94 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMBatchCompressView" customModule="PDF_Office" customModuleProvider="target">
             <connections>
                 <outlet property="contentView" destination="c22-O7-iKe" id="DvX-AD-fHv"/>
+                <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="titleLabel" destination="6xI-ma-ajz" id="aiT-Dl-U0L"/>
             </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="480" height="272"/>
+            <rect key="frame" x="0.0" y="0.0" width="244" height="510"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <point key="canvasLocation" x="-33" y="114"/>
+            <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="370" 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>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="tyn-c5-gGM" firstAttribute="leading" secondItem="rGV-y0-v2C" secondAttribute="leading" id="2pM-jM-w43"/>
+                        <constraint firstItem="tyn-c5-gGM" firstAttribute="top" secondItem="rGV-y0-v2C" secondAttribute="top" id="BPL-gs-MmS"/>
+                        <constraint firstAttribute="trailing" secondItem="tyn-c5-gGM" secondAttribute="trailing" id="CGS-Ld-eg3"/>
+                    </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 Office/Class/PDFTools/Batch/View/Choose/Compress/Model/KMBatchCompressViewModel.swift

@@ -0,0 +1,26 @@
+//
+//  KMBatchCompressViewModel.swift
+//  PDF Office
+//
+//  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: NSObject {
+    var type: KMBatchCompressOptimizationType = .standard
+}

+ 21 - 2
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConvertPDF/Model/KMBatchConvertPDFViewModel.swift

@@ -22,6 +22,25 @@ enum KMBatchConvertPDFType: String, CaseIterable {
         }
         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
+        default:
+            type = .word
+        }
+        return type
+    }
 }
 
 enum KMBatchLayoutSettingType: String, CaseIterable {
@@ -43,7 +62,7 @@ enum KMBatchConvertPDFExcelTablesType: String, CaseIterable {
         return array
     }
     
-    static func fetchType(_ rawValue: String) -> KMBatchConvertPDFExcelTablesType {
+    static func typeOfRawValue(_ rawValue: String) -> KMBatchConvertPDFExcelTablesType {
         var type: KMBatchConvertPDFExcelTablesType = .oneTable
         switch rawValue {
         case KMBatchConvertPDFExcelTablesType.oneTable.rawValue:
@@ -89,7 +108,7 @@ enum KMBatchConvertPDFImageType: String, CaseIterable {
         return array
     }
     
-    static func fetchType(_ rawValue: String) -> KMBatchConvertPDFImageType {
+    static func typeOfRawValue(_ rawValue: String) -> KMBatchConvertPDFImageType {
         var type: KMBatchConvertPDFImageType = .jpeg
         switch rawValue {
         case KMBatchConvertPDFImageType.png.rawValue:

+ 4 - 20
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConvertPDF/Presenter/KMBatchConvertPDFViewPresenter.swift

@@ -24,23 +24,7 @@ extension KMBatchConvertPDFViewPresenter: KMBatchConvertPDFViewPresenterProtocol
     }
     
     func convertPDFTypeAction(string: String) {
-        var type: KMBatchConvertPDFType = .word
-        switch string {
-        case KMBatchConvertPDFType.word.rawValue:
-            type = .word
-        case KMBatchConvertPDFType.excel.rawValue:
-            type = .excel
-        case KMBatchConvertPDFType.ppt.rawValue:
-            type = .ppt
-        case KMBatchConvertPDFType.csv.rawValue:
-            type = .csv
-        case KMBatchConvertPDFType.image.rawValue:
-            type = .image
-        default:
-            print("未找到")
-        }
-        
-        self.modelData.convertPDFType = type
+        self.modelData.convertPDFType = KMBatchConvertPDFType.typeOfRawValue(string)
         self.delegate?.showData(presenter: self, data: self.modelData)
     }
     
@@ -81,7 +65,7 @@ extension KMBatchConvertPDFViewPresenter: KMBatchConvertPDFViewPresenterProtocol
     }
     
     func tablesTypeAction(string: String) {
-        self.modelData.excelTablesType = KMBatchConvertPDFExcelTablesType.fetchType(string)
+        self.modelData.excelTablesType = KMBatchConvertPDFExcelTablesType.typeOfRawValue(string)
         
         self.delegate?.showData(presenter: self, data: self.modelData)
     }
@@ -93,7 +77,7 @@ extension KMBatchConvertPDFViewPresenter: KMBatchConvertPDFViewPresenterProtocol
     }
     
     func imageTypeButtonAction(string: String) {
-        self.modelData.imageType = KMBatchConvertPDFImageType.fetchType(string)
+        self.modelData.imageType = KMBatchConvertPDFImageType.typeOfRawValue(string)
         
         self.delegate?.showData(presenter: self, data: self.modelData)
     }
@@ -105,7 +89,7 @@ extension KMBatchConvertPDFViewPresenter: KMBatchConvertPDFViewPresenterProtocol
     }
     
     func recognizeTextLanguageAction(string: String) {
-        self.modelData.languageType = KMOCRLanguageType.fetchType(string)
+        self.modelData.languageType = KMOCRLanguageType.typeOfRawValue(string)
         
         self.delegate?.showData(presenter: self, data: self.modelData)
     }

+ 3 - 3
PDF Office/PDF Office/Class/PDFTools/Compress/Controller/KMCompressWindowController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21225" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21225"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -22,7 +22,7 @@
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="580" height="470"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="875"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
             <value key="minSize" type="size" width="580" height="470"/>
             <value key="maxSize" type="size" width="580" height="470"/>
             <view key="contentView" id="se5-gp-TjO">

+ 1 - 1
PDF Office/PDF Office/Class/PDFTools/OCR/Model/KMOCRModel.swift

@@ -41,7 +41,7 @@ enum KMOCRLanguageType: String, CaseIterable {
         return array
     }
     
-    static func fetchType(_ rawValue: String) -> KMOCRLanguageType {
+    static func typeOfRawValue(_ rawValue: String) -> KMOCRLanguageType {
         var type: KMOCRLanguageType = .english
         switch rawValue {
         case KMOCRLanguageType.english.rawValue:

+ 1 - 1
PDF Office/PDF Office/PDF Office-Bridging-Header.h

@@ -26,7 +26,7 @@
 #import "CPDFListView+Public.h"
 #import "KMGeneralAnnotationViewController.h"
 #import "KMAnnotationPropertiesViewController.h"
-#import "KMDocumentAIViewController.h"
+//#import "KMDocumentAIViewController.h"
 
 #import "CPDFListView+Tool.h"
 #import "NSBitmapImageRep_SKExtensions.h"