فهرست منبع

【PDF工具 - 批量】Convert PDF UI

lizhe 2 سال پیش
والد
کامیت
ba8d09f174
47فایلهای تغییر یافته به همراه1196 افزوده شده و 253 حذف شده
  1. 48 8
      PDF Office/PDF Office.xcodeproj/project.pbxproj
  2. 67 51
      PDF Office/PDF Office.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  3. 1 1
      PDF Office/PDF Office/AppDelegate.swift
  4. 4 0
      PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.swift
  5. 65 2
      PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.xib
  6. 0 149
      PDF Office/PDF Office/Class/PDFTools/Batch/Source/Batch_ic.pdf
  7. 6 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift
  8. 1 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Model/KMBatchCollectionViewModel.swift
  9. 4 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Presenter/KMBatchCollectionViewPrensenter.swift
  10. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.swift
  11. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.xib
  12. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.swift
  13. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.xib
  14. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.swift
  15. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.xib
  16. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.swift
  17. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.xib
  18. 37 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.swift
  19. 321 3
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.xib
  20. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Header&Footer/KMBatchHeaderAndFooterView.swift
  21. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Header&Footer/KMBatchHeaderAndFooterView.xib
  22. 20 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchBatchSettingItemView/KMBatchBatchSettingItemView.swift
  23. 125 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchSettingView.swift
  24. 22 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchSettingView.xib
  25. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.swift
  26. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.xib
  27. 39 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.swift
  28. 5 1
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.xib
  29. 12 6
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/KMBatchProcessingView.swift
  30. 16 1
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift
  31. 11 12
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.xib
  32. 38 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingColumnHeaderCell.swift
  33. 2 2
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingDeleteTableCell.xib
  34. 3 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingNameTableCell.swift
  35. 13 2
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingNameTableCell.xib
  36. 6 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMImageToPDFChooseView/KMImageToPDFChooseView.swift
  37. 6 0
      PDF Office/PDF Office/Class/PDFTools/OCR/View/KMOCRChooseView/KMOCRChooseView.swift
  38. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/BottomView/KMPrintBottomView.swift
  39. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/KMPrintChooseView.swift
  40. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/KMPrintChoosePageSizeView.swift
  41. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizeMultipageView.swift
  42. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizePamphletView.swift
  43. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizePosterView.swift
  44. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizeSizeView.swift
  45. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/PaperSet/View/KMPrintPaperSetView.swift
  46. 6 0
      PDF Office/PDF Office/Class/PDFTools/Print/View/Preview/KMPrintPreviewView.swift
  47. 6 0
      PDF Office/PDF Office/Class/PDFTools/Tools/KMTextFieldStepperView/KMTextFieldStepperView.swift

+ 48 - 8
PDF Office/PDF Office.xcodeproj/project.pbxproj

@@ -874,9 +874,6 @@
 		ADB1FE482970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE472970264500ED072D /* KMBatchCollectionViewPrensenter.swift */; };
 		ADB1FE492970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE472970264500ED072D /* KMBatchCollectionViewPrensenter.swift */; };
 		ADB1FE4A2970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE472970264500ED072D /* KMBatchCollectionViewPrensenter.swift */; };
-		ADB1FE4D2972958B00ED072D /* Batch_ic.pdf in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE4C2972958B00ED072D /* Batch_ic.pdf */; };
-		ADB1FE4E2972958B00ED072D /* Batch_ic.pdf in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE4C2972958B00ED072D /* Batch_ic.pdf */; };
-		ADB1FE4F2972958B00ED072D /* Batch_ic.pdf in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE4C2972958B00ED072D /* Batch_ic.pdf */; };
 		ADB1FE5D2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE5C2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift */; };
 		ADB1FE5E2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE5C2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift */; };
 		ADB1FE5F2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE5C2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift */; };
@@ -931,6 +928,15 @@
 		ADB1FEAA2975310A00ED072D /* KMBatchBatchRemoveView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEA92975310A00ED072D /* KMBatchBatchRemoveView.xib */; };
 		ADB1FEAB2975310A00ED072D /* KMBatchBatchRemoveView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEA92975310A00ED072D /* KMBatchBatchRemoveView.xib */; };
 		ADB1FEAC2975310A00ED072D /* KMBatchBatchRemoveView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEA92975310A00ED072D /* KMBatchBatchRemoveView.xib */; };
+		ADB1FEAE297543C000ED072D /* KMBatchSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEAD297543C000ED072D /* KMBatchSettingView.swift */; };
+		ADB1FEAF297543C000ED072D /* KMBatchSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEAD297543C000ED072D /* KMBatchSettingView.swift */; };
+		ADB1FEB0297543C000ED072D /* KMBatchSettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEAD297543C000ED072D /* KMBatchSettingView.swift */; };
+		ADB1FEB2297543CF00ED072D /* KMBatchSettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEB1297543CF00ED072D /* KMBatchSettingView.xib */; };
+		ADB1FEB3297543CF00ED072D /* KMBatchSettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEB1297543CF00ED072D /* KMBatchSettingView.xib */; };
+		ADB1FEB4297543CF00ED072D /* KMBatchSettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEB1297543CF00ED072D /* KMBatchSettingView.xib */; };
+		ADB1FEB729754F9D00ED072D /* KMBatchBatchSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEB629754F9D00ED072D /* KMBatchBatchSettingItemView.swift */; };
+		ADB1FEB829754F9D00ED072D /* KMBatchBatchSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEB629754F9D00ED072D /* KMBatchBatchSettingItemView.swift */; };
+		ADB1FEB929754F9D00ED072D /* KMBatchBatchSettingItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEB629754F9D00ED072D /* KMBatchBatchSettingItemView.swift */; };
 		ADB2D6E6294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB2D6E4294740F30029D2B3 /* KMPrintPaperSetWindowController.swift */; };
 		ADB2D6E7294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB2D6E4294740F30029D2B3 /* KMPrintPaperSetWindowController.swift */; };
 		ADB2D6E8294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB2D6E4294740F30029D2B3 /* KMPrintPaperSetWindowController.swift */; };
@@ -958,6 +964,12 @@
 		ADC25DFC2923BA710080A3F6 /* KMImageToPDFWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC25DF82923BA710080A3F6 /* KMImageToPDFWindowController.xib */; };
 		ADC25DFD2923BA710080A3F6 /* KMImageToPDFWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC25DF82923BA710080A3F6 /* KMImageToPDFWindowController.xib */; };
 		ADC25DFE2923BA710080A3F6 /* KMImageToPDFWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC25DF82923BA710080A3F6 /* KMImageToPDFWindowController.xib */; };
+		ADC6FC19297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */; };
+		ADC6FC1A297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */; };
+		ADC6FC1B297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */; };
+		ADC6FC592976953900D7C274 /* Batch.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ADC6FC582976953900D7C274 /* Batch.xcassets */; };
+		ADC6FC5A2976953900D7C274 /* Batch.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ADC6FC582976953900D7C274 /* Batch.xcassets */; };
+		ADC6FC5B2976953900D7C274 /* Batch.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ADC6FC582976953900D7C274 /* Batch.xcassets */; };
 		ADCB98C1292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADCB98C0292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift */; };
 		ADCB98C2292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADCB98C0292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift */; };
 		ADCB98C3292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADCB98C0292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift */; };
