Browse Source

综合-解决冲突

tangchao 2 years ago
parent
commit
aa1665e3e8
37 changed files with 1605 additions and 28 deletions
  1. 348 4
      PDF Office/PDF Office.xcodeproj/project.pbxproj
  2. BIN
      PDF Office/PDF Office.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile.xcuserdatad/UserInterfaceState.xcuserstate
  3. 107 11
      PDF Office/PDF Office.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 1 0
      PDF Office/PDF Office/Class/Home/ViewController/KMHomeViewController+Action.swift
  5. 85 0
      PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.swift
  6. 63 0
      PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.xib
  7. 149 0
      PDF Office/PDF Office/Class/PDFTools/Batch/Source/Batch_ic.pdf
  8. 136 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift
  9. 56 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.xib
  10. 43 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Model/KMBatchCollectionViewModel.swift
  11. 98 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Presenter/KMBatchCollectionViewPrensenter.swift
  12. 38 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/View/KMBatchCollectionViewItem.swift
  13. 60 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/View/KMBatchCollectionViewItem.xib
  14. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.swift
  15. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.xib
  16. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.swift
  17. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.xib
  18. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.swift
  19. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.xib
  20. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.swift
  21. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.xib
  22. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.swift
  23. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.xib
  24. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Header&Footer/KMBatchHeaderAndFooterView.swift
  25. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Header&Footer/KMBatchHeaderAndFooterView.xib
  26. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.swift
  27. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.xib
  28. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.swift
  29. 18 0
      PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.xib
  30. 10 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift
  31. 10 9
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.xib
  32. 2 1
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableViewModel/KMBatchProcessingTableViewModel.swift
  33. 0 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Presenter/KMBatchProcessingTableViewPresenter.swift
  34. 62 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingDeleteTableCell.swift
  35. 43 0
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingDeleteTableCell.xib
  36. 2 2
      PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingOrderTableCell.xib
  37. 4 1
      PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Thumbnail/KMThumbnailViewController.swift

+ 348 - 4
PDF Office/PDF Office.xcodeproj/project.pbxproj

@@ -850,6 +850,87 @@
 		AD9527EE295578BD0039D2BC /* KMBaseTextFieldPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9527ED295578BD0039D2BC /* KMBaseTextFieldPresenter.swift */; };
 		AD9527EF295578BD0039D2BC /* KMBaseTextFieldPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9527ED295578BD0039D2BC /* KMBaseTextFieldPresenter.swift */; };
 		AD9527F0295578BD0039D2BC /* KMBaseTextFieldPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9527ED295578BD0039D2BC /* KMBaseTextFieldPresenter.swift */; };
+		ADB1FE28297006DF00ED072D /* KMBatchWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE26297006DF00ED072D /* KMBatchWindowController.swift */; };
+		ADB1FE29297006DF00ED072D /* KMBatchWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE26297006DF00ED072D /* KMBatchWindowController.swift */; };
+		ADB1FE2A297006DF00ED072D /* KMBatchWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE26297006DF00ED072D /* KMBatchWindowController.swift */; };
+		ADB1FE2B297006DF00ED072D /* KMBatchWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE27297006DF00ED072D /* KMBatchWindowController.xib */; };
+		ADB1FE2C297006DF00ED072D /* KMBatchWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE27297006DF00ED072D /* KMBatchWindowController.xib */; };
+		ADB1FE2D297006DF00ED072D /* KMBatchWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE27297006DF00ED072D /* KMBatchWindowController.xib */; };
+		ADB1FE31297008E800ED072D /* KMBatchCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE30297008E800ED072D /* KMBatchCollectionView.swift */; };
+		ADB1FE32297008E800ED072D /* KMBatchCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE30297008E800ED072D /* KMBatchCollectionView.swift */; };
+		ADB1FE33297008E800ED072D /* KMBatchCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE30297008E800ED072D /* KMBatchCollectionView.swift */; };
+		ADB1FE35297008F400ED072D /* KMBatchCollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE34297008F400ED072D /* KMBatchCollectionView.xib */; };
+		ADB1FE36297008F400ED072D /* KMBatchCollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE34297008F400ED072D /* KMBatchCollectionView.xib */; };
+		ADB1FE37297008F400ED072D /* KMBatchCollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE34297008F400ED072D /* KMBatchCollectionView.xib */; };
+		ADB1FE3B29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE3929700D3400ED072D /* KMBatchCollectionViewItem.swift */; };
+		ADB1FE3C29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE3929700D3400ED072D /* KMBatchCollectionViewItem.swift */; };
+		ADB1FE3D29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE3929700D3400ED072D /* KMBatchCollectionViewItem.swift */; };
+		ADB1FE3E29700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE3A29700D3400ED072D /* KMBatchCollectionViewItem.xib */; };
+		ADB1FE3F29700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE3A29700D3400ED072D /* KMBatchCollectionViewItem.xib */; };
+		ADB1FE4029700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE3A29700D3400ED072D /* KMBatchCollectionViewItem.xib */; };
+		ADB1FE4329700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE4229700DAD00ED072D /* KMBatchCollectionViewModel.swift */; };
+		ADB1FE4429700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE4229700DAD00ED072D /* KMBatchCollectionViewModel.swift */; };
+		ADB1FE4529700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE4229700DAD00ED072D /* KMBatchCollectionViewModel.swift */; };
+		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 */; };
+		ADB1FE612975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE602975189600ED072D /* KMBatchProcessingDeleteTableCell.xib */; };
+		ADB1FE622975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE602975189600ED072D /* KMBatchProcessingDeleteTableCell.xib */; };
+		ADB1FE632975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE602975189600ED072D /* KMBatchProcessingDeleteTableCell.xib */; };
+		ADB1FE6E29752BB700ED072D /* KMBatchConverPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE6D29752BB700ED072D /* KMBatchConverPDFView.swift */; };
+		ADB1FE6F29752BB700ED072D /* KMBatchConverPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE6D29752BB700ED072D /* KMBatchConverPDFView.swift */; };
+		ADB1FE7029752BB700ED072D /* KMBatchConverPDFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE6D29752BB700ED072D /* KMBatchConverPDFView.swift */; };
+		ADB1FE7229752ED500ED072D /* KMBatchConverPDFView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE7129752ED500ED072D /* KMBatchConverPDFView.xib */; };
+		ADB1FE7329752ED500ED072D /* KMBatchConverPDFView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE7129752ED500ED072D /* KMBatchConverPDFView.xib */; };
+		ADB1FE7429752ED500ED072D /* KMBatchConverPDFView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE7129752ED500ED072D /* KMBatchConverPDFView.xib */; };
+		ADB1FE7629752F0900ED072D /* KMBatchCompressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE7529752F0900ED072D /* KMBatchCompressView.swift */; };
+		ADB1FE7729752F0900ED072D /* KMBatchCompressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE7529752F0900ED072D /* KMBatchCompressView.swift */; };
+		ADB1FE7829752F0900ED072D /* KMBatchCompressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE7529752F0900ED072D /* KMBatchCompressView.swift */; };
+		ADB1FE7A29752F1100ED072D /* KMBatchCompressView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE7929752F1100ED072D /* KMBatchCompressView.xib */; };
+		ADB1FE7B29752F1100ED072D /* KMBatchCompressView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE7929752F1100ED072D /* KMBatchCompressView.xib */; };
+		ADB1FE7C29752F1100ED072D /* KMBatchCompressView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE7929752F1100ED072D /* KMBatchCompressView.xib */; };
+		ADB1FE7E29752F2900ED072D /* KMBatchSecurityView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE7D29752F2900ED072D /* KMBatchSecurityView.swift */; };
+		ADB1FE7F29752F2900ED072D /* KMBatchSecurityView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE7D29752F2900ED072D /* KMBatchSecurityView.swift */; };
+		ADB1FE8029752F2900ED072D /* KMBatchSecurityView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE7D29752F2900ED072D /* KMBatchSecurityView.swift */; };
+		ADB1FE8229752F3200ED072D /* KMBatchSecurityView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE8129752F3200ED072D /* KMBatchSecurityView.xib */; };
+		ADB1FE8329752F3200ED072D /* KMBatchSecurityView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE8129752F3200ED072D /* KMBatchSecurityView.xib */; };
+		ADB1FE8429752F3200ED072D /* KMBatchSecurityView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE8129752F3200ED072D /* KMBatchSecurityView.xib */; };
+		ADB1FE8629752F4C00ED072D /* KMBatchWatermarkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE8529752F4C00ED072D /* KMBatchWatermarkView.swift */; };
+		ADB1FE8729752F4C00ED072D /* KMBatchWatermarkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE8529752F4C00ED072D /* KMBatchWatermarkView.swift */; };
+		ADB1FE8829752F4C00ED072D /* KMBatchWatermarkView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE8529752F4C00ED072D /* KMBatchWatermarkView.swift */; };
+		ADB1FE8A29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE8929752F5600ED072D /* KMBatchWatermarkView.xib */; };
+		ADB1FE8B29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE8929752F5600ED072D /* KMBatchWatermarkView.xib */; };
+		ADB1FE8C29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE8929752F5600ED072D /* KMBatchWatermarkView.xib */; };
+		ADB1FE8E29752F7000ED072D /* KMBatchBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE8D29752F7000ED072D /* KMBatchBackgroundView.swift */; };
+		ADB1FE8F29752F7000ED072D /* KMBatchBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE8D29752F7000ED072D /* KMBatchBackgroundView.swift */; };
+		ADB1FE9029752F7000ED072D /* KMBatchBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE8D29752F7000ED072D /* KMBatchBackgroundView.swift */; };
+		ADB1FE9229752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE9129752F7D00ED072D /* KMBatchBackgroundView.xib */; };
+		ADB1FE9329752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE9129752F7D00ED072D /* KMBatchBackgroundView.xib */; };
+		ADB1FE9429752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE9129752F7D00ED072D /* KMBatchBackgroundView.xib */; };
+		ADB1FE962975300B00ED072D /* KMBatchHeaderAndFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE952975300B00ED072D /* KMBatchHeaderAndFooterView.swift */; };
+		ADB1FE972975300B00ED072D /* KMBatchHeaderAndFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE952975300B00ED072D /* KMBatchHeaderAndFooterView.swift */; };
+		ADB1FE982975300B00ED072D /* KMBatchHeaderAndFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE952975300B00ED072D /* KMBatchHeaderAndFooterView.swift */; };
+		ADB1FE9A2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE992975301500ED072D /* KMBatchHeaderAndFooterView.xib */; };
+		ADB1FE9B2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE992975301500ED072D /* KMBatchHeaderAndFooterView.xib */; };
+		ADB1FE9C2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FE992975301500ED072D /* KMBatchHeaderAndFooterView.xib */; };
+		ADB1FE9E2975303400ED072D /* KMBatchBatesNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE9D2975303400ED072D /* KMBatchBatesNumberView.swift */; };
+		ADB1FE9F2975303400ED072D /* KMBatchBatesNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE9D2975303400ED072D /* KMBatchBatesNumberView.swift */; };
+		ADB1FEA02975303400ED072D /* KMBatchBatesNumberView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FE9D2975303400ED072D /* KMBatchBatesNumberView.swift */; };
+		ADB1FEA22975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEA12975303F00ED072D /* KMBatchBatesNumberView.xib */; };
+		ADB1FEA32975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEA12975303F00ED072D /* KMBatchBatesNumberView.xib */; };
+		ADB1FEA42975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB1FEA12975303F00ED072D /* KMBatchBatesNumberView.xib */; };
+		ADB1FEA62975305500ED072D /* KMBatchBatchRemoveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEA52975305500ED072D /* KMBatchBatchRemoveView.swift */; };
+		ADB1FEA72975305500ED072D /* KMBatchBatchRemoveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEA52975305500ED072D /* KMBatchBatchRemoveView.swift */; };
+		ADB1FEA82975305500ED072D /* KMBatchBatchRemoveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1FEA52975305500ED072D /* KMBatchBatchRemoveView.swift */; };
+		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 */; };
 		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 */; };