@@ -2359,7 +2371,6 @@
 		ADB1FE3A29700D3400ED072D /* KMBatchCollectionViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchCollectionViewItem.xib; sourceTree = "<group>"; };
 		ADB1FE4229700DAD00ED072D /* KMBatchCollectionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchCollectionViewModel.swift; sourceTree = "<group>"; };
 		ADB1FE472970264500ED072D /* KMBatchCollectionViewPrensenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchCollectionViewPrensenter.swift; sourceTree = "<group>"; };
-		ADB1FE4C2972958B00ED072D /* Batch_ic.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Batch_ic.pdf; sourceTree = "<group>"; };
 		ADB1FE5C2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingDeleteTableCell.swift; sourceTree = "<group>"; };
 		ADB1FE602975189600ED072D /* KMBatchProcessingDeleteTableCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchProcessingDeleteTableCell.xib; sourceTree = "<group>"; };
 		ADB1FE6D29752BB700ED072D /* KMBatchConverPDFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchConverPDFView.swift; sourceTree = "<group>"; };
@@ -2378,6 +2389,9 @@
 		ADB1FEA12975303F00ED072D /* KMBatchBatesNumberView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchBatesNumberView.xib; sourceTree = "<group>"; };
 		ADB1FEA52975305500ED072D /* KMBatchBatchRemoveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchBatchRemoveView.swift; sourceTree = "<group>"; };
 		ADB1FEA92975310A00ED072D /* KMBatchBatchRemoveView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchBatchRemoveView.xib; sourceTree = "<group>"; };
+		ADB1FEAD297543C000ED072D /* KMBatchSettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchSettingView.swift; sourceTree = "<group>"; };
+		ADB1FEB1297543CF00ED072D /* KMBatchSettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchSettingView.xib; sourceTree = "<group>"; };
+		ADB1FEB629754F9D00ED072D /* KMBatchBatchSettingItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchBatchSettingItemView.swift; sourceTree = "<group>"; };
 		ADB2D6E4294740F30029D2B3 /* KMPrintPaperSetWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPrintPaperSetWindowController.swift; sourceTree = "<group>"; };
 		ADB2D6E5294740F30029D2B3 /* KMPrintPaperSetWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPrintPaperSetWindowController.xib; sourceTree = "<group>"; };
 		ADB2D6EC2947415E0029D2B3 /* KMPrintPaperSetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPrintPaperSetView.swift; sourceTree = "<group>"; };
@@ -2387,6 +2401,8 @@
 		ADBA0463292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingTableRowView.swift; 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>"; };
+		ADC6FC582976953900D7C274 /* Batch.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Batch.xcassets; sourceTree = "<group>"; };
 		ADCB98C0292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingTableViewPresenter.swift; sourceTree = "<group>"; };
 		ADCB98C42924730000B51A03 /* KMBatchProcessingTableViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingTableViewModel.swift; sourceTree = "<group>"; };
 		ADCB98C82924741B00B51A03 /* KMBatchProcessingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingView.swift; sourceTree = "<group>"; };
@@ -3775,7 +3791,7 @@
 		ADB1FE4B2972958100ED072D /* Source */ = {
 			isa = PBXGroup;
 			children = (
-				ADB1FE4C2972958B00ED072D /* Batch_ic.pdf */,
+				ADC6FC582976953900D7C274 /* Batch.xcassets */,
 			);
 			path = Source;
 			sourceTree = "<group>";
@@ -3783,6 +3799,7 @@
 		ADB1FE642975211100ED072D /* Choose */ = {
 			isa = PBXGroup;
 			children = (
+				ADB1FEB529754F7900ED072D /* KMBatchBatchSettingItemView */,
 				ADB1FE6C29752B3100ED072D /* BatchRemove */,
 				ADB1FE6B29752B2900ED072D /* BatesNumber */,
 				ADB1FE6A29752B1A00ED072D /* Header&Footer */,
@@ -3791,6 +3808,8 @@
 				ADB1FE6729752B0000ED072D /* Security */,
 				ADB1FE662975212300ED072D /* Compress */,
 				ADB1FE652975211700ED072D /* ConverPDF */,
+				ADB1FEAD297543C000ED072D /* KMBatchSettingView.swift */,
+				ADB1FEB1297543CF00ED072D /* KMBatchSettingView.xib */,
 			);
 			path = Choose;
 			sourceTree = "<group>";
@@ -3867,6 +3886,14 @@
 			path = BatchRemove;
 			sourceTree = "<group>";
 		};
+		ADB1FEB529754F7900ED072D /* KMBatchBatchSettingItemView */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FEB629754F9D00ED072D /* KMBatchBatchSettingItemView.swift */,
+			);
+			path = KMBatchBatchSettingItemView;
+			sourceTree = "<group>";
+		};
 		ADB2D6E229473FF00029D2B3 /* DealPaper */ = {
 			isa = PBXGroup;
 			children = (
@@ -3972,6 +3999,7 @@
 				ADCB98EC2924779800B51A03 /* KMBatchProcessingStateTableCell.xib */,
 				ADB1FE5C2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift */,
 				ADB1FE602975189600ED072D /* KMBatchProcessingDeleteTableCell.xib */,
+				ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */,
 			);
 			name = Views;
 			path = Views/Tableview/Views;
@@ -5582,7 +5610,6 @@
 				8942F7FB2926089200389627 /* KMSignatureViewController.xib in Resources */,
 				9FDD0FBA295D5230000C4DAD /* KMToolbarController.xib in Resources */,
 				899700E228F3A9F2009AF911 /* KMHomeWindowController.xib in Resources */,
-				ADB1FE4D2972958B00ED072D /* Batch_ic.pdf in Resources */,
 				BB2F61532966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				89752DED293875FC003FF08E /* KMMainToolbarController.xib in Resources */,
 				9FAAA335290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
@@ -5608,6 +5635,7 @@
 				F3B7DF9D2948565000333201 /* CPDFListHoverAnnotationViewController.xib in Resources */,
 				899700EB28F3E4D3009AF911 /* MainWindowController.xib in Resources */,
 				BB49ED01293F459500C82CA2 /* KMConvertPPTsWindowController.xib in Resources */,
+				ADC6FC592976953900D7C274 /* Batch.xcassets in Resources */,
 				ADD1B6AE2941E97F00C3FFF7 /* KMPrintWindowController.xib in Resources */,
 				BB1EC8012967B26700EC0BC3 /* KMPDFEditViewController.xib in Resources */,
 				BBEC00DC295C39FD00A26C98 /* KMBatesPropertyInfoController.xib in Resources */,
@@ -5659,6 +5687,7 @@
 				9F0CB4822967F64D00007028 /* KMPropertiesPanelReadOnlySubVC.xib in Resources */,
 				BBA8B7A62935CD740097D183 /* KMRemovePasswordAlertWindowController.xib in Resources */,
 				9F0CB49A29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
+				ADB1FEB2297543CF00ED072D /* KMBatchSettingView.xib in Resources */,
 				89DB5DAA291B8DE70029624F /* KMOutlineEditViewController.xib in Resources */,
 				ADCB98FD292750A200B51A03 /* KMBatchProcessingTableView.xib in Resources */,
 				9FBA0F0129015A82001117AF /* KMFastToolCollectionViewItem.xib in Resources */,
@@ -5730,6 +5759,7 @@
 				AD9527B329503D620039D2BC /* Untitled.pdf in Resources */,
 				BB5DF1ED2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.xib in Resources */,
 				ADB1FE622975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */,
+				ADB1FEB3297543CF00ED072D /* KMBatchSettingView.xib in Resources */,
 				89E4E77D2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
 				BB49ECE1293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				BBC348572958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */,
@@ -5777,6 +5807,7 @@
 				BBEC00DD295C39FD00A26C98 /* KMBatesPropertyInfoController.xib in Resources */,
 				ADB1FE8B29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */,
 				BBA8B7B4293635D80097D183 /* KMPasswordInputWindow.xib in Resources */,
+				ADC6FC5A2976953900D7C274 /* Batch.xcassets in Resources */,
 				9F78EFBF28F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
 				9F8539FA2947137500DF644E /* newtab_p.pdf in Resources */,
 				9FBA0EF228FFC716001117AF /* KMHomeFastToolViewController.xib in Resources */,
@@ -5827,7 +5858,6 @@
 				9F1F82E72934D5240092C4B4 /* KMHomeExtractActionViewController.xib in Resources */,
 				9F0CB49329683DEE00007028 /* KMPropertiesPanelLineSubVC.xib in Resources */,
 				BB8F454B295A9CDC0037EA22 /* KMHeaderFooterListController.xib in Resources */,
-				ADB1FE4E2972958B00ED072D /* Batch_ic.pdf in Resources */,
 				8942F7FC2926089200389627 /* KMSignatureViewController.xib in Resources */,
 				BBFE6E832930EBD400142C01 /* KMCompressWindowController.xib in Resources */,
 				9F0CB46B2967E5CB00007028 /* KMPropertiesPanelSubViewController.xib in Resources */,
@@ -5897,8 +5927,8 @@
 				9FAAA337290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
 				8997012428F41AB8009AF911 /* KMLeftSideViewController.xib in Resources */,
 				9FBA0F0329015A82001117AF /* KMFastToolCollectionViewItem.xib in Resources */,
-				ADB1FE4F2972958B00ED072D /* Batch_ic.pdf in Resources */,
 				9FDD0FA12952FF4D000C4DAD /* global.json in Resources */,
+				ADC6FC5B2976953900D7C274 /* Batch.xcassets in Resources */,
 				89E4E73A2964148E002DBA6F /* KMAnnotationPropertiesViewController.xib in Resources */,
 				9F78EFC028F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
 				9F8539E52947126000DF644E /* KMChromiumToolbar.xib in Resources */,
@@ -6045,6 +6075,7 @@
 				9F8539FB2947137500DF644E /* newtab_p.pdf in Resources */,
 				BB89725B294C559F0045787C /* KMWatermarkPropertyCreateController.xib in Resources */,
 				ADB1FE7C29752F1100ED072D /* KMBatchCompressView.xib in Resources */,
+				ADB1FEB4297543CF00ED072D /* KMBatchSettingView.xib in Resources */,
 				ADB2D6F4294741720029D2B3 /* KMPrintPaperSetView.xib in Resources */,
 				BB49ED13293F462E00C82CA2 /* KMConvertImageWindowController.xib in Resources */,
 				9F0CB46C2967E5CB00007028 /* KMPropertiesPanelSubViewController.xib in Resources */,
@@ -6079,6 +6110,7 @@
 				BB8F453F295A98960037EA22 /* KMHeaderFooterPropertyController.swift in Sources */,
 				89316840296E436B0073EA59 /* KMSignature.m in Sources */,
 				BB8F4565295AA3ED0037EA22 /* KMHeaderFooterManager.swift in Sources */,
+				ADB1FEB729754F9D00ED072D /* KMBatchBatchSettingItemView.swift in Sources */,
 				ADCB990B292B6ADC00B51A03 /* KMImageToPDFChoosePresenter.swift in Sources */,
 				F34BF926295303E8002C25A2 /* NSCursor+PDFListView.m in Sources */,
 				F34BF92B295304AB002C25A2 /* NSShadow+PDFListView.m in Sources */,
@@ -6169,6 +6201,7 @@
 				BB35C4992974E18D00D46EE2 /* CustomAlertView.m in Sources */,
 				BBEC00A8295BDECF00A26C98 /* KMHeaderFooterContentInfoView.swift in Sources */,
 				9FDD0F6F294AD13C000C4DAD /* KMMainViewController+Action.swift in Sources */,
+				ADC6FC19297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */,
 				ADCB9907292B6AC000B51A03 /* KMImageToPDFChooseModel.swift in Sources */,
 				BB86C1ED28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				9F8539BE2943085A00DF644E /* KMBrowser.swift in Sources */,
@@ -6483,6 +6516,7 @@
 				9F1FE4C929406E4700E952CA /* CTTabContents.m in Sources */,
 				BB89725E294C5DDA0045787C /* KMWatermarkPropertyInfoController.swift in Sources */,
 				F37322FF292DF9410013862C /* CPDFAnnotation+PDFListView.m in Sources */,
+				ADB1FEAE297543C000ED072D /* KMBatchSettingView.swift in Sources */,
 				BB897218294AED6C0045787C /* KMWatermarkAdjectiveBaseController.swift in Sources */,
 				BB4EEF4029764FCC003A3537 /* KMWatermarkColorView.swift in Sources */,
 				AD4B4548293ED7DA0076FA14 /* KMImageToPDFManager.swift in Sources */,
@@ -6554,6 +6588,7 @@
 				BB8F4540295A98960037EA22 /* KMHeaderFooterPropertyController.swift in Sources */,
 				89316841296E436B0073EA59 /* KMSignature.m in Sources */,
 				BB8F4566295AA3ED0037EA22 /* KMHeaderFooterManager.swift in Sources */,
+				ADB1FEB829754F9D00ED072D /* KMBatchBatchSettingItemView.swift in Sources */,
 				BB99ACC3292DE22E0048AFD9 /* KMMergeViewController.swift in Sources */,
 				9F78EFC728F7E965001E66F4 /* KMHomeViewController+UI.swift in Sources */,
 				9FBA0EFA2900188F001117AF /* KMFastToolCollectionView.swift in Sources */,
@@ -6644,6 +6679,7 @@
 				BB35C49A2974E18D00D46EE2 /* CustomAlertView.m in Sources */,
 				BBEC00A9295BDECF00A26C98 /* KMHeaderFooterContentInfoView.swift in Sources */,
 				9F8539BF2943085A00DF644E /* KMBrowser.swift in Sources */,
+				ADC6FC1A297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */,
 				ADCB98DA2924774F00B51A03 /* KMBatchProcessingOrderTableCell.swift in Sources */,
 				F37322FA292DF9410013862C /* CPDFRedactAnnotation+PDFListView.m in Sources */,
 				F34BF94029530D02002C25A2 /* NSBezierPath+PDFListView.m in Sources */,
@@ -6958,6 +6994,7 @@
 				BB897219294AED6C0045787C /* KMWatermarkAdjectiveBaseController.swift in Sources */,
 				AD4B4549293ED7DA0076FA14 /* KMImageToPDFManager.swift in Sources */,
 				9F8DDF2729237910006CDC73 /* Array+KMExtensions.swift in Sources */,
+				ADB1FEAF297543C000ED072D /* KMBatchSettingView.swift in Sources */,
 				8942F7EA2925E1C400389627 /* KMLiftSideCellView.swift in Sources */,
 				BB4EEF4129764FCC003A3537 /* KMWatermarkColorView.swift in Sources */,
 				AD4B455729408CB00076FA14 /* KMOCRChooseView.swift in Sources */,
@@ -7137,6 +7174,7 @@
 				9FDD0F6D294AD12C000C4DAD /* KMMainViewController+UI.swift in Sources */,
 				F37322F2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */,
 				F34BF95029531213002C25A2 /* NSGraphics+PDFListView.m in Sources */,
+				ADB1FEB0297543C000ED072D /* KMBatchSettingView.swift in Sources */,
 				BB2F615A2966B69D001CB369 /* KMWatermarkPropertyHomeController.swift in Sources */,
 				89752E1F2942CB04003FF08E /* KMSearchMode.swift in Sources */,
 				BBD1F785296F9DB500343885 /* KMPageEditExtractWindowController.swift in Sources */,
@@ -7213,6 +7251,7 @@
 				BB4EEF4E2976544F003A3537 /* KMRedactAligementView.swift in Sources */,
 				F37322E9292DF9410013862C /* CPDFAnnotationModel.m in Sources */,
 				BB246DA628F6B492005E8F52 /* NSBezierPath_SKExtensions.m in Sources */,
+				ADC6FC1B297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */,
 				BB99ACCC292DEE6E0048AFD9 /* KMMergeTitleBar.swift in Sources */,
 				BBD1F79E296FF7A600343885 /* KMPageEditSplitSettingModel.swift in Sources */,
 				BB897277294DC04F0045787C /* KMWatermartAdjectivePageRangeView.swift in Sources */,
@@ -7369,6 +7408,7 @@
 				ADB1FE4529700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */,
 				BB1A34AA295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m in Sources */,
 				BBC3482629559506008D2CD1 /* KMBackgroundManager.swift in Sources */,
+				ADB1FEB929754F9D00ED072D /* KMBatchBatchSettingItemView.swift in Sources */,
 				9F8539CD29430BF300DF644E /* KMBrowserWindowController.swift in Sources */,
 				BB8F4567295AA3ED0037EA22 /* KMHeaderFooterManager.swift in Sources */,
 				9F705F78291A3A84005199AD /* KMHistoryFileDeleteWindowController.swift in Sources */,

+ 67 - 51
PDF Office/PDF Office.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -94,8 +94,8 @@
             filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMImageToPDFChooseView/KMImageToPDFChooseView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "132"
-            endingLineNumber = "132"
+            startingLineNumber = "138"
+            endingLineNumber = "138"
             landmarkName = "selectFileAction(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -238,8 +238,8 @@
             filePath = "PDF Office/Class/PDFTools/OCR/View/KMOCRChooseView/KMOCRChooseView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "118"
-            endingLineNumber = "118"
+            startingLineNumber = "124"
+            endingLineNumber = "124"
             landmarkName = "export(presenter:data:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -254,8 +254,8 @@
             filePath = "PDF Office/Class/PDFTools/OCR/View/KMOCRChooseView/KMOCRChooseView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "82"
-            endingLineNumber = "82"
+            startingLineNumber = "88"
+            endingLineNumber = "88"
             landmarkName = "exportAction(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -327,8 +327,8 @@
             filePath = "PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizeMultipageView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "71"
-            endingLineNumber = "71"
+            startingLineNumber = "77"
+            endingLineNumber = "77"
             landmarkName = "setup()"
             landmarkType = "7">
          </BreakpointContent>
@@ -343,8 +343,8 @@
             filePath = "PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizeMultipageView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "74"
-            endingLineNumber = "74"
+            startingLineNumber = "80"
+            endingLineNumber = "80"
             landmarkName = "setup()"
             landmarkType = "7">
          </BreakpointContent>
@@ -375,8 +375,8 @@
             filePath = "PDF Office/Class/PDFTools/Print/View/Preview/KMPrintPreviewView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "108"
-            endingLineNumber = "108"
+            startingLineNumber = "114"
+            endingLineNumber = "114"
             landmarkName = "documentDidChange(presenter:document:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -631,8 +631,8 @@
             filePath = "PDF Office/Class/PDFTools/Tools/KMTextFieldStepperView/KMTextFieldStepperView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "100"
-            endingLineNumber = "100"
+            startingLineNumber = "106"
+            endingLineNumber = "106"
             landmarkName = "stepperAction(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -647,8 +647,8 @@
             filePath = "PDF Office/Class/PDFTools/Tools/KMTextFieldStepperView/KMTextFieldStepperView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "107"
-            endingLineNumber = "107"
+            startingLineNumber = "113"
+            endingLineNumber = "113"
             landmarkName = "valueDidChange(presenter:model:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -663,8 +663,8 @@
             filePath = "PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/PaperSet/View/KMPrintPaperSetView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "118"
-            endingLineNumber = "118"
+            startingLineNumber = "124"
+            endingLineNumber = "124"
             landmarkName = "doneAction(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -679,25 +679,9 @@
             filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/KMBatchProcessingView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "102"
-            endingLineNumber = "102"
-            landmarkName = "AddPhotos(sender:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "21F386B0-C0FD-459E-A2DE-D8E5620A64B9"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "253"
-            endingLineNumber = "253"
-            landmarkName = "showData(presenter:data:)"
+            startingLineNumber = "108"
+            endingLineNumber = "108"
+            landmarkName = "addPhotos(sender:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -736,49 +720,81 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "0252F0D0-656D-4A6E-9CE4-6827E63E674B"
+            uuid = "7BE47E61-AAC0-4C6D-8980-CE9AAD3B4078"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "106"
             endingLineNumber = "106"
-            landmarkName = "setup()"
+            landmarkName = "KMBatchCollectionView"
+            landmarkType = "21">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "BDA25E88-D714-4302-A4D3-4DE37807025E"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchSettingView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "62"
+            endingLineNumber = "62"
+            landmarkName = "reloadData()"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "361333AD-AA29-434F-8726-59D60B3DDEDD"
+            uuid = "BC7909E2-734F-4FE8-A3E9-95A5B81822E5"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "89"
-            endingLineNumber = "89"
-            landmarkName = "collectionView(_:didSelectItemsAt:)"
+            startingLineNumber = "21"
+            endingLineNumber = "21"
+            landmarkName = "init?(coder:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "7BE47E61-AAC0-4C6D-8980-CE9AAD3B4078"
+            uuid = "E8A34E00-7A01-4D70-9F9E-BFD51E888DDB"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "100"
-            endingLineNumber = "100"
-            landmarkName = "KMBatchCollectionView"
-            landmarkType = "21">
+            startingLineNumber = "28"
+            endingLineNumber = "28"
+            landmarkName = "init(frame:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "94F1D853-F895-4502-9E68-910C02AA33D5"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchSettingView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "58"
+            endingLineNumber = "58"
+            landmarkName = "setup()"
+            landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
    </Breakpoints>

+ 1 - 1
PDF Office/PDF Office/AppDelegate.swift

@@ -62,7 +62,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
         let browser = KMBrowser.init() as KMBrowser
         browser.windowController = KMBrowserWindowController.init(browser: browser)
         browser.addHomeTabContents()
-        browser.windowController.showWindow(self)
+         browser.windowController.showWindow(self)
     }
 }
 