@@ -2243,6 +2324,33 @@
 		AD9527DA2952EE700039D2BC /* KMPrintPage_C.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPrintPage_C.swift; sourceTree = "<group>"; };
 		AD9527E92955520C0039D2BC /* KMBaseTextFieldModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBaseTextFieldModel.swift; sourceTree = "<group>"; };
 		AD9527ED295578BD0039D2BC /* KMBaseTextFieldPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBaseTextFieldPresenter.swift; sourceTree = "<group>"; };
+		ADB1FE26297006DF00ED072D /* KMBatchWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchWindowController.swift; sourceTree = "<group>"; };
+		ADB1FE27297006DF00ED072D /* KMBatchWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchWindowController.xib; sourceTree = "<group>"; };
+		ADB1FE30297008E800ED072D /* KMBatchCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchCollectionView.swift; sourceTree = "<group>"; };
+		ADB1FE34297008F400ED072D /* KMBatchCollectionView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchCollectionView.xib; sourceTree = "<group>"; };
+		ADB1FE3929700D3400ED072D /* KMBatchCollectionViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchCollectionViewItem.swift; sourceTree = "<group>"; };
+		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>"; };
+		ADB1FE7129752ED500ED072D /* KMBatchConverPDFView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchConverPDFView.xib; sourceTree = "<group>"; };
+		ADB1FE7529752F0900ED072D /* KMBatchCompressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchCompressView.swift; sourceTree = "<group>"; };
+		ADB1FE7929752F1100ED072D /* KMBatchCompressView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchCompressView.xib; sourceTree = "<group>"; };
+		ADB1FE7D29752F2900ED072D /* KMBatchSecurityView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchSecurityView.swift; sourceTree = "<group>"; };
+		ADB1FE8129752F3200ED072D /* KMBatchSecurityView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchSecurityView.xib; sourceTree = "<group>"; };
+		ADB1FE8529752F4C00ED072D /* KMBatchWatermarkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchWatermarkView.swift; sourceTree = "<group>"; };
+		ADB1FE8929752F5600ED072D /* KMBatchWatermarkView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchWatermarkView.xib; sourceTree = "<group>"; };
+		ADB1FE8D29752F7000ED072D /* KMBatchBackgroundView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchBackgroundView.swift; sourceTree = "<group>"; };
+		ADB1FE9129752F7D00ED072D /* KMBatchBackgroundView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchBackgroundView.xib; sourceTree = "<group>"; };
+		ADB1FE952975300B00ED072D /* KMBatchHeaderAndFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchHeaderAndFooterView.swift; sourceTree = "<group>"; };
+		ADB1FE992975301500ED072D /* KMBatchHeaderAndFooterView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBatchHeaderAndFooterView.xib; sourceTree = "<group>"; };
+		ADB1FE9D2975303400ED072D /* KMBatchBatesNumberView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchBatesNumberView.swift; sourceTree = "<group>"; };
+		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>"; };
 		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>"; };
@@ -3097,6 +3205,7 @@
 			isa = PBXGroup;
 			children = (
 				BB35C49C297535C800D46EE2 /* Redact */,
+				ADB1FE21297005DF00ED072D /* Batch */,
 				BB1EC7FA2967B24100EC0BC3 /* PageEdit */,
 				BBC2BCC2295DA8700036B983 /* Crop */,
 				BBEC00AB295C2AB500A26C98 /* Bates */,
@@ -3570,6 +3679,158 @@
 			path = Presenter;
 			sourceTree = "<group>";
 		};
+		ADB1FE21297005DF00ED072D /* Batch */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE4B2972958100ED072D /* Source */,
+				ADB1FE2E297008B000ED072D /* View */,
+				ADB1FE26297006DF00ED072D /* KMBatchWindowController.swift */,
+				ADB1FE27297006DF00ED072D /* KMBatchWindowController.xib */,
+			);
+			path = Batch;
+			sourceTree = "<group>";
+		};
+		ADB1FE2E297008B000ED072D /* View */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE642975211100ED072D /* Choose */,
+				ADB1FE2F297008CC00ED072D /* BatchCollectionView */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		ADB1FE2F297008CC00ED072D /* BatchCollectionView */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE462970262600ED072D /* Presenter */,
+				ADB1FE4129700D8800ED072D /* Model */,
+				ADB1FE3829700D0600ED072D /* View */,
+				ADB1FE30297008E800ED072D /* KMBatchCollectionView.swift */,
+				ADB1FE34297008F400ED072D /* KMBatchCollectionView.xib */,
+			);
+			path = BatchCollectionView;
+			sourceTree = "<group>";
+		};
+		ADB1FE3829700D0600ED072D /* View */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE3929700D3400ED072D /* KMBatchCollectionViewItem.swift */,
+				ADB1FE3A29700D3400ED072D /* KMBatchCollectionViewItem.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		ADB1FE4129700D8800ED072D /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE4229700DAD00ED072D /* KMBatchCollectionViewModel.swift */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		ADB1FE462970262600ED072D /* Presenter */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE472970264500ED072D /* KMBatchCollectionViewPrensenter.swift */,
+			);
+			path = Presenter;
+			sourceTree = "<group>";
+		};
+		ADB1FE4B2972958100ED072D /* Source */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE4C2972958B00ED072D /* Batch_ic.pdf */,
+			);
+			path = Source;
+			sourceTree = "<group>";
+		};
+		ADB1FE642975211100ED072D /* Choose */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE6C29752B3100ED072D /* BatchRemove */,
+				ADB1FE6B29752B2900ED072D /* BatesNumber */,
+				ADB1FE6A29752B1A00ED072D /* Header&Footer */,
+				ADB1FE6929752B1100ED072D /* Background */,
+				ADB1FE6829752B0900ED072D /* Watermark */,
+				ADB1FE6729752B0000ED072D /* Security */,
+				ADB1FE662975212300ED072D /* Compress */,
+				ADB1FE652975211700ED072D /* ConverPDF */,
+			);
+			path = Choose;
+			sourceTree = "<group>";
+		};
+		ADB1FE652975211700ED072D /* ConverPDF */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE6D29752BB700ED072D /* KMBatchConverPDFView.swift */,
+				ADB1FE7129752ED500ED072D /* KMBatchConverPDFView.xib */,
+			);
+			path = ConverPDF;
+			sourceTree = "<group>";
+		};
+		ADB1FE662975212300ED072D /* Compress */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE7529752F0900ED072D /* KMBatchCompressView.swift */,
+				ADB1FE7929752F1100ED072D /* KMBatchCompressView.xib */,
+			);
+			path = Compress;
+			sourceTree = "<group>";
+		};
+		ADB1FE6729752B0000ED072D /* Security */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE7D29752F2900ED072D /* KMBatchSecurityView.swift */,
+				ADB1FE8129752F3200ED072D /* KMBatchSecurityView.xib */,
+			);
+			path = Security;
+			sourceTree = "<group>";
+		};
+		ADB1FE6829752B0900ED072D /* Watermark */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE8529752F4C00ED072D /* KMBatchWatermarkView.swift */,
+				ADB1FE8929752F5600ED072D /* KMBatchWatermarkView.xib */,
+			);
+			path = Watermark;
+			sourceTree = "<group>";
+		};
+		ADB1FE6929752B1100ED072D /* Background */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE8D29752F7000ED072D /* KMBatchBackgroundView.swift */,
+				ADB1FE9129752F7D00ED072D /* KMBatchBackgroundView.xib */,
+			);
+			path = Background;
+			sourceTree = "<group>";
+		};
+		ADB1FE6A29752B1A00ED072D /* Header&Footer */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE952975300B00ED072D /* KMBatchHeaderAndFooterView.swift */,
+				ADB1FE992975301500ED072D /* KMBatchHeaderAndFooterView.xib */,
+			);
+			path = "Header&Footer";
+			sourceTree = "<group>";
+		};
+		ADB1FE6B29752B2900ED072D /* BatesNumber */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FE9D2975303400ED072D /* KMBatchBatesNumberView.swift */,
+				ADB1FEA12975303F00ED072D /* KMBatchBatesNumberView.xib */,
+			);
+			path = BatesNumber;
+			sourceTree = "<group>";
+		};
+		ADB1FE6C29752B3100ED072D /* BatchRemove */ = {
+			isa = PBXGroup;
+			children = (
+				ADB1FEA52975305500ED072D /* KMBatchBatchRemoveView.swift */,
+				ADB1FEA92975310A00ED072D /* KMBatchBatchRemoveView.xib */,
+			);
+			path = BatchRemove;
+			sourceTree = "<group>";
+		};
 		ADB2D6E229473FF00029D2B3 /* DealPaper */ = {
 			isa = PBXGroup;
 			children = (
@@ -3644,12 +3905,12 @@
 			path = KMBatchProcessingView;
 			sourceTree = "<group>";
 		};
-		ADC25DF42923BA0D0080A3F6 /* KMBatchProcessingTableViewPresenter */ = {
+		ADC25DF42923BA0D0080A3F6 /* Presenter */ = {
 			isa = PBXGroup;
 			children = (
 				ADCB98C0292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift */,
 			);
-			path = KMBatchProcessingTableViewPresenter;
+			path = Presenter;
 			sourceTree = "<group>";
 		};
 		ADC25DF52923BA0D0080A3F6 /* KMBatchProcessingTableViewModel */ = {
@@ -3663,6 +3924,7 @@
 		ADCB98FA29274B8D00B51A03 /* Views */ = {
 			isa = PBXGroup;
 			children = (
+				ADBA0463292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift */,
 				ADCB98F129261BDF00B51A03 /* KMBatchProcessingTableCell.swift */,
 				ADCB98D02924771600B51A03 /* KMBatchProcessingNameTableCell.swift */,
 				ADCB98D42924772200B51A03 /* KMBatchProcessingNameTableCell.xib */,
@@ -3672,7 +3934,8 @@
 				ADCB98E42924777A00B51A03 /* KMBatchProcessingSizeTableCell.xib */,
 				ADCB98E82924778C00B51A03 /* KMBatchProcessingStateTableCell.swift */,
 				ADCB98EC2924779800B51A03 /* KMBatchProcessingStateTableCell.xib */,
-				ADBA0463292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift */,
+				ADB1FE5C2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift */,
+				ADB1FE602975189600ED072D /* KMBatchProcessingDeleteTableCell.xib */,
 			);
 			name = Views;
 			path = Views/Tableview/Views;
@@ -3682,7 +3945,7 @@
 			isa = PBXGroup;
 			children = (
 				ADCB98FA29274B8D00B51A03 /* Views */,
-				ADC25DF42923BA0D0080A3F6 /* KMBatchProcessingTableViewPresenter */,
+				ADC25DF42923BA0D0080A3F6 /* Presenter */,
 				ADC25DF52923BA0D0080A3F6 /* KMBatchProcessingTableViewModel */,
 				ADCB98F529274B6B00B51A03 /* KMBatchProcessingTableView.swift */,
 				ADCB98FC292750A200B51A03 /* KMBatchProcessingTableView.xib */,
@@ -5174,7 +5437,9 @@
 				BBFE6E602930809A00142C01 /* KMMergeCollectionPageViewItem.xib in Resources */,
 				BBFBE6C228DD7B98008B2335 /* Assets.xcassets in Resources */,
 				9F1FE4DE29406E4700E952CA /* .gclient in Resources */,
+				ADB1FE2B297006DF00ED072D /* KMBatchWindowController.xib in Resources */,
 				9F1F82BF292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.xib in Resources */,
+				ADB1FEAA2975310A00ED072D /* KMBatchBatchRemoveView.xib in Resources */,
 				9F0CB48A29683DC400007028 /* KMPropertiesPanelPresetColorSubVC.xib in Resources */,
 				9F8DDF302924B855006CDC73 /* KMPDFToolsViewController.xib in Resources */,
 				9F705F732918E02C005199AD /* ceshi.pdf in Resources */,
@@ -5184,6 +5449,7 @@
 				ADD1B6FC2946C0D400C3FFF7 /* KMPrintChoosePageSizePamphletView.xib in Resources */,
 				ADCB98DD2924775B00B51A03 /* KMBatchProcessingOrderTableCell.xib in Resources */,
 				BB49ED11293F462E00C82CA2 /* KMConvertImageWindowController.xib in Resources */,
+				ADB1FE35297008F400ED072D /* KMBatchCollectionView.xib in Resources */,
 				9FBA0EF128FFC716001117AF /* KMHomeFastToolViewController.xib in Resources */,
 				899700F928F4051B009AF911 /* KMAnnotationViewController.xib in Resources */,
 				ADCB98ED2924779800B51A03 /* KMBatchProcessingStateTableCell.xib in Resources */,
@@ -5197,11 +5463,13 @@
 				ADC25DFC2923BA710080A3F6 /* KMImageToPDFWindowController.xib in Resources */,
 				AD4B4550294072B90076FA14 /* KMOCRWindowController.xib in Resources */,
 				89E4E6E62963CD82002DBA6F /* KMGeneralAnnotationViewController.xib in Resources */,
+				ADB1FE8A29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */,
 				AD44D656292C9E8C00A94554 /* KMImageToPDFChooseView.xib in Resources */,
 				9F1FE4E729406E4700E952CA /* COPYING in Resources */,
 				BB897237294B38DC0045787C /* KMWatermarkAdjectivePropertyBaseController.xib in Resources */,
 				BB2EDF4F296E63E5003BCF58 /* KMPageEditInsertCustomPageWindowController.xib in Resources */,
 				89E4E7412964160F002DBA6F /* KMAnnotationLinkViewController.xib in Resources */,
+				ADB1FE3E29700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */,
 				9F1FE3F4293F4F0F00E952CA /* Info.plist in Resources */,
 				89D9896F28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.xib in Resources */,
 				BBFE6E68293097A600142C01 /* KMPageRangePickerWindowController.xib in Resources */,
@@ -5212,6 +5480,7 @@
 				89E4E7852967BF5A002DBA6F /* KMCustomizeStampViewController.xib in Resources */,
 				F359917B292B7B8A000D25DE /* InitialUserDefaults.plist in Resources */,
 				BB8F455A295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
+				ADB1FE8229752F3200ED072D /* KMBatchSecurityView.xib in Resources */,
 				BB3EAEB0293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */,
 				9F705F79291A3A84005199AD /* KMHistoryFileDeleteWindowController.xib in Resources */,
 				9F0CB4622966C9E200007028 /* KMFormPropertPanelViewController.xib in Resources */,
@@ -5222,6 +5491,7 @@
 				8997011928F40898009AF911 /* KMThumbnailViewController.xib in Resources */,
 				9FA607E128FD4C9F00B46586 /* KMHomePopViewController.xib in Resources */,
 				89D2D2B92947316900BFF5FE /* Quick Start Guide_Widget.pdf in Resources */,
+				ADB1FE7229752ED500ED072D /* KMBatchConverPDFView.xib in Resources */,
 				9FDD0F9C2952FF4D000C4DAD /* comp-light.json in Resources */,
 				AD9527B229503D620039D2BC /* Untitled.pdf in Resources */,
 				F3B7DFA42949C8E300333201 /* CPDFListView.xcassets in Resources */,
@@ -5238,6 +5508,7 @@
 				BB4BD9CF2909026500A66A65 /* KMRightSideViewController.xib in Resources */,
 				BB99ACC5292DE22E0048AFD9 /* KMMergeViewController.xib in Resources */,
 				8997012E28F42F15009AF911 /* Biochemistry.pdf in Resources */,
+				ADB1FEA22975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
 				8942F7F32926087200389627 /* KMSearchViewController.xib in Resources */,
 				9F0CB46A2967E5CB00007028 /* KMPropertiesPanelSubViewController.xib in Resources */,
 				9F0CB4722967E63100007028 /* KMPropertiesPanelNameSubVC.xib in Resources */,
@@ -5249,6 +5520,7 @@
 				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 */,
@@ -5269,6 +5541,7 @@
 				BB49ECE0293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				ADB2D6FD294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */,
 				89D2D2FE294C806000BFF5FE /* KMPDFThumbnailItem.xib in Resources */,
+				ADB1FE7A29752F1100ED072D /* KMBatchCompressView.xib in Resources */,
 				BB6DD80F29347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				F3B7DF9D2948565000333201 /* CPDFListHoverAnnotationViewController.xib in Resources */,
 				899700EB28F3E4D3009AF911 /* MainWindowController.xib in Resources */,
@@ -5276,16 +5549,19 @@
 				ADD1B6AE2941E97F00C3FFF7 /* KMPrintWindowController.xib in Resources */,
 				BB1EC8012967B26700EC0BC3 /* KMPDFEditViewController.xib in Resources */,
 				BBEC00DC295C39FD00A26C98 /* KMBatesPropertyInfoController.xib in Resources */,
+				ADB1FE612975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */,
 				9FAAA32D290BD01D0046FFCE /* KMHomeHistoryFileViewController.xib in Resources */,
 				BBC3480F29558DC1008D2CD1 /* KMBackgroundController.xib in Resources */,
 				ADD1B6F82946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
 				89E4E76429656A88002DBA6F /* KMAnnotationStampViewController.xib in Resources */,
 				BBC745ED295F067B0072C2ED /* KMCropSettingWindowController.xib in Resources */,
 				89E9B3F9295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib in Resources */,
+				ADB1FE9A2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */,
 				9F8539CE29430BF300DF644E /* KMBrowserWindowController.xib in Resources */,
 				9F0CB49229683DEE00007028 /* KMPropertiesPanelLineSubVC.xib in Resources */,
 				BB8B17362907B64D001C5EA5 /* CipherTextView.xib in Resources */,
 				BBC348562958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */,
+				ADB1FE9229752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */,
 				9F1F82B7292DEF370092C4B4 /* KMCloudDocumentsViewController.xib in Resources */,
 				9F853A022947137500DF644E /* default-icon.pdf in Resources */,
 				BBC348052955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.xib in Resources */,
@@ -5351,6 +5627,7 @@
 				89E9B40A295D268E00AEFA61 /* KMEditImagePropertyViewController.xib in Resources */,
 				BB89724A294C19980045787C /* KMWatermarkAdjectiveListController.xib in Resources */,
 				89E4E6E72963CD82002DBA6F /* KMGeneralAnnotationViewController.xib in Resources */,
+				ADB1FE9B2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */,
 				BBA8B7A72935CD740097D183 /* KMRemovePasswordAlertWindowController.xib in Resources */,
 				BB99ACC6292DE22E0048AFD9 /* KMMergeViewController.xib in Resources */,
 				9F0CB49B29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
@@ -5358,6 +5635,8 @@
 				9FDD0F9A2952FF4D000C4DAD /* alias-light.json in Resources */,
 				ADD1B6F92946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
 				ADD1B6CC2942E85300C3FFF7 /* KMPrintBottomView.xib in Resources */,
+				ADB1FE3F29700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */,
+				ADB1FE36297008F400ED072D /* KMBatchCollectionView.xib in Resources */,
 				9F0CB4732967E63100007028 /* KMPropertiesPanelNameSubVC.xib in Resources */,
 				89316856296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
 				BBC3483F2955A60B008D2CD1 /* KMBackgroundPropertyInfoController.xib in Resources */,
@@ -5387,6 +5666,7 @@
 				BBC3481029558DC1008D2CD1 /* KMBackgroundController.xib in Resources */,
 				AD9527B329503D620039D2BC /* Untitled.pdf in Resources */,
 				BB5DF1ED2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.xib in Resources */,
+				ADB1FE622975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */,
 				89E4E77D2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
 				BB49ECE1293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				BBC348572958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */,
@@ -5403,22 +5683,28 @@
 				ADB2D6F3294741720029D2B3 /* KMPrintPaperSetView.xib in Resources */,
 				ADCB98DE2924775B00B51A03 /* KMBatchProcessingOrderTableCell.xib in Resources */,
 				BB6DD81029347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
+				ADB1FEA32975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
 				89E4E7302963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
 				BB2F61542966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				9F0CB4632966C9E200007028 /* KMFormPropertPanelViewController.xib in Resources */,
 				ADB2D6FE294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */,
 				ADB2D6EA294740F30029D2B3 /* KMPrintPaperSetWindowController.xib in Resources */,
 				AD4B456D294092160076FA14 /* KMOCRChooseView.xib in Resources */,
+				ADB1FE9329752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */,
 				AD44D657292C9E8C00A94554 /* KMImageToPDFChooseView.xib in Resources */,
 				9F853A092947137500DF644E /* newtab.pdf in Resources */,
+				ADB1FE7329752ED500ED072D /* KMBatchConverPDFView.xib in Resources */,
 				9F0CB4A329683E2600007028 /* KMPropertiesPanelSizeSubVC.xib in Resources */,
 				BBC34820295593F0008D2CD1 /* KMBackgroundListController.xib in Resources */,
 				9F1F82C0292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.xib in Resources */,
 				BB5DF1F52959C9F00025CDA1 /* KMHeaderFooterController.xib in Resources */,
+				ADB1FEAB2975310A00ED072D /* KMBatchBatchRemoveView.xib in Resources */,
 				8997012F28F42F15009AF911 /* Biochemistry.pdf in Resources */,
 				9F1FE4DF29406E4700E952CA /* .gclient in Resources */,
 				BBFBE74D28DD7DE8008B2335 /* Assets.xcassets in Resources */,
+				ADB1FE7B29752F1100ED072D /* KMBatchCompressView.xib in Resources */,
 				8997010A28F4082C009AF911 /* KMFromViewController.xib in Resources */,
+				ADB1FE8329752F3200ED072D /* KMBatchSecurityView.xib in Resources */,
 				9F0CB48B29683DC400007028 /* KMPropertiesPanelPresetColorSubVC.xib in Resources */,
 				89D2D2FF294C806000BFF5FE /* KMPDFThumbnailItem.xib in Resources */,
 				89E4E70C2963D62B002DBA6F /* KMAnnotationFontWindowController.xib in Resources */,
@@ -5426,10 +5712,12 @@
 				8931684D296E436B0073EA59 /* KMSignatureWindowController.xib in Resources */,
 				9F8539DB294318D600DF644E /* TabsImage.xcassets in Resources */,
 				BBEC00DD295C39FD00A26C98 /* KMBatesPropertyInfoController.xib in Resources */,
+				ADB1FE8B29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */,
 				BBA8B7B4293635D80097D183 /* KMPasswordInputWindow.xib in Resources */,
 				9F78EFBF28F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
 				9F8539FA2947137500DF644E /* newtab_p.pdf in Resources */,
 				9FBA0EF228FFC716001117AF /* KMHomeFastToolViewController.xib in Resources */,
+				ADB1FE2C297006DF00ED072D /* KMBatchWindowController.xib in Resources */,
 				AD4B4551294072B90076FA14 /* KMOCRWindowController.xib in Resources */,
 				F359917C292B7B8A000D25DE /* InitialUserDefaults.plist in Resources */,
 				BBFBE74A28DD7DDD008B2335 /* Main.storyboard in Resources */,
@@ -5476,6 +5764,7 @@
 				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 */,
@@ -5537,6 +5826,7 @@
 				BB49ED03293F459500C82CA2 /* KMConvertPPTsWindowController.xib in Resources */,
 				BB89723F294B3C840045787C /* KMWatermarkPropertyController.xib in Resources */,
 				BB49ECFB293F44DC00C82CA2 /* KMConvertExcelWindowController.xib in Resources */,
+				ADB1FE9429752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */,
 				9F853A042947137500DF644E /* default-icon.pdf in Resources */,
 				9F8539ED2947131F00DF644E /* KMChromiumTabView.xib in Resources */,
 				BBEC00DE295C39FD00A26C98 /* KMBatesPropertyInfoController.xib in Resources */,
@@ -5544,6 +5834,7 @@
 				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 */,
 				89E4E73A2964148E002DBA6F /* KMAnnotationPropertiesViewController.xib in Resources */,
 				9F78EFC028F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
@@ -5558,6 +5849,7 @@
 				ADD1B6F22946C06C00C3FFF7 /* KMPrintChoosePageSizeSizeView.xib in Resources */,
 				ADD1B6F62946C07800C3FFF7 /* KMPrintChoosePageSizePosterView.xib in Resources */,
 				89E4E6F12963D1B7002DBA6F /* KMColorPickerViewController.xib in Resources */,
+				ADB1FE37297008F400ED072D /* KMBatchCollectionView.xib in Resources */,
 				BBFE6E6A293097A600142C01 /* KMPageRangePickerWindowController.xib in Resources */,
 				BBC34821295593F0008D2CD1 /* KMBackgroundListController.xib in Resources */,
 				ADD1B6FA2946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
@@ -5577,14 +5869,17 @@
 				899700E428F3A9F2009AF911 /* KMHomeWindowController.xib in Resources */,
 				BBC348402955A60B008D2CD1 /* KMBackgroundPropertyInfoController.xib in Resources */,
 				9FDD0F9E2952FF4D000C4DAD /* comp-light.json in Resources */,
+				ADB1FEA42975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
 				9F8539E9294712D600DF644E /* KMChromiumTabContents.xib in Resources */,
 				9F8DDF322924B855006CDC73 /* KMPDFToolsViewController.xib in Resources */,
 				BBEC00BC295C2C1600A26C98 /* KMBatesPropertyHomeController.xib in Resources */,
+				ADB1FE9C2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */,
 				8997011B28F40898009AF911 /* KMThumbnailViewController.xib in Resources */,
 				8942F7B42921D28200389627 /* Quick Start Guide.pdf in Resources */,
 				BB89721D294AED6C0045787C /* KMWatermarkAdjectiveBaseController.xib in Resources */,
 				ADB2D6EB294740F30029D2B3 /* KMPrintPaperSetWindowController.xib in Resources */,
 				899700FB28F4051B009AF911 /* KMAnnotationViewController.xib in Resources */,
+				ADB1FEAC2975310A00ED072D /* KMBatchBatchRemoveView.xib in Resources */,
 				BB3EAEB2293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */,
 				ADD1B6CD2942E85300C3FFF7 /* KMPrintBottomView.xib in Resources */,
 				9F853A012947137500DF644E /* throbber.png in Resources */,
@@ -5597,6 +5892,7 @@
 				89E4E7872967BF5A002DBA6F /* KMCustomizeStampViewController.xib in Resources */,
 				9F853A0A2947137500DF644E /* newtab.pdf in Resources */,
 				8997011328F40842009AF911 /* KMOutlineViewController.xib in Resources */,
+				ADB1FE8429752F3200ED072D /* KMBatchSecurityView.xib in Resources */,
 				9FBA0EE628FEC253001117AF /* KMProductPromotionViewController.xib in Resources */,
 				89E9B3FB295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib in Resources */,
 				BB1EC8032967B26700EC0BC3 /* KMPDFEditViewController.xib in Resources */,
@@ -5607,6 +5903,7 @@
 				BB6DD81129347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				BB49ECE2293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				ADD1B6D129431D7100C3FFF7 /* KMPrintPreviewView.xib in Resources */,
+				ADB1FE4029700D3400ED072D /* KMBatchCollectionViewItem.xib in Resources */,
 				9F1F82DF292F84D60092C4B4 /* KMHomeInsertActionViewController.xib in Resources */,
 				9F1FE4E029406E4700E952CA /* .gclient in Resources */,
 				ADCB98EF2924779800B51A03 /* KMBatchProcessingStateTableCell.xib in Resources */,
@@ -5614,6 +5911,7 @@
 				9FA607E328FD4C9F00B46586 /* KMHomePopViewController.xib in Resources */,
 				AD44D658292C9E8C00A94554 /* KMImageToPDFChooseView.xib in Resources */,
 				BB4BD9D12909026500A66A65 /* KMRightSideViewController.xib in Resources */,
+				ADB1FE8C29752F5600ED072D /* KMBatchWatermarkView.xib in Resources */,
 				89D2D2BB2947316900BFF5FE /* Quick Start Guide_Widget.pdf in Resources */,
 				9F0CB49429683DEE00007028 /* KMPropertiesPanelLineSubVC.xib in Resources */,
 				BBC348072955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.xib in Resources */,
@@ -5630,8 +5928,10 @@
 				BB2F615D2966B69D001CB369 /* KMWatermarkPropertyHomeController.xib in Resources */,
 				ADD1B6C12942DD3D00C3FFF7 /* KMPrintChooseView.xib in Resources */,
 				9F1F82C1292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.xib in Resources */,
+				ADB1FE2D297006DF00ED072D /* KMBatchWindowController.xib in Resources */,
 				9FDD0F69294AB645000C4DAD /* KMMainViewController.xib in Resources */,
 				9FBA0EF328FFC716001117AF /* KMHomeFastToolViewController.xib in Resources */,
+				ADB1FE7429752ED500ED072D /* KMBatchConverPDFView.xib in Resources */,
 				8942F7F52926087200389627 /* KMSearchViewController.xib in Resources */,
 				BBFE6E7A2930E53000142C01 /* KMMergePopoverViewController.xib in Resources */,
 				89D9897128FD50EF003A3E87 /* KMAnnotationCollectionViewItem.xib in Resources */,
@@ -5643,6 +5943,7 @@
 				9F0CB48C29683DC400007028 /* KMPropertiesPanelPresetColorSubVC.xib in Resources */,
 				9F0CB49C29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				BB49ED0B293F461500C82CA2 /* KMConvertCSVWindowController.xib in Resources */,
+				ADB1FE632975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */,
 				89752DEF293875FC003FF08E /* KMMainToolbarController.xib in Resources */,
 				89752E092939DB42003FF08E /* KMToolbarViewController.xib in Resources */,
 				BBA8B7A82935CD740097D183 /* KMRemovePasswordAlertWindowController.xib in Resources */,
@@ -5679,6 +5980,7 @@
 				9F8539F82947137500DF644E /* sadfavicon.png in Resources */,
 				9F8539FB2947137500DF644E /* newtab_p.pdf in Resources */,
 				BB89725B294C559F0045787C /* KMWatermarkPropertyCreateController.xib in Resources */,
+				ADB1FE7C29752F1100ED072D /* KMBatchCompressView.xib in Resources */,
 				ADB2D6F4294741720029D2B3 /* KMPrintPaperSetView.xib in Resources */,
 				BB49ED13293F462E00C82CA2 /* KMConvertImageWindowController.xib in Resources */,
 				9F0CB46C2967E5CB00007028 /* KMPropertiesPanelSubViewController.xib in Resources */,
@@ -5740,6 +6042,7 @@
 				BB86C21E28F561F8005AD968 /* SKRuntime.m in Sources */,
 				9F1FE4C329406E4700E952CA /* CTPageTransition.c in Sources */,
 				9FA607DE28FD4C9F00B46586 /* KMHomePopViewController.swift in Sources */,
+				ADB1FE5D2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */,
 				BB162E9B295073B40088E9D1 /* KMWatermarkManager.swift in Sources */,
 				BB4BD9CC2909026500A66A65 /* KMRightSideViewController.swift in Sources */,
 				9F1FE4B429406E4700E952CA /* CTBrowser.m in Sources */,
@@ -5762,6 +6065,7 @@
 				9F1FE49F29406E4700E952CA /* HoverButton.m in Sources */,
 				F37322F0292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */,
 				F34BF93029530559002C25A2 /* NSBitmapImageRep+PDFListView.m in Sources */,
+				ADB1FE482970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */,
 				899700DF28F3A9F2009AF911 /* KMHomeWindowController.swift in Sources */,
 				F34BF949295310AB002C25A2 /* NSUserDefaults+PDFListView.m in Sources */,
 				BBEC00C7295C319400A26C98 /* KMBatesManager.swift in Sources */,
@@ -5777,6 +6081,7 @@
 				8931683A296E436B0073EA59 /* KMSignatureWindowController.m in Sources */,
 				BBF38A5A294F2B760086D025 /* KMWatermarkPositionView.swift in Sources */,
 				BB8F4586295B19AC0037EA22 /* KMHeaderFooterDateInfoView.swift in Sources */,
+				ADB1FE8629752F4C00ED072D /* KMBatchWatermarkView.swift in Sources */,
 				BB1EC8112967EB5A00EC0BC3 /* KMPageEditThumbnailViewKMPageEditThumbnailView_OC.m in Sources */,
 				F3B7DF9A2948565000333201 /* CPDFListHoverAnnotationViewController.m in Sources */,
 				9FDD0FAE29534FDC000C4DAD /* KMCompLight.swift in Sources */,
@@ -5825,6 +6130,7 @@
 				BB8F457A295AFB330037EA22 /* KMHeaderFooterFontInfoView.swift in Sources */,
 				8997010628F4082C009AF911 /* KMFromViewController.swift in Sources */,
 				BBD1F78B296FACA300343885 /* KMPageEditExtractSettingView.swift in Sources */,
+				ADB1FE8E29752F7000ED072D /* KMBatchBackgroundView.swift in Sources */,
 				9FDD0F77294FEF64000C4DAD /* KMConvertPDFManager.swift in Sources */,
 				9F8539D62943180000DF644E /* KMTabAppearance.swift in Sources */,
 				BB5DF1E92959C5CB0025CDA1 /* KMHeaderFooterPreviewController.swift in Sources */,
@@ -5864,6 +6170,7 @@
 				F34BF94E29531213002C25A2 /* NSGraphics+PDFListView.m in Sources */,
 				9F1FE4A829406E4700E952CA /* CTBrowserWindowController.m in Sources */,
 				89D9897828FE895A003A3E87 /* KMOutlineCellView.swift in Sources */,
+				ADB1FEA62975305500ED072D /* KMBatchBatchRemoveView.swift in Sources */,
 				9FDD0F802952FC36000C4DAD /* KMComponentLibraryTool.swift in Sources */,
 				BBFE6E582930724B00142C01 /* KMMergePageModel.swift in Sources */,
 				BB897229294B08720045787C /* KMWatermarkAdjectiveTopBarItemModel.swift in Sources */,
@@ -5881,9 +6188,11 @@
 				F37322F3292DF9410013862C /* CSelfSignAnnotationFreeText.m in Sources */,
 				9F1FE4D829406E4700E952CA /* NSString+Utils.m in Sources */,
 				BB6DD81829348A00001F0544 /* KMSecureEncryptComboBoxCellView.swift in Sources */,
+				ADB1FE3B29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */,
 				89752D9A2936E675003FF08E /* KMToolBarBox.swift in Sources */,
 				BBEC00AF295C2AF300A26C98 /* KMBatesPreviewController.swift in Sources */,
 				BBC348332955A118008D2CD1 /* KMCreateBackgroundController.swift in Sources */,
+				ADB1FE7629752F0900ED072D /* KMBatchCompressView.swift in Sources */,
 				BBFE6E87293210AB00142C01 /* KMCompressCellView.swift in Sources */,
 				BB246DA428F6B492005E8F52 /* NSBezierPath_SKExtensions.m in Sources */,
 				89D9895E28FD21E6003A3E87 /* KMAnnotationCollectionView.swift in Sources */,
@@ -5896,11 +6205,13 @@
 				ADD1B6E42946C00800C3FFF7 /* KMPrintChoosePageSizePosterView.swift in Sources */,
 				9F1FE4BA29406E4700E952CA /* NSImage+CTAdditions.m in Sources */,
 				BB6B4C08292F53CE0071CA06 /* KMMergeFileModel.swift in Sources */,
+				ADB1FE7E29752F2900ED072D /* KMBatchSecurityView.swift in Sources */,
 				9FDD0FB229534FEA000C4DAD /* KMGlobal.swift in Sources */,
 				9F1FE49329406E4700E952CA /* common.m in Sources */,
 				8997011F28F41AB8009AF911 /* KMLeftSideViewController.swift in Sources */,
 				BB162E97295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
 				ADD1B6EC2946C04C00C3FFF7 /* KMPrintChoosePageSizePamphletView.swift in Sources */,
+				ADB1FE31297008E800ED072D /* KMBatchCollectionView.swift in Sources */,
 				9FAAA325290A69920046FFCE /* KMToolSetScroller.swift in Sources */,
 				9FDD0F882952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
 				9F1FE4C629406E4700E952CA /* CTUtil.m in Sources */,
@@ -5987,6 +6298,7 @@
 				8942F80929275CBC00389627 /* KMOCToolClass.m in Sources */,
 				BB8F4569295ABDC10037EA22 /* KMWatermarkAdjectiveBaseModel.swift in Sources */,
 				BB88E45829404752002B3655 /* KMPDFConvert.swift in Sources */,
+				ADB1FE9E2975303400ED072D /* KMBatchBatesNumberView.swift in Sources */,
 				9F1FE4CC29406E4700E952CA /* CTTabContentsController.m in Sources */,
 				BBF38A62294F53FD0086D025 /* KMWatermarkFileView.swift in Sources */,
 				BBC3482E29559E12008D2CD1 /* KMBackgroundModel.swift in Sources */,
@@ -6024,6 +6336,7 @@
 				BB88E43B294023CB002B3655 /* KMDocumentModel.swift in Sources */,
 				BBC3482929559B22008D2CD1 /* KMBackgroundListCell.swift in Sources */,
 				ADCB98F229261BDF00B51A03 /* KMBatchProcessingTableCell.swift in Sources */,
+				ADB1FE28297006DF00ED072D /* KMBatchWindowController.swift in Sources */,
 				F386D15A293E152F00C44524 /* CPDFListViewColorMenuItemView.m in Sources */,
 				9F1F82EE293609F60092C4B4 /* CPDFDocument+PageEditManager.swift in Sources */,
 				89D2D2E2294C452B00BFF5FE /* KMPDFThumbnailView.swift in Sources */,
@@ -6039,6 +6352,7 @@
 				9FDD0FB7295D5230000C4DAD /* KMToolbarController.swift in Sources */,
 				9F1FE4F929406E4700E952CA /* CTTabStripView.m in Sources */,
 				89316852296E45CA0073EA59 /* KMImageAccessoryController.m in Sources */,
+				ADB1FE962975300B00ED072D /* KMBatchHeaderAndFooterView.swift in Sources */,
 				F3732323292DFFFE0013862C /* CPDFListView+Extension.m in Sources */,
 				9F1FE4C029406E4700E952CA /* NSWindow+CTThemed.m in Sources */,
 				F37322E1292DF9410013862C /* CPDFChoiceWidgetAnnotation+PDFListView.m in Sources */,
@@ -6050,6 +6364,7 @@
 				89D2D2C5294972B900BFF5FE /* KMFormCellView.swift in Sources */,
 				BB897224294B07960045787C /* KMWatermarkAdjectiveTopBarItemView.swift in Sources */,
 				9F1F82BC292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.swift in Sources */,
+				ADB1FE4329700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */,
 				F34BF93F29530D02002C25A2 /* NSBezierPath+PDFListView.m in Sources */,
 				AD9527EA2955520C0039D2BC /* KMBaseTextFieldModel.swift in Sources */,
 				F37322DB292DF9410013862C /* CPDFPage+PDFListView.m in Sources */,
@@ -6062,6 +6377,7 @@
 				BB6DD814293486FA001F0544 /* KMSecureEncryptPasswordCellView.swift in Sources */,
 				BB897269294DB41D0045787C /* KMWatermarkAdjectivePositionView.swift in Sources */,
 				BB8B173C2907CDD9001C5EA5 /* NibLoadable.swift in Sources */,
+				ADB1FE6E29752BB700ED072D /* KMBatchConverPDFView.swift in Sources */,
 				BB8F4557295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
 				BBC745F7296178BD0072C2ED /* KMCropTools.swift in Sources */,
 				AD9527DB2952EE700039D2BC /* KMPrintPage_C.swift in Sources */,
@@ -6193,6 +6509,7 @@
 				8942F7C02923670F00389627 /* KMBOTAManagerClass.swift in Sources */,
 				BB897242294C028A0045787C /* KMWatermarkAdjectiveSegementControl.swift in Sources */,
 				9F1FE4B529406E4700E952CA /* CTBrowser.m in Sources */,
+				ADB1FE5E2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */,
 				9FDD0FAB29534FCC000C4DAD /* KMAliasLight.swift in Sources */,
 				BBF38A63294F53FD0086D025 /* KMWatermarkFileView.swift in Sources */,
 				F37322F4292DF9410013862C /* CSelfSignAnnotationFreeText.m in Sources */,
@@ -6215,6 +6532,7 @@
 				9F1F82DB292F84D60092C4B4 /* KMHomeInsertActionViewController.swift in Sources */,
 				BB86C1EE28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				9F1FE4A029406E4700E952CA /* HoverButton.m in Sources */,
+				ADB1FE492970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */,
 				89D9896D28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.swift in Sources */,
 				BB86C1EE28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				BBEC00C8295C319400A26C98 /* KMBatesManager.swift in Sources */,
@@ -6230,6 +6548,7 @@
 				8931683B296E436B0073EA59 /* KMSignatureWindowController.m in Sources */,
 				9FDD0FB329534FEA000C4DAD /* KMGlobal.swift in Sources */,
 				BB8F4587295B19AC0037EA22 /* KMHeaderFooterDateInfoView.swift in Sources */,
+				ADB1FE8729752F4C00ED072D /* KMBatchWatermarkView.swift in Sources */,
 				BB1EC8122967EB5A00EC0BC3 /* KMPageEditThumbnailViewKMPageEditThumbnailView_OC.m in Sources */,
 				ADCB98C62924730000B51A03 /* KMBatchProcessingTableViewModel.swift in Sources */,
 				89D2D2DF294C451400BFF5FE /* KMThumbnailViewController.swift in Sources */,
@@ -6278,6 +6597,7 @@
 				BB8F457B295AFB330037EA22 /* KMHeaderFooterFontInfoView.swift in Sources */,
 				9FDD0F892952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
 				BBD1F78C296FACA300343885 /* KMPageEditExtractSettingView.swift in Sources */,
+				ADB1FE8F29752F7000ED072D /* KMBatchBackgroundView.swift in Sources */,
 				AD44D653292C9E7900A94554 /* KMImageToPDFChooseView.swift in Sources */,
 				89D2D2E3294C452B00BFF5FE /* KMPDFThumbnailView.swift in Sources */,
 				BB5DF1EA2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.swift in Sources */,
@@ -6317,6 +6637,7 @@
 				F3732334292F7B8D0013862C /* CStampSignatureObject.m in Sources */,
 				9F1FE4BE29406E4700E952CA /* URLDropTarget.m in Sources */,
 				9F705F8A291E576D005199AD /* KMTableView.swift in Sources */,
+				ADB1FEA72975305500ED072D /* KMBatchBatchRemoveView.swift in Sources */,
 				BB86C1F328F54535005AD968 /* CPDFListView+KeyEvent.m in Sources */,
 				BB897247294C19980045787C /* KMWatermarkAdjectiveListController.swift in Sources */,
 				9F1FE4A929406E4700E952CA /* CTBrowserWindowController.m in Sources */,
@@ -6334,9 +6655,11 @@
 				ADD1B6A629416FE800C3FFF7 /* KMOCRPresenter.swift in Sources */,
 				89D9895F28FD21E6003A3E87 /* KMAnnotationCollectionView.swift in Sources */,
 				BB897257294C559F0045787C /* KMWatermarkPropertyCreateController.swift in Sources */,
+				ADB1FE3C29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */,
 				ADC25DFA2923BA710080A3F6 /* KMImageToPDFWindowController.swift in Sources */,
 				BBEC00B0295C2AF300A26C98 /* KMBatesPreviewController.swift in Sources */,
 				BBC348342955A118008D2CD1 /* KMCreateBackgroundController.swift in Sources */,
+				ADB1FE7729752F0900ED072D /* KMBatchCompressView.swift in Sources */,
 				F37322F7292DF9410013862C /* CSelfSignAnnotation.m in Sources */,
 				9F1FE4D929406E4700E952CA /* NSString+Utils.m in Sources */,
 				ADCB98CA2924741B00B51A03 /* KMBatchProcessingView.swift in Sources */,
@@ -6349,11 +6672,13 @@
 				F37322E5292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */,
 				F3732303292DF9410013862C /* CPDFLinkAnnotation+PDFListView.m in Sources */,
 				9FAAA326290A69920046FFCE /* KMToolSetScroller.swift in Sources */,
+				ADB1FE7F29752F2900ED072D /* KMBatchSecurityView.swift in Sources */,
 				89752DC32937033F003FF08E /* KMPopMenuButtonCell.m in Sources */,
 				BB89724E294C1DCE0045787C /* KMWatermarkAdjectiveListTableCellView.swift in Sources */,
 				ADD1B6E52946C00800C3FFF7 /* KMPrintChoosePageSizePosterView.swift in Sources */,
 				9F1FE4BB29406E4700E952CA /* NSImage+CTAdditions.m in Sources */,
 				8997012028F41AB8009AF911 /* KMLeftSideViewController.swift in Sources */,
+				ADB1FE32297008E800ED072D /* KMBatchCollectionView.swift in Sources */,
 				9F1FE49429406E4700E952CA /* common.m in Sources */,
 				BBFBE74728DD7DB7008B2335 /* ViewController.swift in Sources */,
 				9FDD0F812952FC36000C4DAD /* KMComponentLibraryTool.swift in Sources */,
@@ -6440,6 +6765,7 @@
 				8942F818292B678100389627 /* KMAnnotationTableCellView.swift in Sources */,
 				BB8F456A295ABDC10037EA22 /* KMWatermarkAdjectiveBaseModel.swift in Sources */,
 				9F1FE4E229406E4700E952CA /* GTMNSAnimation+Duration.m in Sources */,
+				ADB1FE9F2975303400ED072D /* KMBatchBatesNumberView.swift in Sources */,
 				BB49ED22293F527700C82CA2 /* KMConvertExcelSettingView.swift in Sources */,
 				9F705F77291A3A84005199AD /* KMHistoryFileDeleteWindowController.swift in Sources */,
 				BBC3482F29559E12008D2CD1 /* KMBackgroundModel.swift in Sources */,
@@ -6477,6 +6803,7 @@
 				BB6DD81D29348F31001F0544 /* KMSecureTextFiled.swift in Sources */,
 				BBC3482A29559B22008D2CD1 /* KMBackgroundListCell.swift in Sources */,
 				F386D15B293E152F00C44524 /* CPDFListViewColorMenuItemView.m in Sources */,
+				ADB1FE29297006DF00ED072D /* KMBatchWindowController.swift in Sources */,
 				BB897266294C724D0045787C /* KMWatermarkAdjectiveOutsideView.swift in Sources */,
 				BBF38A5B294F2B760086D025 /* KMWatermarkPositionView.swift in Sources */,
 				BBFBE74628DD7DB7008B2335 /* AppDelegate.swift in Sources */,
@@ -6492,6 +6819,7 @@
 				9FDD0FB8295D5230000C4DAD /* KMToolbarController.swift in Sources */,
 				BB162E98295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
 				89316853296E45CA0073EA59 /* KMImageAccessoryController.m in Sources */,
+				ADB1FE972975300B00ED072D /* KMBatchHeaderAndFooterView.swift in Sources */,
 				BBA8B7A42935CD740097D183 /* KMRemovePasswordAlertWindowController.swift in Sources */,
 				F37322EE292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m in Sources */,
 				9F1FE4FA29406E4700E952CA /* CTTabStripView.m in Sources */,
@@ -6503,6 +6831,7 @@
 				9F1FE50329406E4700E952CA /* CTTabStripModelOrderController.m in Sources */,
 				F34BF93629530708002C25A2 /* NSImage+PDFListView.m in Sources */,
 				BB49ECFF293F459500C82CA2 /* KMConvertPPTsWindowController.swift in Sources */,
+				ADB1FE4429700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */,
 				9F1F82EB2935D02E0092C4B4 /* KMComboBox.swift in Sources */,
 				AD9527EB2955520C0039D2BC /* KMBaseTextFieldModel.swift in Sources */,
 				BB89726E294DB67D0045787C /* KMWatermarkAdjectiveBaseView.swift in Sources */,
@@ -6515,6 +6844,7 @@
 				F37322E8292DF9410013862C /* CPDFAnnotationModel.m in Sources */,
 				BB6DD822293497B6001F0544 /* KMSecureEncryptModel.swift in Sources */,
 				AD9527BB295291F20039D2BC /* KMPrintPage.swift in Sources */,
+				ADB1FE6F29752BB700ED072D /* KMBatchConverPDFView.swift in Sources */,
 				BB8F4558295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
 				BBC745F8296178BD0072C2ED /* KMCropTools.swift in Sources */,
 				ADD1B6D82946BDFD00C3FFF7 /* KMPrintChoosePageSizeView.swift in Sources */,
@@ -6651,6 +6981,7 @@
 				9FDD0FAC29534FCC000C4DAD /* KMAliasLight.swift in Sources */,
 				BBF38A64294F53FD0086D025 /* KMWatermarkFileView.swift in Sources */,
 				899700F828F4051B009AF911 /* KMAnnotationViewController.swift in Sources */,
+				ADB1FE4A2970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */,
 				F36AD77929642FE80015AD53 /* CPDFListView+UndoManager.m in Sources */,
 				8942F7C12923670F00389627 /* KMBOTAManagerClass.swift in Sources */,
 				ADCB98F829274B6B00B51A03 /* KMBatchProcessingTableView.swift in Sources */,
@@ -6703,6 +7034,7 @@
 				ADD1B6AD2941E97F00C3FFF7 /* KMPrintWindowController.swift in Sources */,
 				9FDD0FB029534FDC000C4DAD /* KMCompLight.swift in Sources */,
 				8942F80129260EC700389627 /* KMLeftMethodMode.swift in Sources */,
+				ADB1FE9029752F7000ED072D /* KMBatchBackgroundView.swift in Sources */,
 				F3732310292DF9410013862C /* CPDFInkAnnotation+PDFListView.m in Sources */,
 				BBC745F4295F0DD00072C2ED /* KMCropSettingPageSizeView.swift in Sources */,
 				F34BF92329530320002C25A2 /* NSString+PDFListView.m in Sources */,
@@ -6768,6 +7100,7 @@
 				BBEC00DB295C39FD00A26C98 /* KMBatesPropertyInfoController.swift in Sources */,
 				9F1FE4AA29406E4700E952CA /* CTBrowserWindowController.m in Sources */,
 				BBC348042955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.swift in Sources */,
+				ADB1FEA82975305500ED072D /* KMBatchBatchRemoveView.swift in Sources */,
 				AD9527DD2952EE700039D2BC /* KMPrintPage_C.swift in Sources */,
 				9FDD0FB9295D5230000C4DAD /* KMToolbarController.swift in Sources */,
 				9F1F82F0293609F60092C4B4 /* CPDFDocument+PageEditManager.swift in Sources */,
@@ -6775,6 +7108,7 @@
 				89E4E7022963D4A0002DBA6F /* KMComboBox.m in Sources */,
 				F3B7DFAB294C545B00333201 /* NSPopover+PDFListView.m in Sources */,
 				BB89722B294B08720045787C /* KMWatermarkAdjectiveTopBarItemModel.swift in Sources */,
+				ADB1FEA02975303400ED072D /* KMBatchBatesNumberView.swift in Sources */,
 				BB8F4541295A98960037EA22 /* KMHeaderFooterPropertyController.swift in Sources */,
 				BBFE6E6F2930D9C600142C01 /* KMMergeSettingWindowController.swift in Sources */,
 				BB49ECF3293F40F500C82CA2 /* KMConvertPageRangeSettingItemView.swift in Sources */,
@@ -6785,7 +7119,9 @@
 				ADD1B6A729416FE800C3FFF7 /* KMOCRPresenter.swift in Sources */,
 				F3732313292DF9410013862C /* CPDFSignatureWidgetAnnotation+PDFListView.m in Sources */,
 				89E4E7842967BF5A002DBA6F /* KMCustomizeStampViewController.m in Sources */,
+				ADB1FE8029752F2900ED072D /* KMBatchSecurityView.swift in Sources */,
 				BBC3485029582920008D2CD1 /* KMBackgroundColorView.swift in Sources */,
+				ADB1FE982975300B00ED072D /* KMBatchHeaderAndFooterView.swift in Sources */,
 				BBC3483029559E12008D2CD1 /* KMBackgroundModel.swift in Sources */,
 				F3732313292DF9410013862C /* CPDFSignatureWidgetAnnotation+PDFListView.m in Sources */,
 				BB897258294C559F0045787C /* KMWatermarkPropertyCreateController.swift in Sources */,
@@ -6797,6 +7133,7 @@
 				BB99ACCC292DEE6E0048AFD9 /* KMMergeTitleBar.swift in Sources */,
 				BBD1F79E296FF7A600343885 /* KMPageEditSplitSettingModel.swift in Sources */,
 				BB897277294DC04F0045787C /* KMWatermartAdjectivePageRangeView.swift in Sources */,
+				ADB1FE2A297006DF00ED072D /* KMBatchWindowController.swift in Sources */,
 				BBEC00D3295C33D600A26C98 /* KMCreateBatesController.swift in Sources */,
 				89D9896028FD21E6003A3E87 /* KMAnnotationCollectionView.swift in Sources */,
 				89752D9C2936E675003FF08E /* KMToolBarBox.swift in Sources */,
@@ -6831,6 +7168,7 @@
 				89D2D2FD294C806000BFF5FE /* KMPDFThumbnailItem.swift in Sources */,
 				BBFBE74928DD7DB8008B2335 /* ViewController.swift in Sources */,
 				F373228E292CCA650013862C /* CPDFListViewAnimatedBorderlessWindow.m in Sources */,
+				ADB1FE33297008E800ED072D /* KMBatchCollectionView.swift in Sources */,
 				9F1FE4B029406E4700E952CA /* CTPresentationModeController.m in Sources */,
 				F37322E0292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.m in Sources */,
 				BBD1F791296FE6A500343885 /* KMPageEditSplitWindowController.swift in Sources */,
@@ -6906,6 +7244,7 @@
 				BB49ED08293F461500C82CA2 /* KMConvertCSVWindowController.swift in Sources */,
 				ADB2D6E8294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */,
 				89E4E7372964148E002DBA6F /* KMAnnotationPropertiesViewController.m in Sources */,
+				ADB1FE8829752F4C00ED072D /* KMBatchWatermarkView.swift in Sources */,
 				F37322F8292DF9410013862C /* CSelfSignAnnotation.m in Sources */,
 				BB8F457C295AFB330037EA22 /* KMHeaderFooterFontInfoView.swift in Sources */,
 				BB8F4584295B0F900037EA22 /* KMHeaderFooterMarginInfoView.swift in Sources */,
@@ -6926,6 +7265,7 @@
 				BBF38A5C294F2B760086D025 /* KMWatermarkPositionView.swift in Sources */,
 				F34BF92D295304AB002C25A2 /* NSShadow+PDFListView.m in Sources */,
 				89E4E77029657953002DBA6F /* KMStampManager.m in Sources */,
+				ADB1FE3D29700D3400ED072D /* KMBatchCollectionViewItem.swift in Sources */,
 				89E4E76B29656B35002DBA6F /* KMButton.m in Sources */,
 				BB8F456F295AC1220037EA22 /* KMHeaderFooterAdjectiveModel.swift in Sources */,
 				F386D15C293E152F00C44524 /* CPDFListViewColorMenuItemView.m in Sources */,
@@ -6941,6 +7281,7 @@
 				8942F80529262B2E00389627 /* KMSideViewController.swift in Sources */,
 				8942F819292B678100389627 /* KMAnnotationTableCellView.swift in Sources */,
 				BB162E99295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
+				ADB1FE4529700DAD00ED072D /* KMBatchCollectionViewModel.swift in Sources */,
 				BB1A34AA295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m in Sources */,
 				BBC3482629559506008D2CD1 /* KMBackgroundManager.swift in Sources */,
 				9F8539CD29430BF300DF644E /* KMBrowserWindowController.swift in Sources */,
@@ -6950,6 +7291,7 @@
 				9F1FE4FB29406E4700E952CA /* CTTabStripView.m in Sources */,
 				8942F7BD29222C7E00389627 /* KMBookCellView.swift in Sources */,
 				9F1FE4C229406E4700E952CA /* NSWindow+CTThemed.m in Sources */,
+				ADB1FE5F2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */,
 				89E4E6EE2963D1B7002DBA6F /* KMColorPickerViewController.m in Sources */,
 				BBEC00A6295BD42D00A26C98 /* KMHeaderFooterPageInfoView.swift in Sources */,
 				BBC348552958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.swift in Sources */,
@@ -7014,9 +7356,11 @@
 				8942F7EB2925E1C400389627 /* KMLiftSideCellView.swift in Sources */,
 				BB86C20C28F5569F005AD968 /* NSGeometry_SKExtensions.m in Sources */,
 				9F1F82D4292F6D510092C4B4 /* KMPDFInsertPreviewViewController.swift in Sources */,
+				ADB1FE7029752BB700ED072D /* KMBatchConverPDFView.swift in Sources */,
 				9F705F8F291E579F005199AD /* KMHistoryFileTableView.swift in Sources */,
 				9F0CB4812967F64D00007028 /* KMPropertiesPanelReadOnlySubVC.swift in Sources */,
 				BB49ECE7293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */,
+				ADB1FE7829752F0900ED072D /* KMBatchCompressView.swift in Sources */,
 				89E4E71F2963F77C002DBA6F /* KMSelfSignAnnotationFreeText.m in Sources */,
 				9F1F82C5292F113A0092C4B4 /* KMHomeDragView.swift in Sources */,
 				AD4B45732940B0000076FA14 /* KMOCRModel.swift in Sources */,

BIN
PDF Office/PDF Office.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile.xcuserdatad/UserInterfaceState.xcuserstate


+ 107 - 11
PDF Office/PDF Office.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -286,9 +286,9 @@
             filePath = "PDF Office/Class/PDFTools/Print/KMPrintWindowController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "122"
-            endingLineNumber = "122"
-            landmarkName = "printAction()"
+            startingLineNumber = "113"
+            endingLineNumber = "113"
+            landmarkName = "cancelAction()"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -359,9 +359,9 @@
             filePath = "PDF Office/Class/PDFTools/Print/KMPrintWindowController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "105"
-            endingLineNumber = "105"
-            landmarkName = "printerAction()"
+            startingLineNumber = "96"
+            endingLineNumber = "96"
+            landmarkName = "textRecordField(field:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
@@ -672,18 +672,114 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "5D0BD960-2B7B-4B27-9747-F4C9DEBE322D"
+            uuid = "D999DEE3-B031-49C9-93B7-18021117A43C"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Office/Class/Home/ViewController/KMHomeViewController+Action.swift"
+            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:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "0DBD033F-9C12-4289-A957-3FED728652C0"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Presenter/KMBatchProcessingTableViewPresenter.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "379"
-            endingLineNumber = "379"
-            landmarkName = "fastTool_Batch()"
+            startingLineNumber = "57"
+            endingLineNumber = "57"
+            landmarkName = "addData(data:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "2832C703-A141-45FB-B97A-B33756529827"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "27"
+            endingLineNumber = "27"
+            landmarkName = "inputData"
+            landmarkType = "24">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "0252F0D0-656D-4A6E-9CE4-6827E63E674B"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "106"
+            endingLineNumber = "106"
+            landmarkName = "setup()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "361333AD-AA29-434F-8726-59D60B3DDEDD"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "89"
+            endingLineNumber = "89"
+            landmarkName = "collectionView(_:didSelectItemsAt:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "7BE47E61-AAC0-4C6D-8980-CE9AAD3B4078"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "100"
+            endingLineNumber = "100"
+            landmarkName = "KMBatchCollectionView"
+            landmarkType = "21">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 1 - 0
PDF Office/PDF Office/Class/Home/ViewController/KMHomeViewController+Action.swift

@@ -377,6 +377,7 @@ extension KMHomeViewController {
     
     func fastTool_Batch() { // Batch
         print("选中 快捷工具 Batch")
+        KMBatchWindowController.openFile(nil)
     }
     
     func fastTool_OCR() {   // OCR

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

@@ -0,0 +1,85 @@
+//
+//  KMBatchWindowController.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchWindowController: NSWindowController {
+
+    @IBOutlet weak var batchPrecessingView: KMBatchProcessingView!
+    @IBOutlet weak var batchCollectionView: KMBatchCollectionView!
+    @IBOutlet weak var batchHandleView: NSView!
+    
+    var batchData: [KMBatchProcessingTableViewModel]?
+    var inputType: DataNavigationViewButtonActionType?
+    
+    deinit {
+        print("KMImageToPDFWindowController 释放")
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+
+        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+        self.window?.title = "Image to PDF"
+        self.setup()
+        self.reloadData()
+    }
+    
+    
+    func setup() {
+        self.batchCollectionView.delegate = self
+        
+        self.batchPrecessingView.delegate = self
+        self.batchPrecessingView.inputType = self.inputType
+    }
+    
+    func reloadData() {
+        
+    }
+    
+    //MARK: 打开文件
+    static func openFiles(window:NSWindow) {
+        KMBatchProcessingView.openfiles(window: window) { openPanel in
+            openPanel.title = "选择图片"
+            openPanel.canChooseDirectories = false
+            openPanel.canChooseFiles = true
+            openPanel.allowsMultipleSelection = true
+            openPanel.allowedFileTypes = KMOCRModel.supportedTypes()
+        } completion: { data in
+            if data.count != 0 {
+                let batchWindowController: KMBatchWindowController = KMBatchWindowController.init(windowNibName: "KMBatchWindowController")
+                batchWindowController.showWindow(window)
+                batchWindowController.batchPrecessingView.inputData = data
+                batchWindowController.inputType = .ImageToPDF
+            }
+        }
+    }
+    
+    //MARK: 打开文件
+    static func openFile(_ url: URL?) {
+        let batchWindowController: KMBatchWindowController = KMBatchWindowController.init(windowNibName: "KMBatchWindowController")
+        batchWindowController.showWindow(NSApp.mainWindow)
+        if url != nil {
+            batchWindowController.batchPrecessingView.inputData = [url!]
+        }
+        batchWindowController.inputType = .Batch
+    }
+    
+}
+
+extension KMBatchWindowController: KMBatchProcessingViewDelegate {
+    func reloadData(data: [KMBatchProcessingTableViewModel]) {
+        self.batchData = data
+    }
+}
+
+extension KMBatchWindowController: KMBatchCollectionViewDelegate {
+    func didSelect(index: IndexPath, data: KMBatchCollectionViewModel) {
+        print(data.type.rawValue)
+    }
+    
+}

+ 63 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/KMBatchWindowController.xib

@@ -0,0 +1,63 @@
+<?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="KMBatchWindowController" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="batchCollectionView" destination="NpS-mf-MjM" id="2Cn-9G-deg"/>
+                <outlet property="batchHandleView" destination="gb1-Aa-tbK" id="F8k-Ha-0pb"/>
+                <outlet property="batchPrecessingView" destination="gH5-eQ-PMm" id="p49-SP-doE"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="1014" height="559"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <view key="contentView" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="1014" height="559"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="NpS-mf-MjM" customClass="KMBatchCollectionView" customModule="PDF_Office" customModuleProvider="target">
+                        <rect key="frame" x="0.0" y="0.0" width="206" height="559"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="206" id="Ar4-ka-nDh"/>
+                        </constraints>
+                    </customView>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="gb1-Aa-tbK">
+                        <rect key="frame" x="754" y="0.0" width="260" height="559"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="260" id="8VA-Va-3Ig"/>
+                        </constraints>
+                    </customView>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="gH5-eQ-PMm" customClass="KMBatchProcessingView" customModule="PDF_Office" customModuleProvider="target">
+                        <rect key="frame" x="206" y="0.0" width="548" height="559"/>
+                    </customView>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="bottom" secondItem="gH5-eQ-PMm" secondAttribute="bottom" id="Ba1-wk-2L5"/>
+                    <constraint firstItem="gb1-Aa-tbK" firstAttribute="leading" secondItem="gH5-eQ-PMm" secondAttribute="trailing" id="Cyf-J5-8vZ"/>
+                    <constraint firstAttribute="bottom" secondItem="gb1-Aa-tbK" secondAttribute="bottom" id="Eds-JU-XNZ"/>
+                    <constraint firstItem="gb1-Aa-tbK" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="Nn4-Uu-Zqt"/>
+                    <constraint firstAttribute="trailing" secondItem="gb1-Aa-tbK" secondAttribute="trailing" id="UL3-OH-rU8"/>
+                    <constraint firstAttribute="bottom" secondItem="NpS-mf-MjM" secondAttribute="bottom" id="V7t-Vc-2At"/>
+                    <constraint firstItem="NpS-mf-MjM" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="dGe-a2-t3N"/>
+                    <constraint firstItem="gH5-eQ-PMm" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="jir-E1-0Mc"/>
+                    <constraint firstItem="NpS-mf-MjM" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="oI7-Qy-gR2"/>
+                    <constraint firstItem="gH5-eQ-PMm" firstAttribute="leading" secondItem="NpS-mf-MjM" secondAttribute="trailing" id="v7q-oF-GUx"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="240" y="281.5"/>
+        </window>
+    </objects>
+</document>

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

@@ -0,0 +1,149 @@
+%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

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

@@ -0,0 +1,136 @@
+//
+//  KMBatchCollectionView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchCollectionView: NSView {
+    @IBOutlet var contentView: NSView!
+    
+    @IBOutlet weak var collectionView: NSCollectionView!
+    
+    var delegate: KMBatchCollectionViewDelegate?
+//    var inputType: DataNavigationViewButtonActionType?
+//
+//    /**
+//      @abstract 外部传入数据
+//      @param inputData 文件路劲
+//      */
+//    var inputData: [URL]! {
+//        didSet {
+//            self.tableView.inputData = inputData
+//        }
+//    }
+    var presenter: KMBatchCollectionViewPrensenter = KMBatchCollectionViewPrensenter()
+    var data:[KMBatchCollectionViewModel] = []
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        self.delegate = nil
+    }
+    
+    // MARK: 初始化
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchCollectionView.self),
+                             bundle: Bundle(for: KMBatchCollectionView.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.collectionView.delegate = self
+        self.collectionView.dataSource = self
+        self.collectionView.isSelectable = true
+        self.collectionView.allowsMultipleSelection = false
+        //注册cell
+        self.collectionView.register(KMBatchCollectionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMBatchCollectionViewItem"))
+        
+        self.presenter.initPresenter(view: self)
+    }
+}
+
+extension KMBatchCollectionView: KMBatchCollectionViewPrensenterDelegate {
+    func showData(presenter: KMBatchCollectionViewPrensenter, data: Array<KMBatchCollectionViewModel>) {
+        self.data = data
+        self.collectionView.reloadData()
+    }
+}
+
+extension KMBatchCollectionView: NSCollectionViewDelegate {
+    //当item被选中
+    public func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
+        for item in self.data {
+            item.isSelect = false
+        }
+        
+        let view = collectionView.item(at: indexPaths.first!) as! KMBatchCollectionViewItem
+        view.model.isSelect = true
+        self.collectionView.reloadData()
+        
+        if self.delegate != nil {
+            self.delegate?.didSelect(index: indexPaths.first!, data: view.model)
+        }
+    }
+    
+//   //当item取消选中
+//    public func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) {
+//        let view = collectionView.item(at: indexPaths.first!) as! KMBatchCollectionViewItem
+//        view.model.isSelect = false
+//        self.collectionView.reloadData()
+//    }
+}
+
+extension KMBatchCollectionView: NSCollectionViewDataSource {
+    func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
+        return self.data.count
+    }
+    
+    //返回对应的item自定义个体
+    public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
+        let view = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMBatchCollectionViewItem"), for: indexPath) as! KMBatchCollectionViewItem
+        
+        view.model = self.data[indexPath.item]
+        return view
+    }
+}
+
+extension KMBatchCollectionView: NSCollectionViewDelegateFlowLayout {
+    
+    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
+        return NSSize(width: self.contentView.bounds.width, height: 32)
+    }
+    
+    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
+        return 16
+    }
+}
+
+//MARK: KMBatchCollectionViewDelegate
+protocol KMBatchCollectionViewDelegate: NSObject {
+    func didSelect(index: IndexPath, data: KMBatchCollectionViewModel)
+}
+
+
+