+ 4 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.swift

@@ -12,6 +12,7 @@ class KMBatchWindowController: NSWindowController {
     @IBOutlet weak var batchPrecessingView: KMBatchProcessingView!
     @IBOutlet weak var batchCollectionView: KMBatchCollectionView!
     @IBOutlet weak var batchHandleView: NSView!
+    @IBOutlet weak var settingView: KMBatchSettingView!
     
     var batchData: [KMBatchProcessingTableViewModel]?
     var inputType: DataNavigationViewButtonActionType?
@@ -35,6 +36,8 @@ class KMBatchWindowController: NSWindowController {
         
         self.batchPrecessingView.delegate = self
         self.batchPrecessingView.inputType = self.inputType
+        
+        self.settingView.type = .convertPDF
     }
     
     func reloadData() {
@@ -80,6 +83,7 @@ extension KMBatchWindowController: KMBatchProcessingViewDelegate {
 extension KMBatchWindowController: KMBatchCollectionViewDelegate {
     func didSelect(index: IndexPath, data: KMBatchCollectionViewModel) {
         print(data.type.rawValue)
+        self.settingView.type = data.type
     }
     
 }

+ 65 - 2
PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.xib

@@ -10,7 +10,8 @@
             <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="gH5-eQ-PMm" id="p49-SP-doE"/>
+                <outlet property="batchPrecessingView" destination="Quv-tZ-EYd" id="mU2-SE-yX7"/>
+                <outlet property="settingView" destination="DNN-jM-3Lh" id="cmU-9D-7sd"/>
                 <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
             </connections>
         </customObject>
@@ -33,12 +34,74 @@
                     </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="xRy-0u-G2C">
+                                <rect key="frame" x="0.0" y="509" width="260" height="50"/>
+                                <subviews>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tA2-vk-8MJ">
+                                        <rect key="frame" x="14" y="16" width="56" height="19"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Setting" id="HhR-MT-I9j">
+                                            <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="tA2-vk-8MJ" firstAttribute="centerY" secondItem="xRy-0u-G2C" secondAttribute="centerY" id="VXJ-r1-ksh"/>
+                                    <constraint firstItem="tA2-vk-8MJ" firstAttribute="leading" secondItem="xRy-0u-G2C" secondAttribute="leading" constant="16" id="ZEv-St-iwP"/>
+                                    <constraint firstAttribute="height" constant="50" id="fiZ-sJ-smQ"/>
+                                </constraints>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="DNN-jM-3Lh" customClass="KMBatchSettingView" customModule="PDF_Office" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="260" height="509"/>
+                            </customView>
+                        </subviews>
                         <constraints>
+                            <constraint firstAttribute="trailing" secondItem="xRy-0u-G2C" secondAttribute="trailing" id="25J-zm-vSv"/>
                             <constraint firstAttribute="width" constant="260" id="8VA-Va-3Ig"/>
+                            <constraint firstItem="xRy-0u-G2C" firstAttribute="top" secondItem="gb1-Aa-tbK" secondAttribute="top" id="B8v-IG-NVo"/>
+                            <constraint firstItem="DNN-jM-3Lh" firstAttribute="top" secondItem="xRy-0u-G2C" secondAttribute="bottom" id="RXk-KC-mTR"/>
+                            <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="xRy-0u-G2C" firstAttribute="leading" secondItem="gb1-Aa-tbK" secondAttribute="leading" id="jGG-Jn-ADB"/>
                         </constraints>
                     </customView>
-                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="gH5-eQ-PMm" customClass="KMBatchProcessingView" customModule="PDF_Office" customModuleProvider="target">
+                    <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_Office" 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 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>

+ 0 - 149
PDF Office/PDF Office/Class/PDFTools/Batch/Source/Batch_ic.pdf

@@ -1,149 +0,0 @@
-%PDF-1.7
-
-1 0 obj
-  << >>
-endobj
-
-2 0 obj
-  << /Length 3 0 R >>
-stream
-/DeviceRGB CS
-/DeviceRGB cs
-q
-0.000000 18.000000 m
-0.000000 19.104568 0.895431 20.000000 2.000000 20.000000 c
-9.867069 20.000000 l
-10.445629 20.000000 10.995841 19.749458 11.375679 19.313049 c
-15.508610 14.564576 l
-15.825472 14.200521 16.000000 13.734164 16.000000 13.251528 c
-16.000000 2.000000 l
-16.000000 0.895430 15.104569 0.000000 14.000000 0.000000 c
-2.000000 0.000000 l
-0.895431 0.000000 0.000000 0.895430 0.000000 2.000000 c
-0.000000 18.000000 l
-h
-W*
-n
-q
-1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 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
-
-endstream
-endobj
-
-3 0 obj
-  1976
-endobj
-
-4 0 obj
-  << /Annots []
-     /Type /Page
-     /MediaBox [ 0.000000 0.000000 16.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
-0000002066 00000 n
-0000002089 00000 n
-0000002262 00000 n
-0000002336 00000 n
-trailer
-<< /ID [ (some) (id) ]
-   /Root 6 0 R
-   /Size 7
->>
-startxref
-2395
-%%EOF

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift

@@ -44,6 +44,12 @@ class KMBatchCollectionView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: KMBatchCollectionView.self),

+ 1 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Model/KMBatchCollectionViewModel.swift

@@ -8,6 +8,7 @@
 import Cocoa
 
 enum KMBatchCollectionViewType: String {
+    case unknow = "unknow"
     case convertPDF = "ConvertPDF"
     case compress = "Compress"
     case security = "Security"

+ 4 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Presenter/KMBatchCollectionViewPrensenter.swift

@@ -55,8 +55,11 @@ extension KMBatchCollectionViewPrensenter: KMBatchCollectionViewPrensenterProtoc
             model.imageString = dic["image"] 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)
         }
         

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchBackgroundView: NSView {
+class KMBatchBackgroundView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchBackgroundView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.xib

@@ -6,7 +6,11 @@
         <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_Office" customModuleProvider="target"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBackgroundView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="cYK-1X-c6S"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchBatchRemoveView: NSView {
+class KMBatchBatchRemoveView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchBatchRemoveView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.xib

@@ -6,7 +6,11 @@
         <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"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBatchRemoveView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="gfd-yK-OVC"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchBatesNumberView: NSView {
+class KMBatchBatesNumberView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchBatesNumberView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.xib

@@ -6,7 +6,11 @@
         <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"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBatesNumberView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="R3Z-QM-rL2"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchCompressView: NSView {
+class KMBatchCompressView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchCompressView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.xib

@@ -6,7 +6,11 @@
         <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"/>
+        <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"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 37 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.swift

@@ -7,7 +7,8 @@
 
 import Cocoa
 
-class KMBatchConverPDFView: NSView {
+class KMBatchConverPDFView: KMBatchBatchSettingItemView {
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +16,39 @@ class KMBatchConverPDFView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchConverPDFView.self),
+                             bundle: Bundle(for: KMBatchConverPDFView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
 }

+ 321 - 3
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.xib

@@ -6,13 +6,331 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchConverPDFView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="bds-XY-G6R"/>
+            </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="250" height="694"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-            <point key="canvasLocation" x="47" y="-72"/>
+            <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="634" width="250" height="60"/>
+                            <subviews>
+                                <textField 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>
+                                        <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>
+                                        </button>
+                                        <textField 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" id="fEa-Ag-EN4"/>
+                                        </imageView>
+                                    </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>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="aSl-HE-P9j">
+                            <rect key="frame" x="0.0" y="538" width="250" height="80"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4XK-dg-5Wg">
+                                    <rect key="frame" x="14" y="60" width="99" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="lLh-uv-Yw7"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Layout Settings" id="7cx-P9-T74">
+                                        <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="U8C-sm-GuB">
+                                    <rect key="frame" x="16" y="30" width="218" height="22"/>
+                                    <subviews>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CC5-qv-aLk">
+                                            <rect key="frame" x="0.0" y="0.0" width="218" height="22"/>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="M98-hO-zG7">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                        </button>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="pp9-cZ-Q6z">
+                                            <rect key="frame" x="0.0" y="3" width="16" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="16" id="KCc-bh-8RJ"/>
+                                                <constraint firstAttribute="height" constant="16" id="OIa-54-OwT"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="24L-bD-Dn7"/>
+                                        </imageView>
+                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="k1F-sW-HnL">
+                                            <rect key="frame" x="22" y="3" width="121" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Retain Flowing Text" id="M1E-J9-8OH">
+                                                <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="CC5-qv-aLk" firstAttribute="top" secondItem="U8C-sm-GuB" secondAttribute="top" id="6hU-yo-GgR"/>
+                                        <constraint firstAttribute="trailing" secondItem="CC5-qv-aLk" secondAttribute="trailing" id="9q7-8p-ULi"/>
+                                        <constraint firstAttribute="bottom" secondItem="CC5-qv-aLk" secondAttribute="bottom" id="Dx2-QS-ivw"/>
+                                        <constraint firstAttribute="height" constant="22" id="GgY-3f-eEM"/>
+                                        <constraint firstItem="k1F-sW-HnL" firstAttribute="leading" secondItem="pp9-cZ-Q6z" secondAttribute="trailing" constant="8" id="RRW-ai-HEM"/>
+                                        <constraint firstItem="CC5-qv-aLk" firstAttribute="leading" secondItem="U8C-sm-GuB" secondAttribute="leading" id="UKH-jx-IpP"/>
+                                        <constraint firstItem="pp9-cZ-Q6z" firstAttribute="leading" secondItem="U8C-sm-GuB" secondAttribute="leading" id="XVw-2f-DCf"/>
+                                        <constraint firstItem="pp9-cZ-Q6z" firstAttribute="centerY" secondItem="U8C-sm-GuB" secondAttribute="centerY" id="jLX-Gn-2nv"/>
+                                        <constraint firstItem="k1F-sW-HnL" firstAttribute="centerY" secondItem="U8C-sm-GuB" secondAttribute="centerY" id="z16-mp-mBq"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="vv9-bg-fGf">
+                                    <rect key="frame" x="16" y="0.0" width="218" height="22"/>
+                                    <subviews>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TbY-lA-xp2">
+                                            <rect key="frame" x="0.0" y="0.0" width="218" height="22"/>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="IlF-9s-RlI">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                        </button>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sLi-tu-nPA">
+                                            <rect key="frame" x="0.0" y="3" width="16" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="16" id="fsj-yd-jlR"/>
+                                                <constraint firstAttribute="width" constant="16" id="pMb-PQ-hhW"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="UPi-YE-xi3"/>
+                                        </imageView>
+                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wSU-RZ-b7f">
+                                            <rect key="frame" x="22" y="3" width="120" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Retain Page Layout" id="rnJ-2h-Gy6">
+                                                <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="wSU-RZ-b7f" firstAttribute="centerY" secondItem="vv9-bg-fGf" secondAttribute="centerY" id="BB4-er-9Zz"/>
+                                        <constraint firstAttribute="height" constant="22" id="FXE-za-FZI"/>
+                                        <constraint firstItem="TbY-lA-xp2" firstAttribute="top" secondItem="vv9-bg-fGf" secondAttribute="top" id="NK0-ic-FUr"/>
+                                        <constraint firstItem="sLi-tu-nPA" firstAttribute="centerY" secondItem="vv9-bg-fGf" secondAttribute="centerY" id="OiD-pj-hjM"/>
+                                        <constraint firstAttribute="bottom" secondItem="TbY-lA-xp2" secondAttribute="bottom" id="VDm-zA-0D7"/>
+                                        <constraint firstItem="sLi-tu-nPA" firstAttribute="leading" secondItem="vv9-bg-fGf" secondAttribute="leading" id="WOl-PB-Gv5"/>
+                                        <constraint firstItem="TbY-lA-xp2" firstAttribute="leading" secondItem="vv9-bg-fGf" secondAttribute="leading" id="ZvM-vX-8qQ"/>
+                                        <constraint firstItem="wSU-RZ-b7f" firstAttribute="leading" secondItem="sLi-tu-nPA" secondAttribute="trailing" constant="8" id="c4b-F1-vou"/>
+                                        <constraint firstAttribute="trailing" secondItem="TbY-lA-xp2" secondAttribute="trailing" id="yhg-RR-im3"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="vv9-bg-fGf" firstAttribute="top" secondItem="U8C-sm-GuB" secondAttribute="bottom" constant="8" id="9gV-uv-3NA"/>
+                                <constraint firstAttribute="trailing" secondItem="vv9-bg-fGf" secondAttribute="trailing" constant="16" id="LeC-b0-1zN"/>
+                                <constraint firstItem="U8C-sm-GuB" firstAttribute="top" secondItem="4XK-dg-5Wg" secondAttribute="bottom" constant="8" id="X3i-ls-sSq"/>
+                                <constraint firstAttribute="trailing" secondItem="U8C-sm-GuB" secondAttribute="trailing" constant="16" id="XcP-Gh-SmV"/>
+                                <constraint firstItem="4XK-dg-5Wg" firstAttribute="top" secondItem="aSl-HE-P9j" secondAttribute="top" id="fdX-rm-i48"/>
+                                <constraint firstItem="U8C-sm-GuB" firstAttribute="leading" secondItem="aSl-HE-P9j" secondAttribute="leading" constant="16" id="pmH-rt-M4j"/>
+                                <constraint firstItem="vv9-bg-fGf" firstAttribute="leading" secondItem="aSl-HE-P9j" secondAttribute="leading" constant="16" id="q22-t0-lkd"/>
+                                <constraint firstItem="4XK-dg-5Wg" firstAttribute="leading" secondItem="aSl-HE-P9j" secondAttribute="leading" constant="16" id="w0J-t9-eSf"/>
+                                <constraint firstAttribute="height" constant="80" id="wen-L8-3R7"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Gwh-xV-eaX">
+                            <rect key="frame" x="0.0" y="432" width="250" height="90"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5ZX-wS-HCP">
+                                    <rect key="frame" x="18" y="70" width="159" height="20"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="20" id="fNP-Vu-SOK"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Text Recognition Settings" id="MEO-dY-sXU">
+                                        <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="I5f-ZY-bd3">
+                                    <rect key="frame" x="16" y="0.0" width="218" height="32"/>
+                                    <subviews>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1yE-a0-dHH">
+                                            <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="y2L-qx-kti">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                        </button>
+                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1sJ-ss-p0d">
+                                            <rect key="frame" x="6" y="8" width="48" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="English" id="HmK-16-UIZ">
+                                                <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="cBO-Ub-0Zg">
+                                            <rect key="frame" x="198" y="10" width="12" height="12"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="12" id="6hW-fd-5Vq"/>
+                                                <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="IPW-Us-8Va"/>
+                                                <constraint firstAttribute="height" constant="12" id="UX8-55-fuI"/>
+                                                <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="12" id="axW-oM-L1L"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="8wE-vH-hWg"/>
+                                        </imageView>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstAttribute="bottom" secondItem="1yE-a0-dHH" secondAttribute="bottom" id="3Ra-eT-6M1"/>
+                                        <constraint firstItem="1yE-a0-dHH" firstAttribute="top" secondItem="I5f-ZY-bd3" secondAttribute="top" id="7ZS-Nc-J3B"/>
+                                        <constraint firstAttribute="trailing" secondItem="1yE-a0-dHH" secondAttribute="trailing" id="BZM-hN-OGv"/>
+                                        <constraint firstItem="1yE-a0-dHH" firstAttribute="leading" secondItem="I5f-ZY-bd3" secondAttribute="leading" id="Bo5-Dc-dUz"/>
+                                        <constraint firstItem="cBO-Ub-0Zg" firstAttribute="centerY" secondItem="I5f-ZY-bd3" secondAttribute="centerY" id="DeV-kT-heT"/>
+                                        <constraint firstAttribute="trailing" secondItem="cBO-Ub-0Zg" secondAttribute="trailing" constant="8" id="Fm7-QC-scu"/>
+                                        <constraint firstItem="1sJ-ss-p0d" firstAttribute="centerY" secondItem="I5f-ZY-bd3" secondAttribute="centerY" id="pYm-dm-Lsy"/>
+                                        <constraint firstAttribute="height" constant="32" id="vyu-WT-7Tp"/>
+                                        <constraint firstItem="1sJ-ss-p0d" firstAttribute="leading" secondItem="I5f-ZY-bd3" secondAttribute="leading" constant="8" id="xXP-n9-Zht"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="SEF-G4-Qmt">
+                                    <rect key="frame" x="16" y="40" width="218" height="22"/>
+                                    <subviews>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="C6a-4n-5Zs">
+                                            <rect key="frame" x="0.0" y="0.0" width="218" height="22"/>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="EdN-Ps-v9I">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                        </button>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="It3-pO-GJV">
+                                            <rect key="frame" x="0.0" y="3" width="16" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="16" id="3ey-UF-OED"/>
+                                                <constraint firstAttribute="width" constant="16" id="USi-2D-1OC"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="j17-xG-njT"/>
+                                        </imageView>
+                                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="PUz-0D-hfR">
+                                            <rect key="frame" x="22" y="3" width="120" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Retain Page Layout" id="FnN-Vf-3wX">
+                                                <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 firstAttribute="height" constant="22" id="0PO-pk-Fks"/>
+                                        <constraint firstAttribute="trailing" secondItem="C6a-4n-5Zs" secondAttribute="trailing" id="8JD-5N-1Yc"/>
+                                        <constraint firstItem="C6a-4n-5Zs" firstAttribute="top" secondItem="SEF-G4-Qmt" secondAttribute="top" id="Bhh-Ur-fRh"/>
+                                        <constraint firstAttribute="bottom" secondItem="C6a-4n-5Zs" secondAttribute="bottom" id="E5o-zF-H2M"/>
+                                        <constraint firstItem="C6a-4n-5Zs" firstAttribute="leading" secondItem="SEF-G4-Qmt" secondAttribute="leading" id="GVr-Kz-jGB"/>
+                                        <constraint firstItem="It3-pO-GJV" firstAttribute="leading" secondItem="SEF-G4-Qmt" secondAttribute="leading" id="PI7-pe-mrB"/>
+                                        <constraint firstItem="PUz-0D-hfR" firstAttribute="leading" secondItem="It3-pO-GJV" secondAttribute="trailing" constant="8" id="V5z-lf-ENC"/>
+                                        <constraint firstItem="It3-pO-GJV" firstAttribute="centerY" secondItem="SEF-G4-Qmt" secondAttribute="centerY" id="VfJ-w0-Mbf"/>
+                                        <constraint firstItem="PUz-0D-hfR" firstAttribute="centerY" secondItem="SEF-G4-Qmt" secondAttribute="centerY" id="cf0-FX-tO8"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="5ZX-wS-HCP" firstAttribute="leading" secondItem="Gwh-xV-eaX" secondAttribute="leading" constant="20" id="0Iy-1E-N1p"/>
+                                <constraint firstItem="SEF-G4-Qmt" firstAttribute="leading" secondItem="Gwh-xV-eaX" secondAttribute="leading" constant="16" id="0WO-ui-c1o"/>
+                                <constraint firstItem="SEF-G4-Qmt" firstAttribute="top" secondItem="5ZX-wS-HCP" secondAttribute="bottom" constant="8" id="14w-ap-V3p"/>
+                                <constraint firstAttribute="trailing" secondItem="SEF-G4-Qmt" secondAttribute="trailing" constant="16" id="7NM-oD-P9J"/>
+                                <constraint firstItem="I5f-ZY-bd3" firstAttribute="leading" secondItem="Gwh-xV-eaX" secondAttribute="leading" constant="16" id="I2U-Pp-OzY"/>
+                                <constraint firstAttribute="height" constant="90" id="Lf0-nL-MR0"/>
+                                <constraint firstItem="5ZX-wS-HCP" firstAttribute="top" secondItem="Gwh-xV-eaX" secondAttribute="top" id="QuK-ms-VMA"/>
+                                <constraint firstItem="I5f-ZY-bd3" firstAttribute="top" secondItem="SEF-G4-Qmt" secondAttribute="bottom" constant="8" id="c6U-E8-H1Z"/>
+                                <constraint firstAttribute="trailing" secondItem="I5f-ZY-bd3" secondAttribute="trailing" constant="16" id="mu1-uU-p5J"/>
+                            </constraints>
+                        </customView>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="t8i-o1-Alp">
+                            <rect key="frame" x="16" y="16" width="218" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="mRK-kE-s49"/>
+                            </constraints>
+                            <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>
+                        </button>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="aSl-HE-P9j" firstAttribute="top" secondItem="cil-Yp-W4m" secondAttribute="bottom" constant="16" id="I63-qR-rh0"/>
+                        <constraint firstItem="cil-Yp-W4m" firstAttribute="top" secondItem="cxi-no-clx" secondAttribute="top" id="N48-3a-dMk"/>
+                        <constraint firstItem="Gwh-xV-eaX" firstAttribute="top" secondItem="aSl-HE-P9j" secondAttribute="bottom" constant="16" id="W3z-5O-OlJ"/>
+                        <constraint firstAttribute="trailing" secondItem="Gwh-xV-eaX" secondAttribute="trailing" id="WBH-go-rnn"/>
+                        <constraint firstAttribute="trailing" secondItem="t8i-o1-Alp" secondAttribute="trailing" constant="16" id="XKt-LD-gma"/>
+                        <constraint firstItem="aSl-HE-P9j" firstAttribute="leading" secondItem="cxi-no-clx" secondAttribute="leading" id="jR7-xu-e4y"/>
+                        <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="aSl-HE-P9j" secondAttribute="trailing" id="nX9-gQ-qxg"/>
+                        <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"/>
+                        <constraint firstItem="Gwh-xV-eaX" firstAttribute="leading" secondItem="cxi-no-clx" secondAttribute="leading" id="u1y-jT-uOy"/>
+                    </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>
 </document>

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Header&Footer/KMBatchHeaderAndFooterView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchHeaderAndFooterView: NSView {
+class KMBatchHeaderAndFooterView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchHeaderAndFooterView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Header&Footer/KMBatchHeaderAndFooterView.xib

@@ -6,7 +6,11 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchHeaderAndFooterView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchHeaderAndFooterView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="qO2-7B-ZJS"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 20 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchBatchSettingItemView/KMBatchBatchSettingItemView.swift

@@ -0,0 +1,20 @@
+//
+//  KMBatchBatchSettingItemView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchBatchSettingItemView: NSView {
+
+    var type: KMBatchCollectionViewType = .unknow
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+}

+ 125 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchSettingView.swift

@@ -0,0 +1,125 @@
+//
+//  KMBatchSettingView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchSettingView: NSView {
+    @IBOutlet var contentView: NSView!
+    
+    var currentView: KMBatchBatchSettingItemView = KMBatchBatchSettingItemView()
+    lazy var itemViewArray: [KMBatchBatchSettingItemView] = []
+    
+    var type: KMBatchCollectionViewType = .convertPDF {
+        didSet {
+            self.reloadData()
+        }
+    }
+    
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchSettingView.self),
+                             bundle: Bundle(for: KMBatchSettingView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+        self.type = .convertPDF
+    }
+    
+    func reloadData() {
+        if self.type != self.currentView.type {
+            let view: KMBatchBatchSettingItemView = self.fetchCurrentView(type: self.type)
+            self.currentView.removeFromSuperview()
+            self.addSubview(view)
+            view.translatesAutoresizingMaskIntoConstraints = false
+            NSLayoutConstraint.activate([
+                view.topAnchor.constraint(equalTo: topAnchor),
+                view.leftAnchor.constraint(equalTo: leftAnchor),
+                view.rightAnchor.constraint(equalTo: rightAnchor),
+                view.bottomAnchor.constraint(equalTo: bottomAnchor)])
+            view.updateConstraintsForSubtreeIfNeeded()
+            self.currentView = view
+        }
+    }
+    
+    func fetchCurrentView(type: KMBatchCollectionViewType) -> KMBatchBatchSettingItemView {
+        var view: KMBatchBatchSettingItemView = KMBatchSecurityView.init()
+        
+        var isExist = false
+        for item in self.itemViewArray {
+            if item.type == type {
+                isExist = true
+                view = item
+            }
+        }
+        
+        if !isExist {
+            switch type {
+            case .convertPDF:
+                view = KMBatchConverPDFView.init()
+                break
+            case .compress:
+                view = KMBatchCompressView.init()
+                break
+            case .security:
+                view = KMBatchSecurityView.init()
+                break
+            case .watermark:
+                view = KMBatchWatermarkView.init()
+                break
+            case .background:
+                view = KMBatchBackgroundView.init()
+                break
+            case .headerAndFooter:
+                view = KMBatchHeaderAndFooterView.init()
+                break
+            case .batesNumber:
+                view = KMBatchCompressView.init()
+                break
+            case .batchRemove:
+                view = KMBatchCompressView.init()
+                break
+            default:
+                print("找不到")
+                break
+            }
+            view.type = type
+            self.itemViewArray.append(view)
+        }
+        
+        return view
+    }
+        
+}

+ 22 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/KMBatchSettingView.xib

@@ -0,0 +1,22 @@
+<?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="KMBatchSettingView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="N4j-Cd-OBU"/>
+            </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="254" height="643"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="19" y="113.5"/>
+        </customView>
+    </objects>
+</document>

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchSecurityView: NSView {
+class KMBatchSecurityView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchSecurityView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.xib

@@ -6,7 +6,11 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchSecurityView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchSecurityView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="A8P-4Y-IGe"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 39 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.swift

@@ -7,7 +7,9 @@
 
 import Cocoa
 
-class KMBatchWatermarkView: NSView {
+class KMBatchWatermarkView: KMBatchBatchSettingItemView {
+
+    @IBOutlet var contentView: NSView!
 
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -15,4 +17,40 @@ class KMBatchWatermarkView: NSView {
         // Drawing code here.
     }
     
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchBatchRemoveView.self),
+                             bundle: Bundle(for: KMBatchBatchRemoveView.self))!
+        resource.instantiate(withOwner: self, topLevelObjects: nil)
+        addSubview(contentView)
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        NSLayoutConstraint.activate([
+            contentView.topAnchor.constraint(equalTo: topAnchor),
+            contentView.leftAnchor.constraint(equalTo: leftAnchor),
+            contentView.rightAnchor.constraint(equalTo: rightAnchor),
+            contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
+        contentView.updateConstraintsForSubtreeIfNeeded()
+    }
+    
+    func setup() {
+
+    }
+    
+    func reloadData() {
+        
+    }
+    
 }

+ 5 - 1
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.xib

@@ -6,7 +6,11 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchWatermarkView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchWatermarkView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="VWq-Cw-znr"/>
+            </connections>
+        </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">

+ 12 - 6
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/KMBatchProcessingView.swift

@@ -39,6 +39,12 @@ class KMBatchProcessingView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: KMBatchProcessingView.self),
@@ -70,21 +76,21 @@ extension KMBatchProcessingView: KMBatchProcessingViewAction {
     @IBAction func addFiles(_ sender: Any) {
         let menu = NSMenu.init()
         menu.addItem(withTitle: NSLocalizedString("Import from", comment: "") + NSLocalizedString("My Mac", comment: ""),
-                                action: #selector(AddPhotos),
+                                action: #selector(addPhotos),
                                 keyEquivalent: "")
         
         menu.addItem(withTitle: NSLocalizedString("Import from Camera...", comment: ""),
-                                 action: #selector(AddPhotosFromCamera),
+                                 action: #selector(addPhotosFromCamera),
                                 keyEquivalent: "")
         
         menu.addItem(withTitle: NSLocalizedString("Import from Scanner...", comment: ""),
-                                 action: #selector(AddPhotosFromScanner),
+                                 action: #selector(addPhotosFromScanner),
                                 keyEquivalent: "")
         
         menu.popUp(positioning: menu.item(at: 0), at: CGPoint(x: 0, y: (sender as! NSView).fittingSize.height), in: sender as? NSView)
     }
     
-    @objc func AddPhotos(sender: AnyObject) {
+    @objc func addPhotos(sender: AnyObject) {
         weak var weakSelf = self
         KMBatchProcessingView.openfiles(window: window!) { openPanel in
             if weakSelf?.inputType == .OCR {
@@ -107,11 +113,11 @@ extension KMBatchProcessingView: KMBatchProcessingViewAction {
         print("AddPhotos")
     }
     
-    @objc func AddPhotosFromCamera(sender: AnyObject) {
+    @objc func addPhotosFromCamera(sender: AnyObject) {
         print("AddPhotosFromCamera")
     }
     
-    @objc func AddPhotosFromScanner(sender: AnyObject) {
+    @objc func addPhotosFromScanner(sender: AnyObject) {
         print("AddPhotosFromScanner")
     }
     

+ 16 - 1
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift

@@ -38,37 +38,47 @@ class KMBatchProcessingTableView: NSView {
             
             if (options!.contains(KMBatchProcessingTableViewOptions.name)) {
                 let column = NSTableColumn()
+                column.headerCell = KMBatchProcessingColumnHeaderCell.init()
                 column.title = NSLocalizedString("name", comment: "")
                 column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.name.rawValue))
+//                column.resizingMask = .userResizingMask
                 self.tableView.addTableColumn(column)
             }
             
             if (options!.contains(KMBatchProcessingTableViewOptions.order)) {
                 let column = NSTableColumn()
+                column.headerCell = KMBatchProcessingColumnHeaderCell.init()
                 column.title = NSLocalizedString("order", comment: "")
                 column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.order.rawValue))
                 column.width = 158
+//                column.resizingMask = .userResizingMask
                 self.tableView.addTableColumn(column)
             }
             
             if (options!.contains(KMBatchProcessingTableViewOptions.size)) {
                 let column = NSTableColumn()
+                column.headerCell = KMBatchProcessingColumnHeaderCell.init()
                 column.title = NSLocalizedString("size", comment: "")
                 column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.size.rawValue))
+//                column.resizingMask = .userResizingMask
                 self.tableView.addTableColumn(column)
             }
             
             if (options!.contains(KMBatchProcessingTableViewOptions.state)) {
                 let column = NSTableColumn()
+                column.headerCell = KMBatchProcessingColumnHeaderCell.init()
                 column.title = NSLocalizedString("state", comment: "")
                 column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.state.rawValue))
+//                column.resizingMask = .userResizingMask
                 self.tableView.addTableColumn(column)
             }
             
             if (options!.contains(KMBatchProcessingTableViewOptions.delete)) {
                 let column = NSTableColumn()
+                column.headerCell = KMBatchProcessingColumnHeaderCell.init()
                 column.title = NSLocalizedString("", comment: "")
                 column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.delete.rawValue))
+//                column.resizingMask = .userResizingMask
                 self.tableView.addTableColumn(column)
             }
         }