+ 56 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/KMBatchCollectionView.xib

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="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="KMBatchCollectionView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="collectionView" destination="Ld8-ua-fw8" id="WsK-8e-z8p"/>
+                <outlet property="contentView" destination="c22-O7-iKe" id="fde-FF-9kK"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="615" height="364"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LaZ-yZ-XGg">
+                    <rect key="frame" x="0.0" y="0.0" width="615" height="364"/>
+                    <clipView key="contentView" id="S4k-1R-KQT">
+                        <rect key="frame" x="0.0" y="0.0" width="615" height="364"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <collectionView id="Ld8-ua-fw8">
+                                <rect key="frame" x="0.0" y="0.0" width="615" height="158"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
+                                <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" id="bIe-ul-s0S">
+                                    <size key="itemSize" width="50" height="50"/>
+                                </collectionViewFlowLayout>
+                                <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </collectionView>
+                        </subviews>
+                    </clipView>
+                    <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="3wY-vY-Gbo">
+                        <rect key="frame" x="1" y="144" width="233" height="15"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </scroller>
+                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="6vC-AB-SCr">
+                        <rect key="frame" x="234" y="1" width="15" height="143"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </scroller>
+                </scrollView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="LaZ-yZ-XGg" secondAttribute="trailing" id="0Dj-l3-hSR"/>
+                <constraint firstAttribute="bottom" secondItem="LaZ-yZ-XGg" secondAttribute="bottom" id="YfA-CJ-RRF"/>
+                <constraint firstItem="LaZ-yZ-XGg" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="lc4-a0-Bbu"/>
+                <constraint firstItem="LaZ-yZ-XGg" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="tB5-1Q-c5q"/>
+            </constraints>
+            <point key="canvasLocation" x="13" y="201"/>
+        </customView>
+    </objects>
+</document>

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

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

+ 98 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/Presenter/KMBatchCollectionViewPrensenter.swift

@@ -0,0 +1,98 @@
+//
+//  KMBatchCollectionViewPrensenter.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchCollectionViewPrensenter: NSObject {
+    lazy var modelData: [KMBatchCollectionViewModel] = []
+    var view: KMBatchCollectionView?
+    fileprivate weak var delegate: KMBatchCollectionViewPrensenterDelegate?
+
+}
+
+extension KMBatchCollectionViewPrensenter: KMBatchCollectionViewPrensenterProtocol {
+    /**
+     初始化presenter
+     */
+    func initPresenter(view: KMBatchCollectionView) {
+        self.delegate = view
+        
+        self.modelData.removeAll()
+        
+        
+        let array = [["title":"ConvertPDF",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Compress",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Security",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Watermark",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Background",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Header & Footer",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Bates Number",
+                      "image":"Batch_ic",
+                      "isSelect": false],
+                     ["title":"Batch Remove",
+                      "image":"Batch_ic",
+                      "isSelect": false]
+        ]
+        
+        for dic in array {
+            let model = KMBatchCollectionViewModel()
+            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)
+            self.modelData.append(model)
+        }
+        
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func cleanAll() {
+        self.modelData.removeAll()
+        self.delegate?.showData(presenter: self, data: self.modelData)
+    }
+    
+    func free() {
+        view = nil
+        delegate = nil
+    }
+}
+
+
+protocol KMBatchCollectionViewPrensenterDelegate: AnyObject {
+    /**
+     @abstract 回调,返回处理后的数据<KMBatchProcessingViewModel>类型
+     @param presenter
+     @param data 返回数据
+     */
+    func showData(presenter: KMBatchCollectionViewPrensenter, data: Array<KMBatchCollectionViewModel>)
+}
+
+protocol KMBatchCollectionViewPrensenterProtocol {
+    /**
+     @abstract 绑定视图与数据
+     @param view 视图
+     @param data 资源 <KMBatchProcessingViewModel>类型
+     */
+    func initPresenter(view: KMBatchCollectionView)
+    /**
+     @abstract 解除绑定
+     */
+    func free()
+}