@@ -87,6 +97,12 @@ class KMBatchProcessingTableView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: KMBatchProcessingTableView.self),
@@ -131,7 +147,6 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
         } else if (tableColumn?.identifier.rawValue == String(KMBatchProcessingTableViewOptions.delete.rawValue)) {
             cell = KMBatchProcessingDeleteTableCell.init(frame: CGRect(x: 0, y: 0, width: tableColumn!.width, height:tableView.rowHeight))
         }
-        
         if(cell != nil) {
             cell!.model = self.data?[row]
         }

+ 11 - 12
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.xib

@@ -18,16 +18,15 @@
             <rect key="frame" x="0.0" y="0.0" width="747" height="467"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="52" horizontalPageScroll="10" verticalLineScroll="52" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LBT-Yb-LH6">
+                <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LBT-Yb-LH6">
                     <rect key="frame" x="0.0" y="0.0" width="747" height="467"/>
                     <clipView key="contentView" drawsBackground="NO" id="Ukp-eK-M2w">
                         <rect key="frame" x="0.0" y="0.0" width="747" height="467"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" autosaveColumns="NO" rowHeight="52" rowSizeStyle="automatic" headerView="i1G-mK-PE9" viewBased="YES" id="iF7-ag-gLW">
+                            <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" columnSelection="YES" autosaveColumns="NO" rowHeight="24" headerView="5ix-cJ-akY" viewBased="YES" id="iF7-ag-gLW">
                                 <rect key="frame" x="0.0" y="0.0" width="747" height="439"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <size key="intercellSpacing" width="17" height="0.0"/>
                                 <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
                                 <tableColumns>