+ 38 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/View/KMBatchCollectionViewItem.swift

@@ -0,0 +1,38 @@
+//
+//  KMBatchCollectionViewItem.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/12.
+//
+
+import Cocoa
+
+class KMBatchCollectionViewItem: NSCollectionViewItem {
+
+    @IBOutlet weak var contentView: NSView!
+    @IBOutlet weak var iconImageView: NSImageView!
+    @IBOutlet weak var titleTextField: NSTextField!
+    
+    var model: KMBatchCollectionViewModel = KMBatchCollectionViewModel() {
+        didSet {
+            self.reloadData()
+        }
+    }
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        self.contentView.wantsLayer = true
+        self.contentView.layer?.cornerRadius = 4
+    }
+    
+    func reloadData() {
+        self.titleTextField.stringValue = NSLocalizedString(self.model.title, comment: "")
+        self.iconImageView.image = NSImage(named: self.model.imageString)
+        
+        if self.model.isSelect {
+            self.contentView.layer?.backgroundColor = NSColor.init(srgbRed: 23.0 / 255.0, green: 112 / 255.0, blue: 224 / 255.0, alpha: 0.1).cgColor
+        } else {
+            self.contentView.layer?.backgroundColor = NSColor.clear.cgColor
+        }
+    }
+}

+ 60 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/BatchCollectionView/View/KMBatchCollectionViewItem.xib

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Background/KMBatchBackgroundView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <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="KMBatchBackgroundView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="47" y="-72"/>
+        </customView>
+    </objects>
+</document>

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatchRemove/KMBatchBatchRemoveView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBatchRemoveView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="-33" y="114"/>
+        </customView>
+    </objects>
+</document>

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/BatesNumber/KMBatchBatesNumberView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchBatesNumberView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="-33" y="114"/>
+        </customView>
+    </objects>
+</document>

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Compress/KMBatchCompressView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchCompressView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="-33" y="114"/>
+        </customView>
+    </objects>
+</document>

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/ConverPDF/KMBatchConverPDFView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <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="KMBatchConverPDFView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="47" y="-72"/>
+        </customView>
+    </objects>
+</document>

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

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

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

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <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="KMBatchHeaderAndFooterView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="-33" y="114"/>
+        </customView>
+    </objects>
+</document>

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Security/KMBatchSecurityView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <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="KMBatchSecurityView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="-33" y="114"/>
+        </customView>
+    </objects>
+</document>

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.swift

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

+ 18 - 0
PDF Office/PDF Office/Class/PDFTools/Batch/View/Choose/Watermark/KMBatchWatermarkView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <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="KMBatchWatermarkView" customModule="PDF_Office" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="-33" y="114"/>
+        </customView>
+    </objects>
+</document>

+ 10 - 0
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.swift

@@ -64,6 +64,13 @@ class KMBatchProcessingTableView: NSView {
                 column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.state.rawValue))
                 self.tableView.addTableColumn(column)
             }
+            
+            if (options!.contains(KMBatchProcessingTableViewOptions.delete)) {
+                let column = NSTableColumn()
+                column.title = NSLocalizedString("", comment: "")
+                column.identifier = NSUserInterfaceItemIdentifier(String(KMBatchProcessingTableViewOptions.delete.rawValue))
+                self.tableView.addTableColumn(column)
+            }
         }
     }
     
@@ -101,6 +108,7 @@ class KMBatchProcessingTableView: NSView {
         self.tableView.registerForDraggedTypes([NSPasteboard.PasteboardType.string, NSPasteboard.PasteboardType.fileURL, self.tableRowPasteboardType]) //支持拖拽
         self.tableView.setDraggingSourceOperationMask([.copy, .delete], forLocal: false)
         self.options = .all
+        self.presenter.initPresenter(view: self, data: [])
     }
     
 }