@@ -44,11 +43,11 @@
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                         <prototypeCellViews>
                                             <tableCellView id="PZO-HB-TFB">
-                                                <rect key="frame" x="18" y="0.0" width="114" height="52"/>
+                                                <rect key="frame" x="0.0" y="0.0" width="122" height="52"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
                                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="P6z-J9-emW">
-                                                        <rect key="frame" x="0.0" y="18" width="114" height="16"/>
+                                                        <rect key="frame" x="0.0" y="18" width="122" height="16"/>
                                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                                         <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="LAJ-A9-nWF">
                                                             <font key="font" usesAppearanceFont="YES"/>
@@ -63,7 +62,7 @@
                                             </tableCellView>
                                         </prototypeCellViews>
                                     </tableColumn>
-                                    <tableColumn identifier="AutomaticTableColumnIdentifier.1" width="582" minWidth="40" maxWidth="1000" id="5A0-s0-Kc3">
+                                    <tableColumn identifier="AutomaticTableColumnIdentifier.1" width="619" minWidth="40" maxWidth="1000" id="5A0-s0-Kc3">
                                         <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
                                             <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
@@ -76,11 +75,11 @@
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                         <prototypeCellViews>
                                             <tableCellView id="wPA-2x-vh6">
-                                                <rect key="frame" x="149" y="0.0" width="579" height="52"/>
+                                                <rect key="frame" x="122" y="0.0" width="625" height="52"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
                                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zlk-wC-1F0">
-                                                        <rect key="frame" x="0.0" y="18" width="579" height="16"/>
+                                                        <rect key="frame" x="0.0" y="18" width="625" height="16"/>
                                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                                         <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Q2c-3b-6dl">
                                                             <font key="font" usesAppearanceFont="YES"/>
@@ -101,14 +100,14 @@
                         <nil key="backgroundColor"/>
                     </clipView>
                     <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="EZA-gz-bYi">
-                        <rect key="frame" x="1" y="451" width="745" height="15"/>
+                        <rect key="frame" x="-100" y="-100" width="732" height="15"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </scroller>
-                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="p5h-Ye-Pwa">
-                        <rect key="frame" x="224" y="17" width="15" height="102"/>
+                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="p5h-Ye-Pwa">
+                        <rect key="frame" x="-100" y="-100" width="15" height="424"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </scroller>
-                    <tableHeaderView key="headerView" wantsLayer="YES" id="i1G-mK-PE9">
+                    <tableHeaderView key="headerView" wantsLayer="YES" id="5ix-cJ-akY">
                         <rect key="frame" x="0.0" y="0.0" width="747" height="28"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </tableHeaderView>

+ 38 - 0
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingColumnHeaderCell.swift

@@ -0,0 +1,38 @@
+//
+//  KMBatchProcessingColumnHeaderCell.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/17.
+//
+
+import Cocoa
+
+class KMBatchProcessingColumnHeaderCell: NSTableHeaderCell {
+    
+    var offsetXValue: Float = 0.0
+    
+    override func draw(withFrame cellFrame: NSRect, in controlView: NSView) {
+        super.draw(withFrame: cellFrame, in: controlView)
+        
+        self.draw(frame: cellFrame, highlight: false)
+    }
+    
+    override func highlight(_ flag: Bool, withFrame cellFrame: NSRect, in controlView: NSView) {
+        self.draw(frame: cellFrame, highlight: true)
+    }
+    
+    func draw(frame: CGRect, highlight: Bool) {
+        NSColor.black.withAlphaComponent(1).setFill()
+        let path = NSBezierPath(roundedRect: frame, xRadius: 0, yRadius: 0)
+        path.fill()
+        
+        self.drawInterior(withFrame: frame, in: controlView ?? NSView())
+    }
+    
+    override func drawInterior(withFrame cellFrame: NSRect, in controlView: NSView) {
+        var titleRect = self.titleRect(forBounds: cellFrame)
+        titleRect.origin.x += 16
+        titleRect.origin.y += 8
+        self.attributedStringValue.draw(in: titleRect)
+    }
+}