@@ -120,6 +128,8 @@ extension KMBatchProcessingTableView: NSTableViewDelegate {
             cell = KMBatchProcessingSizeTableCell.init(frame: CGRect(x: 0, y: 0, width: tableColumn!.width, height:tableView.rowHeight))
         } else if (tableColumn?.identifier.rawValue == String(KMBatchProcessingTableViewOptions.state.rawValue)) {
             cell = KMBatchProcessingStateTableCell.init(frame: CGRect(x: 0, y: 0, width: tableColumn!.width, height:tableView.rowHeight))
+        } 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) {

+ 10 - 9
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableView.xib

@@ -18,14 +18,14 @@
             <rect key="frame" x="0.0" y="0.0" width="747" height="467"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <scrollView autohidesScrollers="YES" horizontalLineScroll="52" horizontalPageScroll="10" verticalLineScroll="52" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LBT-Yb-LH6">
+                <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="52" horizontalPageScroll="10" verticalLineScroll="52" 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" id="Ukp-eK-M2w">
-                        <rect key="frame" x="1" y="1" width="745" height="465"/>
+                    <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">
-                                <rect key="frame" x="0.0" y="0.0" width="745" height="437"/>
+                                <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"/>
@@ -44,7 +44,7 @@
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                         <prototypeCellViews>
                                             <tableCellView id="PZO-HB-TFB">
-                                                <rect key="frame" x="8" y="0.0" width="114" height="52"/>
+                                                <rect key="frame" x="18" y="0.0" width="114" 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">
@@ -63,7 +63,7 @@
                                             </tableCellView>
                                         </prototypeCellViews>
                                     </tableColumn>
-                                    <tableColumn identifier="AutomaticTableColumnIdentifier.1" width="600" minWidth="40" maxWidth="1000" id="5A0-s0-Kc3">
+                                    <tableColumn identifier="AutomaticTableColumnIdentifier.1" width="582" 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 +76,11 @@
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                         <prototypeCellViews>
                                             <tableCellView id="wPA-2x-vh6">
-                                                <rect key="frame" x="139" y="0.0" width="597" height="52"/>
+                                                <rect key="frame" x="149" y="0.0" width="579" 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="597" height="16"/>
+                                                        <rect key="frame" x="0.0" y="18" width="579" 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"/>
@@ -98,6 +98,7 @@
                                 </tableColumns>
                             </tableView>
                         </subviews>
+                        <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"/>
@@ -108,7 +109,7 @@
                         <autoresizingMask key="autoresizingMask"/>
                     </scroller>
                     <tableHeaderView key="headerView" wantsLayer="YES" id="i1G-mK-PE9">
-                        <rect key="frame" x="0.0" y="0.0" width="745" height="28"/>
+                        <rect key="frame" x="0.0" y="0.0" width="747" height="28"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </tableHeaderView>
                 </scrollView>

+ 2 - 1
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableViewModel/KMBatchProcessingTableViewModel.swift

@@ -17,8 +17,9 @@ struct KMBatchProcessingTableViewOptions: OptionSet {
     static let size = KMBatchProcessingTableViewOptions(rawValue: 1 << 1)
     static let order = KMBatchProcessingTableViewOptions(rawValue: 1 << 2)
     static let state = KMBatchProcessingTableViewOptions(rawValue: 1 << 3)
+    static let delete = KMBatchProcessingTableViewOptions(rawValue: 1 << 4)
     
-    static let all: KMBatchProcessingTableViewOptions = [.name, .size, .order, .state]
+    static let all: KMBatchProcessingTableViewOptions = [.name, .size, .order, .state, .delete]
 }
 
 enum KMBatchProcessingTableFileState {

PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/KMBatchProcessingTableViewPresenter/KMBatchProcessingTableViewPresenter.swift → PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Presenter/KMBatchProcessingTableViewPresenter.swift


+ 62 - 0
PDF Office/PDF Office/Class/PDFTools/ImageToPDF/View/KMBatchProcessingView/Tableview/Views/Tableview/Views/KMBatchProcessingDeleteTableCell.swift

@@ -0,0 +1,62 @@
+//
+//  KMBatchProcessingDeleteTableCell.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/1/16.
+//
+
+import Cocoa
+
+class KMBatchProcessingDeleteTableCell: KMBatchProcessingTableCell {
+    @IBOutlet weak var deleteButton: NSButton!
+    
+    @IBOutlet var contentView: NSView!
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    // MARK: 初始化
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        initContentView()
+        setup()
+    }
+    
+    required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        initContentView()
+        setup()
+    }
+    
+    private func initContentView() {
+        //绑定xib
+        let resource = NSNib(nibNamed: String(describing: KMBatchProcessingDeleteTableCell.self),
+                             bundle: Bundle(for: KMBatchProcessingDeleteTableCell.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()
+    }
+    
+    override func setup() {
+        super.setup()
+        
+    }
+    
+    override func reloadData() {
+        super.reloadData()
+        
+    }
+    
+    @IBAction func deleteAction(_ sender: NSButton) {
+        
+    }
+}

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

@@ -0,0 +1,43 @@
+<?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="KMBatchProcessingDeleteTableCell" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="contentView" destination="c22-O7-iKe" id="rji-uK-Dx9"/>
+                <outlet property="deleteButton" destination="V6R-Z5-vrK" id="cE2-I8-tJE"/>
+            </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="144" height="41"/>
+            <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"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="20" id="do1-q7-e3j"/>
+                        <constraint firstAttribute="height" constant="20" id="uWh-N9-uV0"/>
+                    </constraints>
+                    <buttonCell key="cell" type="square" title="X" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="fYz-tt-WAC">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="deleteAction:" target="-2" id="KJI-GM-pUT"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstItem="V6R-Z5-vrK" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="IQC-bx-gKM"/>
+                <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"/>
+        </customView>
+    </objects>
+</document>

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

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21225" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21225"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>

+ 4 - 1
PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Thumbnail/KMThumbnailViewController.swift

@@ -25,7 +25,10 @@ class KMThumbnailViewController: NSViewController {
         self.headerView.wantsLayer = true
         self.headerView.layer?.backgroundColor = NSColor.white.cgColor
 
-        self.thumbnailView.document = self.listView.document
+        if self.listView.document != nil {
+            self.thumbnailView.document = self.listView.document
+        }
+        
         self.thumbnailView.delegate = self
         self.initMenu()
     }