+ 2 - 2
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingDeleteTableCell.xib

@@ -19,7 +19,7 @@
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V6R-Z5-vrK">
-                    <rect key="frame" x="62" y="11" width="20" height="20"/>
+                    <rect key="frame" x="116" y="11" width="20" height="20"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="20" id="do1-q7-e3j"/>
                         <constraint firstAttribute="height" constant="20" id="uWh-N9-uV0"/>
@@ -34,7 +34,7 @@
                 </button>
             </subviews>
             <constraints>
-                <constraint firstItem="V6R-Z5-vrK" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="IQC-bx-gKM"/>
+                <constraint firstAttribute="trailing" secondItem="V6R-Z5-vrK" secondAttribute="trailing" constant="8" id="D5W-b4-NKl"/>
                 <constraint firstItem="V6R-Z5-vrK" firstAttribute="centerY" secondItem="c22-O7-iKe" secondAttribute="centerY" id="IZg-UX-Awd"/>
             </constraints>
             <point key="canvasLocation" x="222" y="120"/>

+ 3 - 0
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingNameTableCell.swift

@@ -10,6 +10,7 @@ import Cocoa
 class KMBatchProcessingNameTableCell: KMBatchProcessingTableCell {
     @IBOutlet var contentView: NSView!
     
+    @IBOutlet weak var iconImageView: NSImageView!
     @IBOutlet weak var nameLabel: NSTextField!
     
     override func draw(_ dirtyRect: NSRect) {
@@ -50,6 +51,8 @@ class KMBatchProcessingNameTableCell: KMBatchProcessingTableCell {
     override func setup() {
         super.setup()
         
+        self.iconImageView.wantsLayer = true
+        self.iconImageView.layer?.backgroundColor = CGColor.black
     }
     
     

+ 13 - 2
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingNameTableCell.xib

@@ -9,6 +9,7 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMBatchProcessingNameTableCell" customModule="PDF_Office" customModuleProvider="target">
             <connections>
                 <outlet property="contentView" destination="c22-O7-iKe" id="FbY-fA-oEs"/>
+                <outlet property="iconImageView" destination="f0z-1i-ekg" id="br7-04-TKL"/>
                 <outlet property="nameLabel" destination="9BP-LK-TK6" id="dAh-4P-6ZZ"/>
             </connections>
         </customObject>
@@ -18,8 +19,16 @@
             <rect key="frame" x="0.0" y="0.0" width="146" height="40"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="f0z-1i-ekg">
+                    <rect key="frame" x="8" y="12" width="16" height="16"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="16" id="0CJ-dx-0Hd"/>
+                        <constraint firstAttribute="width" constant="16" id="9FE-g0-60T"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="d8O-hm-Icc"/>
+                </imageView>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9BP-LK-TK6">
-                    <rect key="frame" x="14" y="10" width="71" height="20"/>
+                    <rect key="frame" x="30" y="10" width="71" height="20"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="20" id="H0s-Nl-EiE"/>
                     </constraints>
@@ -31,8 +40,10 @@
                 </textField>
             </subviews>
             <constraints>
-                <constraint firstItem="9BP-LK-TK6" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="16" id="Vde-gQ-22O"/>
+                <constraint firstItem="9BP-LK-TK6" firstAttribute="leading" secondItem="f0z-1i-ekg" secondAttribute="trailing" constant="8" id="7RJ-by-OZ2"/>
+                <constraint firstItem="f0z-1i-ekg" firstAttribute="centerY" secondItem="c22-O7-iKe" secondAttribute="centerY" id="bLe-da-yWm"/>
                 <constraint firstItem="9BP-LK-TK6" firstAttribute="centerY" secondItem="c22-O7-iKe" secondAttribute="centerY" id="ddV-Cy-IHk"/>
+                <constraint firstItem="f0z-1i-ekg" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="8" id="ew5-56-2be"/>
             </constraints>
             <point key="canvasLocation" x="-236" y="96"/>
         </customView>

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMImageToPDFChooseView/KMImageToPDFChooseView.swift

@@ -46,6 +46,12 @@ class KMImageToPDFChooseView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/OCR/View/KMOCRChooseView/KMOCRChooseView.swift

@@ -38,6 +38,12 @@ class KMOCRChooseView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/BottomView/KMPrintBottomView.swift

@@ -36,6 +36,12 @@ class KMPrintBottomView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/KMPrintChooseView.swift

@@ -60,6 +60,12 @@ class KMPrintChooseView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/KMPrintChoosePageSizeView.swift

@@ -50,6 +50,12 @@ class KMPrintChoosePageSizeView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizeMultipageView.swift

@@ -44,6 +44,12 @@ class KMPrintChoosePageSizeMultipageView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizePamphletView.swift

@@ -44,6 +44,12 @@ class KMPrintChoosePageSizePamphletView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizePosterView.swift

@@ -56,6 +56,12 @@ class KMPrintChoosePageSizePosterView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/DealPaper/KMPrintChoosePageSizeSizeView.swift

@@ -40,6 +40,12 @@ class KMPrintChoosePageSizeSizeView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/ChooseView/View/View/PaperSet/View/KMPrintPaperSetView.swift

@@ -56,6 +56,12 @@ class KMPrintPaperSetView: NSView {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Print/View/Preview/KMPrintPreviewView.swift

@@ -48,6 +48,12 @@ class KMPrintPreviewView: NSView {
         notification()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),

+ 6 - 0
PDF Office/PDF Office/Class/PDFTools/Tools/KMTextFieldStepperView/KMTextFieldStepperView.swift

@@ -58,6 +58,12 @@ class KMTextFieldStepperView: NSView, NSTextFieldDelegate {
         setup()
     }
     
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
     private func initContentView() {
         //绑定xib
         let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),