Forráskód Böngészése

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

tangchao 1 éve
szülő
commit
976e8d72bb

+ 44 - 0
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2410,6 +2410,22 @@
 		BB6013902AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */; };
 		BB6013902AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */; };
 		BB6013912AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */; };
 		BB6013912AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */; };
 		BB6013922AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */; };
 		BB6013922AD3AFF000A76FB2 /* NSPopover+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */; };
+		BB6347AE2AF1F0A500F5438E /* KMBatchOperateConvertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347AD2AF1F0A400F5438E /* KMBatchOperateConvertViewController.swift */; };
+		BB6347B02AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347AF2AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib */; };
+		BB6347B12AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347AF2AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib */; };
+		BB6347B22AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347AF2AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib */; };
+		BB6347B42AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347B32AF224D600F5438E /* KMConvertCollectionViewHeader.swift */; };
+		BB6347B52AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347B32AF224D600F5438E /* KMConvertCollectionViewHeader.swift */; };
+		BB6347B62AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347B32AF224D600F5438E /* KMConvertCollectionViewHeader.swift */; };
+		BB6347B82AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347B72AF224E100F5438E /* KMConvertCollectionViewHeader.xib */; };
+		BB6347B92AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347B72AF224E100F5438E /* KMConvertCollectionViewHeader.xib */; };
+		BB6347BA2AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347B72AF224E100F5438E /* KMConvertCollectionViewHeader.xib */; };
+		BB6347C42AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347C32AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift */; };
+		BB6347C52AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347C32AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift */; };
+		BB6347C62AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6347C32AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift */; };
+		BB6347C82AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347C72AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib */; };
+		BB6347C92AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347C72AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib */; };
+		BB6347CA2AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6347C72AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib */; };
 		BB6719E52AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */; };
 		BB6719E52AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */; };
 		BB6719E62AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */; };
 		BB6719E62AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */; };
 		BB6719E72AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */; };
 		BB6719E72AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */; };
@@ -4364,6 +4380,12 @@
 		BB6013872AD3A3CB00A76FB2 /* CPDFWidgetAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFWidgetAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB6013872AD3A3CB00A76FB2 /* CPDFWidgetAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFWidgetAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB60138B2AD3A94200A76FB2 /* CPDFSignatureAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFSignatureAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB60138B2AD3A94200A76FB2 /* CPDFSignatureAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFSignatureAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSPopover+KMExtension.swift"; sourceTree = "<group>"; };
 		BB60138F2AD3AFF000A76FB2 /* NSPopover+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSPopover+KMExtension.swift"; sourceTree = "<group>"; };
+		BB6347AD2AF1F0A400F5438E /* KMBatchOperateConvertViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchOperateConvertViewController.swift; sourceTree = "<group>"; };
+		BB6347AF2AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMBatchOperateConvertViewController.xib; sourceTree = "<group>"; };
+		BB6347B32AF224D600F5438E /* KMConvertCollectionViewHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMConvertCollectionViewHeader.swift; sourceTree = "<group>"; };
+		BB6347B72AF224E100F5438E /* KMConvertCollectionViewHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMConvertCollectionViewHeader.xib; sourceTree = "<group>"; };
+		BB6347C32AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchoperateConvertCollectionViewItem.swift; sourceTree = "<group>"; };
+		BB6347C72AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMBatchoperateConvertCollectionViewItem.xib; sourceTree = "<group>"; };
 		BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFLineAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB6719E42AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFLineAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB6719E82AD2A57C003D44D5 /* CPDFLinkAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFLinkAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB6719E82AD2A57C003D44D5 /* CPDFLinkAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFLinkAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB6719F42AD2C949003D44D5 /* CPDFRedactAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFRedactAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BB6719F42AD2C949003D44D5 /* CPDFRedactAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFRedactAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
@@ -8346,6 +8368,8 @@
 			children = (
 			children = (
 				BBE9D0962AF0CECB002E83CE /* KMBatchOperateCompressViewController.swift */,
 				BBE9D0962AF0CECB002E83CE /* KMBatchOperateCompressViewController.swift */,
 				BBE9D09A2AF0CEEA002E83CE /* KMBatchOperateCompressViewController.xib */,
 				BBE9D09A2AF0CEEA002E83CE /* KMBatchOperateCompressViewController.xib */,
+				BB6347AD2AF1F0A400F5438E /* KMBatchOperateConvertViewController.swift */,
+				BB6347AF2AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib */,
 			);
 			);
 			path = VC;
 			path = VC;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -8452,6 +8476,10 @@
 				BB1BFF892AEA4725003EB179 /* KMTableHeaderCell.swift */,
 				BB1BFF892AEA4725003EB179 /* KMTableHeaderCell.swift */,
 				BBC4F9F92AEB9E200098A1A8 /* KMBatchTableCellView.swift */,
 				BBC4F9F92AEB9E200098A1A8 /* KMBatchTableCellView.swift */,
 				BBE9D09E2AF0D10F002E83CE /* KMSlider.swift */,
 				BBE9D09E2AF0D10F002E83CE /* KMSlider.swift */,
+				BB6347B32AF224D600F5438E /* KMConvertCollectionViewHeader.swift */,
+				BB6347B72AF224E100F5438E /* KMConvertCollectionViewHeader.xib */,
+				BB6347C32AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift */,
+				BB6347C72AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib */,
 			);
 			);
 			path = View;
 			path = View;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -9157,6 +9185,7 @@
 				9FD0FA3429CD947000F2AB0D /* KMOpacityPanel.xib in Resources */,
 				9FD0FA3429CD947000F2AB0D /* KMOpacityPanel.xib in Resources */,
 				BB4BD9CF2909026500A66A65 /* KMRightSideViewController.xib in Resources */,
 				BB4BD9CF2909026500A66A65 /* KMRightSideViewController.xib in Resources */,
 				BB99ACC5292DE22E0048AFD9 /* KMMergeViewController.xib in Resources */,
 				BB99ACC5292DE22E0048AFD9 /* KMMergeViewController.xib in Resources */,
+				BB6347B82AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */,
 				8942F7F32926087200389627 /* KMSearchViewController.xib in Resources */,
 				8942F7F32926087200389627 /* KMSearchViewController.xib in Resources */,
 				ADF9ED3329A850D200C4A943 /* KMAccountInfoView.xib in Resources */,
 				ADF9ED3329A850D200C4A943 /* KMAccountInfoView.xib in Resources */,
 				ADD5AE592A64DD2600C14249 /* KMPurchaseAlertView.xib in Resources */,
 				ADD5AE592A64DD2600C14249 /* KMPurchaseAlertView.xib in Resources */,
@@ -9183,9 +9212,11 @@
 				ADBC374C29CAD65D00D93208 /* KMComparativeOutlineCell.xib in Resources */,
 				ADBC374C29CAD65D00D93208 /* KMComparativeOutlineCell.xib in Resources */,
 				9FDD0FBA295D5230000C4DAD /* KMToolbarController.xib in Resources */,
 				9FDD0FBA295D5230000C4DAD /* KMToolbarController.xib in Resources */,
 				894A00F52976314C0070ED83 /* KMPDFViewPanelSetViewController.xib in Resources */,
 				894A00F52976314C0070ED83 /* KMPDFViewPanelSetViewController.xib in Resources */,
+				BB6347B02AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */,
 				9F0201912A1DDAA500C9B673 /* KMAITranslationWindowController.xib in Resources */,
 				9F0201912A1DDAA500C9B673 /* KMAITranslationWindowController.xib in Resources */,
 				BB1BFF7D2AEA0BE8003EB179 /* KMBatchOperateRightViewController.xib in Resources */,
 				BB1BFF7D2AEA0BE8003EB179 /* KMBatchOperateRightViewController.xib in Resources */,
 				899700E228F3A9F2009AF911 /* KMHomeWindowController.xib in Resources */,
 				899700E228F3A9F2009AF911 /* KMHomeWindowController.xib in Resources */,
+				BB6347C82AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib in Resources */,
 				BB2F61532966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				BB2F61532966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				89752DED293875FC003FF08E /* KMMainToolbarController.xib in Resources */,
 				89752DED293875FC003FF08E /* KMMainToolbarController.xib in Resources */,
 				9FAAA335290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
 				9FAAA335290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
@@ -9390,6 +9421,7 @@
 				ADBC372529CA923E00D93208 /* KMComparative.plist in Resources */,
 				ADBC372529CA923E00D93208 /* KMComparative.plist in Resources */,
 				ADBC373829CA975B00D93208 /* KMCompatative.xcassets in Resources */,
 				ADBC373829CA975B00D93208 /* KMCompatative.xcassets in Resources */,
 				BB4EEF3129763EE7003A3537 /* KMRedactBaseWindowController.xib in Resources */,
 				BB4EEF3129763EE7003A3537 /* KMRedactBaseWindowController.xib in Resources */,
+				BB6347B12AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */,
 				9F0201762A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				9F0201762A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
 				9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
 				9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
 				9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
@@ -9448,6 +9480,7 @@
 				89E4E7302963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
 				89E4E7302963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
 				ADE614B229779C6D00F62ED7 /* KMImageTitleButton.xib in Resources */,
 				ADE614B229779C6D00F62ED7 /* KMImageTitleButton.xib in Resources */,
 				9F221EDB29A9EC0900978A59 /* KMFillSignTextPanel.xib in Resources */,
 				9F221EDB29A9EC0900978A59 /* KMFillSignTextPanel.xib in Resources */,
+				BB6347C92AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib in Resources */,
 				ADF6B87A2A48155E0090CB78 /* KMComparativeViewCollectionItem.xib in Resources */,
 				ADF6B87A2A48155E0090CB78 /* KMComparativeViewCollectionItem.xib in Resources */,
 				AD2D74BA29F0D3A100EDC5E4 /* KMCancellationSuccessView.xib in Resources */,
 				AD2D74BA29F0D3A100EDC5E4 /* KMCancellationSuccessView.xib in Resources */,
 				BB2F61542966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				BB2F61542966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
@@ -9621,6 +9654,7 @@
 				AD867F8C29D950B400F00440 /* KMBOTAOutlineView.xib in Resources */,
 				AD867F8C29D950B400F00440 /* KMBOTAOutlineView.xib in Resources */,
 				9FBA0F0229015A82001117AF /* KMFastToolCollectionViewItem.xib in Resources */,
 				9FBA0F0229015A82001117AF /* KMFastToolCollectionViewItem.xib in Resources */,
 				BBFE6E712930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				BBFE6E712930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
+				BB6347B92AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */,
 				ADD1B6FD2946C0D400C3FFF7 /* KMPrintChoosePageSizePamphletView.xib in Resources */,
 				ADD1B6FD2946C0D400C3FFF7 /* KMPrintChoosePageSizePamphletView.xib in Resources */,
 				ADF9ED3429A850D200C4A943 /* KMAccountInfoView.xib in Resources */,
 				ADF9ED3429A850D200C4A943 /* KMAccountInfoView.xib in Resources */,
 				ADE787AF2AA5AA50002EC85A /* KMAccountExceptionView.xib in Resources */,
 				ADE787AF2AA5AA50002EC85A /* KMAccountExceptionView.xib in Resources */,
@@ -9790,6 +9824,7 @@
 				89752DB22936F505003FF08E /* KMCustomButtonPopMenuViewController.xib in Resources */,
 				89752DB22936F505003FF08E /* KMCustomButtonPopMenuViewController.xib in Resources */,
 				BB9DEE862A14A01D00351CC4 /* PDF-Master-DMG-Info.plist in Resources */,
 				BB9DEE862A14A01D00351CC4 /* PDF-Master-DMG-Info.plist in Resources */,
 				BB8F455C295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
 				BB8F455C295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
+				BB6347BA2AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */,
 				9FD0FA5029D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */,
 				9FD0FA5029D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */,
 				ADC63E3C2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */,
 				ADC63E3C2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */,
 				AD68783A29A60FC0005B5210 /* KMLoginView.xib in Resources */,
 				AD68783A29A60FC0005B5210 /* KMLoginView.xib in Resources */,
@@ -9816,9 +9851,11 @@
 				BB6DD81129347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				BB6DD81129347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				BB49ECE2293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				BB49ECE2293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				ADD1B6D129431D7100C3FFF7 /* KMPrintPreviewView.xib in Resources */,
 				ADD1B6D129431D7100C3FFF7 /* KMPrintPreviewView.xib in Resources */,
+				BB6347B22AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */,
 				AD0FA4F729A8582C00EDEB50 /* KMComparativeTableView.xib in Resources */,
 				AD0FA4F729A8582C00EDEB50 /* KMComparativeTableView.xib in Resources */,
 				BB1BFF7F2AEA0BE8003EB179 /* KMBatchOperateRightViewController.xib in Resources */,
 				BB1BFF7F2AEA0BE8003EB179 /* KMBatchOperateRightViewController.xib in Resources */,
 				9F1F82DF292F84D60092C4B4 /* KMHomeInsertActionViewController.xib in Resources */,
 				9F1F82DF292F84D60092C4B4 /* KMHomeInsertActionViewController.xib in Resources */,
+				BB6347CA2AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib in Resources */,
 				BB9695B829BDB03E00FD68D3 /* InfoWindow.xib in Resources */,
 				BB9695B829BDB03E00FD68D3 /* InfoWindow.xib in Resources */,
 				9F1FE4E029406E4700E952CA /* .gclient in Resources */,
 				9F1FE4E029406E4700E952CA /* .gclient in Resources */,
 				9F02016F2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */,
 				9F02016F2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */,
@@ -10044,6 +10081,7 @@
 				BBFE6E752930E53000142C01 /* KMMergePopoverViewController.swift in Sources */,
 				BBFE6E752930E53000142C01 /* KMMergePopoverViewController.swift in Sources */,
 				9FBA0EFE29015A82001117AF /* KMFastToolCollectionViewItem.swift in Sources */,
 				9FBA0EFE29015A82001117AF /* KMFastToolCollectionViewItem.swift in Sources */,
 				BBA8B7A32935CD740097D183 /* KMRemovePasswordAlertWindowController.swift in Sources */,
 				BBA8B7A32935CD740097D183 /* KMRemovePasswordAlertWindowController.swift in Sources */,
+				BB6347B42AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */,
 				BB897246294C19980045787C /* KMWatermarkAdjectiveListController.swift in Sources */,
 				BB897246294C19980045787C /* KMWatermarkAdjectiveListController.swift in Sources */,
 				BBC347FD295448DE008D2CD1 /* KMWatermarkTemplateModel.swift in Sources */,
 				BBC347FD295448DE008D2CD1 /* KMWatermarkTemplateModel.swift in Sources */,
 				ADDEEA5E2AD39DC500EF675D /* KMSignatureManager.swift in Sources */,
 				ADDEEA5E2AD39DC500EF675D /* KMSignatureManager.swift in Sources */,
@@ -10399,6 +10437,7 @@
 				ADD1B6BB29420B4A00C3FFF7 /* KMPrintPreviewView.swift in Sources */,
 				ADD1B6BB29420B4A00C3FFF7 /* KMPrintPreviewView.swift in Sources */,
 				9F1F82B4292DEF370092C4B4 /* KMCloudDocumentsViewController.swift in Sources */,
 				9F1F82B4292DEF370092C4B4 /* KMCloudDocumentsViewController.swift in Sources */,
 				ADE8BC2529F7CCA600570F89 /* KMPageNumberDisplayView.swift in Sources */,
 				ADE8BC2529F7CCA600570F89 /* KMPageNumberDisplayView.swift in Sources */,
+				BB6347AE2AF1F0A500F5438E /* KMBatchOperateConvertViewController.swift in Sources */,
 				BB4DD047299B294000E80DF6 /* KMCloudFileEmptyView.swift in Sources */,
 				BB4DD047299B294000E80DF6 /* KMCloudFileEmptyView.swift in Sources */,
 				ADD272D029B9CFD30032B5D6 /* KMLightNoNetworkView.swift in Sources */,
 				ADD272D029B9CFD30032B5D6 /* KMLightNoNetworkView.swift in Sources */,
 				9F1F82CA292F6CF90092C4B4 /* KMPDFInsertPageWindow.swift in Sources */,
 				9F1F82CA292F6CF90092C4B4 /* KMPDFInsertPageWindow.swift in Sources */,
@@ -10608,6 +10647,7 @@
 				BB8B173C2907CDD9001C5EA5 /* NibLoadable.swift in Sources */,
 				BB8B173C2907CDD9001C5EA5 /* NibLoadable.swift in Sources */,
 				ADE3C1AB29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				ADE3C1AB29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				BB8F4557295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
 				BB8F4557295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
+				BB6347C42AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */,
 				AD88108D29A760D100178CA1 /* KMRegisterPresenter.swift in Sources */,
 				AD88108D29A760D100178CA1 /* KMRegisterPresenter.swift in Sources */,
 				BB146FB4299DC0D100784A6A /* GTLRUtilities.m in Sources */,
 				BB146FB4299DC0D100784A6A /* GTLRUtilities.m in Sources */,
 				BBC745F7296178BD0072C2ED /* KMCropTools.swift in Sources */,
 				BBC745F7296178BD0072C2ED /* KMCropTools.swift in Sources */,
@@ -10988,6 +11028,7 @@
 				9FCFEC992AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				9FCFEC992AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				89E4E6ED2963D1B7002DBA6F /* KMColorPickerViewController.m in Sources */,
 				89E4E6ED2963D1B7002DBA6F /* KMColorPickerViewController.m in Sources */,
 				ADAFDA172AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.swift in Sources */,
 				ADAFDA172AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.swift in Sources */,
+				BB6347B52AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */,
 				89752E1E2942CB04003FF08E /* KMSearchMode.swift in Sources */,
 				89752E1E2942CB04003FF08E /* KMSearchMode.swift in Sources */,
 				AD3A3588294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */,
 				AD3A3588294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */,
 				BB49ED1A293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */,
 				BB49ED1A293F4D4E00C82CA2 /* KMConvertCSVSettingView.swift in Sources */,
@@ -11101,6 +11142,7 @@
 				BBC70EB12AEA80EC00AC1585 /* KMToolbarCustomWindowController.swift in Sources */,
 				BBC70EB12AEA80EC00AC1585 /* KMToolbarCustomWindowController.swift in Sources */,
 				ADBC2D12299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				ADBC2D12299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				9F1FE49429406E4700E952CA /* common.m in Sources */,
 				9F1FE49429406E4700E952CA /* common.m in Sources */,
+				BB6347C52AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */,
 				AD0FA51329A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				AD0FA51329A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				9F0201732A1B488C00C9B673 /* KMAITranslationVC.swift in Sources */,
 				9F0201732A1B488C00C9B673 /* KMAITranslationVC.swift in Sources */,
 				ADAFDA1A2AE8DD6600F084BC /* KMAdvertisementTableView.swift in Sources */,
 				ADAFDA1A2AE8DD6600F084BC /* KMAdvertisementTableView.swift in Sources */,
@@ -11753,6 +11795,7 @@
 				AD85D1A02AEF927D000F4D28 /* KMQucikToolsModel.swift in Sources */,
 				AD85D1A02AEF927D000F4D28 /* KMQucikToolsModel.swift in Sources */,
 				9FF94F0B29A62B5000B1EF69 /* KMDesignSelect.swift in Sources */,
 				9FF94F0B29A62B5000B1EF69 /* KMDesignSelect.swift in Sources */,
 				BB60138E2AD3A94200A76FB2 /* CPDFSignatureAnnotation+PDFListView.swift in Sources */,
 				BB60138E2AD3A94200A76FB2 /* CPDFSignatureAnnotation+PDFListView.swift in Sources */,
+				BB6347B62AF224D600F5438E /* KMConvertCollectionViewHeader.swift in Sources */,
 				ADBC2D2A299DCA76006280C8 /* NSTextField+Layer.swift in Sources */,
 				ADBC2D2A299DCA76006280C8 /* NSTextField+Layer.swift in Sources */,
 				AD867FB529DFBB2700F00440 /* KMAnnotationOutlineSectionView.swift in Sources */,
 				AD867FB529DFBB2700F00440 /* KMAnnotationOutlineSectionView.swift in Sources */,
 				ADBC373E29CA9AE100D93208 /* KMComparativeManager.swift in Sources */,
 				ADBC373E29CA9AE100D93208 /* KMComparativeManager.swift in Sources */,
@@ -12025,6 +12068,7 @@
 				ADD272D229B9CFD30032B5D6 /* KMLightNoNetworkView.swift in Sources */,
 				ADD272D229B9CFD30032B5D6 /* KMLightNoNetworkView.swift in Sources */,
 				F3599224292CA27B000D25DE /* CPDFListViewRuntime.m in Sources */,
 				F3599224292CA27B000D25DE /* CPDFListViewRuntime.m in Sources */,
 				ADD1B6E12946BFD500C3FFF7 /* KMPrintChoosePageSizeSizeView.swift in Sources */,
 				ADD1B6E12946BFD500C3FFF7 /* KMPrintChoosePageSizeSizeView.swift in Sources */,
+				BB6347C62AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */,
 				BB4DD045299B291A00E80DF6 /* KMCloudNoNetworkView.swift in Sources */,
 				BB4DD045299B291A00E80DF6 /* KMCloudNoNetworkView.swift in Sources */,
 				9FBA0EE328FEC253001117AF /* KMProductPromotionViewController.swift in Sources */,
 				9FBA0EE328FEC253001117AF /* KMProductPromotionViewController.swift in Sources */,
 				8942F7F22926087200389627 /* KMSearchViewController.swift in Sources */,
 				8942F7F22926087200389627 /* KMSearchViewController.swift in Sources */,

+ 123 - 0
PDF Office/PDF Master/Class/Batch/View/KMBatchoperateConvertCollectionViewItem.swift

@@ -0,0 +1,123 @@
+//
+//  KMBatchoperateConvertCollectionViewItem.swift
+//  PDF Master
+//
+//  Created by kdanmobile on 2023/11/1.
+//
+
+import Cocoa
+
+class KMBatchoperateConvertCollectionViewItem: NSCollectionViewItem{
+    var selectLayer: CALayer?
+    
+    @IBOutlet var advancedButton: NSButton!
+    
+    @IBOutlet var containerView: NSView!
+    
+    @IBOutlet var moreInfoTextField: NSTextField!
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.textField!.font = NSFont.systemFont(ofSize: 12)
+        textField!.textColor = KMAppearance.Layout.h1Color()
+        moreInfoTextField.font = NSFont.boldSystemFont(ofSize: 9)
+        moreInfoTextField.textColor = KMAppearance.Layout.mColor()
+        view.wantsLayer = true
+        selectLayer = CALayer()
+        view.layer?.addSublayer(selectLayer!)
+        selectLayer?.frame = CGRect(x: 0, y: 0, width: 64, height: 76)
+        selectLayer!.backgroundColor = KMAppearance.Status.selColor().cgColor
+        selectLayer?.cornerRadius = 6
+        selectLayer!.isHidden = true
+        moreInfoTextField.sizeToFit()
+        containerView.wantsLayer = true
+        containerView.layer?.cornerRadius = moreInfoTextField.bounds.height / 2
+    }
+    override var isSelected: Bool{
+        get{
+            return super.isSelected
+        }
+        set{
+            super.isSelected = newValue
+            self.selectLayer?.isHidden = !newValue
+        }
+    }
+    
+    @IBAction func buttonClicked_AdvancedClicked(_ sender: Any) {
+        //        if (![IAPProductsManager defaultManager].isAvailableAdvancedPDFToOffice) {
+        //            [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
+        //        }
+    }
+    func updateInterface(_ type: KMConvertWithPDFType) {
+        var titleString: String? = nil
+        var moreInfoString: String? = nil
+        var image = NSImage(named: KMImageNameUXIconPropertybarFileWord)
+        advancedButton.isHidden = true
+        containerView.isHidden = true
+        switch type {
+        case .WordStandard:
+            titleString = "Word"
+            moreInfoString = NSLocalizedString("Standard", comment: "")
+            containerView.isHidden = false
+            moreInfoTextField.textColor = KMAppearance.Layout.h0Color()
+            containerView.layer?.backgroundColor = KMAppearance.Else.textTagColor().cgColor
+        case .WordAdvance:
+            titleString = "Word"
+//            if !IAPProductsManager.defaultManager.isAvailableAdvancedPDFToOffice {
+                moreInfoString = NSLocalizedString("Advanced", comment: "")
+                containerView.isHidden = false
+//            }
+            moreInfoTextField.textColor = KMAppearance.Layout.w0Color()
+            containerView.layer?.backgroundColor = KMAppearance.Interactive.a0Color().cgColor
+        case .Excel:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileExcel)
+            titleString = "Excel"
+        case .PowerPoint:
+            image = NSImage(named: KMImageNameUXIconPropertybarFilePPT)
+            titleString = "PowerPoint"
+        case .RTF:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileElse)
+            titleString = "RTF"
+        case .CSV:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileCSV)
+            titleString = "CSV"
+        case .HTML:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileHTML)
+            titleString = "HTML"
+        case .Text:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileTXT)
+            titleString = "Text"
+        case .JPEG:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileJPEG)
+            titleString = "JPEG"
+        case .JPG:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileJPG)
+            titleString = "JPG"
+        case .PNG:
+            image = NSImage(named: KMImageNameUXIconPropertybarFilePNG)
+            titleString = "PNG"
+        case .GIF:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileGIF)
+            titleString = "GIF"
+        case .TIFF:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileTIFF)
+            titleString = "TIFF"
+        case .TGA:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileTGA)
+            titleString = "TGA"
+        case .BMP:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileBMP)
+            titleString = "BMP"
+        case .JPEG2000:
+            image = NSImage(named: KMImageNameUXIconPropertybarFileJP2)
+            titleString = "JPEG2000"
+        }
+        
+        textField?.stringValue = titleString ?? ""
+        moreInfoTextField.stringValue = moreInfoString ?? ""
+        moreInfoTextField.toolTip = moreInfoString ?? ""
+        imageView?.image = image
+    }
+    
+
+}

+ 96 - 0
PDF Office/PDF Master/Class/Batch/View/KMBatchoperateConvertCollectionViewItem.xib

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchoperateConvertCollectionViewItem" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="advancedButton" destination="KRi-OD-0UT" id="tqY-HI-Cjh"/>
+                <outlet property="containerView" destination="GfF-v3-vvL" id="fjn-gK-zcG"/>
+                <outlet property="imageView" destination="tdp-67-GP3" id="LXw-IZ-mMZ"/>
+                <outlet property="moreInfoTextField" destination="NDf-YV-Dhg" id="e9Z-jU-iNb"/>
+                <outlet property="textField" destination="g9b-M4-eEv" id="8QE-WF-qBb"/>
+                <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="214" height="84"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="tdp-67-GP3">
+                    <rect key="frame" x="86" y="42" width="32" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="32" id="TkD-JX-AIG"/>
+                        <constraint firstAttribute="height" constant="32" id="vIt-WN-J98"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="light_ic_propertybar_file_word" id="97I-xg-AOZ"/>
+                </imageView>
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="g9b-M4-eEv">
+                    <rect key="frame" x="84" y="20" width="37" height="14"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="14" id="LcG-7F-mGw"/>
+                    </constraints>
+                    <textFieldCell key="cell" lineBreakMode="truncatingMiddle" title="Label" id="FWM-k5-5AP">
+                        <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>
+                <button translatesAutoresizingMaskIntoConstraints="NO" id="KRi-OD-0UT">
+                    <rect key="frame" x="194" y="64" width="20" height="20"/>
+                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="light_ic_vip" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="INR-5u-5Tp">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="buttonClicked_AdvancedClicked:" target="-2" id="TH2-FW-6UV"/>
+                    </connections>
+                </button>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="GfF-v3-vvL">
+                    <rect key="frame" x="80" y="4" width="45" height="14"/>
+                    <subviews>
+                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NDf-YV-Dhg">
+                            <rect key="frame" x="4" y="0.0" width="37" height="14"/>
+                            <textFieldCell key="cell" lineBreakMode="truncatingMiddle" title="Label" id="OBa-PH-xou">
+                                <font key="font" metaFont="system"/>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="14" id="NYm-4n-LY9"/>
+                        <constraint firstAttribute="trailing" secondItem="NDf-YV-Dhg" secondAttribute="trailing" constant="6" id="fG2-lX-FEB"/>
+                        <constraint firstItem="NDf-YV-Dhg" firstAttribute="leading" secondItem="GfF-v3-vvL" secondAttribute="leading" constant="6" id="fQy-Wr-mAy"/>
+                        <constraint firstItem="NDf-YV-Dhg" firstAttribute="top" secondItem="GfF-v3-vvL" secondAttribute="top" id="mj0-e7-9qk"/>
+                        <constraint firstAttribute="bottom" secondItem="NDf-YV-Dhg" secondAttribute="bottom" id="wHS-hT-TlG"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="GfF-v3-vvL" firstAttribute="centerX" secondItem="Hz6-mo-xeY" secondAttribute="centerX" constant="-5" id="0UY-El-fAY"/>
+                <constraint firstAttribute="trailing" secondItem="KRi-OD-0UT" secondAttribute="trailing" id="5Mz-Sh-Gqj"/>
+                <constraint firstItem="GfF-v3-vvL" firstAttribute="centerX" secondItem="tdp-67-GP3" secondAttribute="centerX" id="5Nc-S2-75r"/>
+                <constraint firstItem="KRi-OD-0UT" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="IDx-vy-kXI"/>
+                <constraint firstAttribute="bottom" secondItem="GfF-v3-vvL" secondAttribute="bottom" constant="4" id="K6p-cj-wXe"/>
+                <constraint firstItem="GfF-v3-vvL" firstAttribute="top" secondItem="g9b-M4-eEv" secondAttribute="bottom" constant="2" id="Lkj-iK-dQn"/>
+                <constraint firstItem="tdp-67-GP3" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="10" id="QWJ-gW-vMh"/>
+                <constraint firstItem="g9b-M4-eEv" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="R5q-iH-hji"/>
+                <constraint firstItem="g9b-M4-eEv" firstAttribute="centerX" secondItem="tdp-67-GP3" secondAttribute="centerX" id="eNY-9I-cxJ"/>
+                <constraint firstItem="g9b-M4-eEv" firstAttribute="centerX" secondItem="tdp-67-GP3" secondAttribute="centerX" id="jpe-bd-JH0"/>
+                <constraint firstItem="g9b-M4-eEv" firstAttribute="top" secondItem="tdp-67-GP3" secondAttribute="bottom" constant="8" id="ro4-p2-fU6"/>
+                <constraint firstItem="GfF-v3-vvL" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="xqR-aH-Vjr"/>
+            </constraints>
+            <point key="canvasLocation" x="-276" y="69.5"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="light_ic_propertybar_file_word" width="32" height="32"/>
+        <image name="light_ic_vip" width="20" height="20"/>
+    </resources>
+</document>

+ 71 - 0
PDF Office/PDF Master/Class/Batch/View/KMConvertCollectionViewHeader.swift

@@ -0,0 +1,71 @@
+//
+//  KMConvertCollectionViewHeader.swift
+//  PDF Master
+//
+//  Created by kdanmobile on 2023/11/1.
+//
+
+import Cocoa
+
+typealias convertCollectionViewHeaderClickedCallBack = () -> ()
+
+class KMConvertCollectionViewHeader: KMBaseXibView{
+    
+    @IBOutlet var indicateLabel: NSTextField!
+    
+    @IBOutlet var imageView: NSImageView!
+    
+    @IBOutlet var infoLabel: NSTextField!
+    
+    @IBOutlet var containerView: NSView!
+    
+    var convertHeaderClickedCallBack: convertCollectionViewHeaderClickedCallBack?
+    
+    deinit {
+        NotificationCenter.default.removeObserver(self)
+    }
+
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+        
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        indicateLabel.font = NSFont.boldSystemFont(ofSize: 14)
+        indicateLabel.textColor = KMAppearance.Layout.h0Color()
+        indicateLabel.stringValue = NSLocalizedString("Convert", comment: "")
+        infoLabel.font = NSFont.boldSystemFont(ofSize: 11)
+        infoLabel.textColor = KMAppearance.Interactive.m0Color()
+        infoLabel.stringValue = NSLocalizedString("Upgrade to Pro", comment: "")
+        infoLabel.toolTip = NSLocalizedString("Upgrade to Pro", comment: "")
+        containerView.wantsLayer = true
+        containerView.layer?.cornerRadius = 12
+        //        if IAPProductsManager.defaultManager().isAvailableAdvancedPDFToOffice {
+        //            containerView.isHidden = true
+        //        }
+        //购买状态变化通知
+//        NotificationCenter.default.addObserver(self, selector: #selector(IAPProductRestoreFinishedNotification(notification:)), name: NSNotification.Name(rawValue: KMIAPProductPurchasedNotification), object: nil)
+//        NotificationCenter.default.addObserver(self, selector: #selector(IAPProductRestoreFinishedNotification(notification:)), name: NSNotification.Name(rawValue: KMIAPProductRestoreFinishedNotification), object: nil)
+    }
+    
+    override func mouseUp(with event: NSEvent) {
+        super.mouseUp(with: event)
+        let point = event.locationInWindow
+        let newPoint = convert(point, from: nil)
+        if self.containerView.frame.contains(newPoint) {
+//            if !IAPProductsManager.defaultManager().isAvailableAdvancedPDFToOffice {
+                self.convertHeaderClickedCallBack?()
+//            }
+        }
+    }
+    
+    @objc func IAPProductPurchasedNotification(notification: Notification) {
+        containerView.isHidden = true
+    }
+    
+    @objc func IAPProductRestoreFinishedNotification(notification: Notification) {
+        containerView.isHidden = true
+    }
+    
+}

+ 82 - 0
PDF Office/PDF Master/Class/Batch/View/KMConvertCollectionViewHeader.xib

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMConvertCollectionViewHeader" customModule="PDF_Master" customModuleProvider="target"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView identifier="convertHeader" id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="adF-Xf-x0M">
+                    <rect key="frame" x="8" y="241" width="37" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="ovW-WC-9XR">
+                        <font key="font" usesAppearanceFont="YES"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="65M-xr-NTJ">
+                    <rect key="frame" x="53" y="237" width="73" height="24"/>
+                    <subviews>
+                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="0aS-gO-4wt">
+                            <rect key="frame" x="-37" y="0.0" width="147" height="24"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="24" id="Bhq-1K-h7Y"/>
+                            </constraints>
+                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="axesIndependently" image="KMImageNameElseVIPBackgroud" id="cXq-Dl-O9N"/>
+                        </imageView>
+                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="JZM-NO-k0s">
+                            <rect key="frame" x="12" y="6" width="12" height="13"/>
+                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameElseVIP2" id="E3c-ED-XE8"/>
+                        </imageView>
+                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Sft-Vr-raz">
+                            <rect key="frame" x="26" y="4" width="37" height="16"/>
+                            <constraints>
+                                <constraint firstAttribute="width" relation="lessThanOrEqual" constant="100" id="eDk-mu-WPU"/>
+                            </constraints>
+                            <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Label" id="SXE-93-vrI">
+                                <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="0aS-gO-4wt" firstAttribute="leading" secondItem="65M-xr-NTJ" secondAttribute="leading" constant="-37" id="1OU-MT-YXj"/>
+                        <constraint firstItem="0aS-gO-4wt" firstAttribute="top" secondItem="65M-xr-NTJ" secondAttribute="top" id="8bG-tC-aUJ"/>
+                        <constraint firstAttribute="height" constant="24" id="DgP-kl-kaC"/>
+                        <constraint firstItem="Sft-Vr-raz" firstAttribute="leading" secondItem="JZM-NO-k0s" secondAttribute="trailing" constant="4" id="OfJ-gA-7hU"/>
+                        <constraint firstItem="JZM-NO-k0s" firstAttribute="leading" secondItem="65M-xr-NTJ" secondAttribute="leading" constant="12" id="Zi0-5T-Xvl"/>
+                        <constraint firstItem="JZM-NO-k0s" firstAttribute="centerY" secondItem="65M-xr-NTJ" secondAttribute="centerY" id="bVw-DB-Qaj"/>
+                        <constraint firstItem="Sft-Vr-raz" firstAttribute="centerY" secondItem="65M-xr-NTJ" secondAttribute="centerY" id="d0D-sM-aEA"/>
+                        <constraint firstAttribute="trailing" secondItem="Sft-Vr-raz" secondAttribute="trailing" constant="12" id="dYb-NQ-e4g"/>
+                        <constraint firstAttribute="trailing" secondItem="0aS-gO-4wt" secondAttribute="trailing" constant="-37" id="nNR-0h-yMJ"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="65M-xr-NTJ" firstAttribute="centerY" secondItem="adF-Xf-x0M" secondAttribute="centerY" id="0Qe-jR-t0M"/>
+                <constraint firstItem="adF-Xf-x0M" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="10" id="Gms-2W-8tk"/>
+                <constraint firstItem="adF-Xf-x0M" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="15" id="Ptb-I5-jdh"/>
+                <constraint firstItem="65M-xr-NTJ" firstAttribute="leading" secondItem="adF-Xf-x0M" secondAttribute="trailing" constant="10" id="vGf-Mc-fJj"/>
+            </constraints>
+            <connections>
+                <outlet property="containerView" destination="65M-xr-NTJ" id="6NC-g9-Wuq"/>
+                <outlet property="imageView" destination="JZM-NO-k0s" id="v6i-GT-ZOt"/>
+                <outlet property="indicateLabel" destination="adF-Xf-x0M" id="cAv-ur-r5G"/>
+                <outlet property="infoLabel" destination="Sft-Vr-raz" id="BG0-Ai-hlY"/>
+            </connections>
+            <point key="canvasLocation" x="-134" y="121"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="KMImageNameElseVIP2" width="12" height="13"/>
+        <image name="KMImageNameElseVIPBackgroud" width="118" height="24"/>
+    </resources>
+</document>

+ 1 - 1
PDF Office/PDF Master/Class/Batch/WindowController/Base/KMBatchOperateBaseViewController.swift

@@ -134,7 +134,7 @@ class KMBatchOperateBaseViewController: NSViewController, KMBatchOperateProtocol
         }
         }
     }
     }
     func operationWithFile(_ file: KMBatchOperateFile) -> KMBatchOperation? {
     func operationWithFile(_ file: KMBatchOperateFile) -> KMBatchOperation? {
-        var operation: KMBatchOperation? = nil
+        let operation: KMBatchOperation? = nil
         if self.operateType == .Convert {
         if self.operateType == .Convert {
             //            operation = KMBatchConvertOperation(file: file, convertType: self.convertType)
             //            operation = KMBatchConvertOperation(file: file, convertType: self.convertType)
         } else if self.operateType == .Compress {
         } else if self.operateType == .Compress {

+ 194 - 0
PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateRightViewController.swift

@@ -9,4 +9,198 @@ import Cocoa
 
 
 class KMBatchOperateRightViewController: NSViewController{
 class KMBatchOperateRightViewController: NSViewController{
     var compressViewController: KMBatchOperateCompressViewController?
     var compressViewController: KMBatchOperateCompressViewController?
+    
+        var convertViewController: KMBatchOperateConvertViewController?
+    //    var addWatermarkViewController: KMBatchOperateAddWatermarkViewController?
+    //    var removeWatermarkViewController: KMBatchOperateRemoveWatermarkViewController?
+    //    var addBackgroundViewController: KMBatchOperateAddWatermarkViewController?
+    //    var removeBackgroundViewController: KMBatchOperateRemoveWatermarkViewController?
+    //    var addHeaderFooterViewController: KMBatchOperateAddHeaderFooterViewController?
+    //    var removeHeaderFooterViewController: KMBatchOperateRemoveHeaderFooterViewController?
+    //    var addBatesViewController: KMBatchOperateAddHeaderFooterViewController?
+    //    var removeBatesViewController: KMBatchOperateRemoveHeaderFooterViewController?
+    //    var addPasswordViewController: KMBatchOperateAddPasswordViewController?
+    //    var removePasswordViewController: KMBatchOperateRemovePasswordViewController?
+    //    var compressViewController: KMBatchOperateCompressViewController?
+    //    var imageToPDFViewController: KMBatchOperateImageToPDFViewController?
+    
+    var _currentType: KMBatchOperationType?
+    var currentType: KMBatchOperationType?{
+        get{
+            return _currentType
+        }
+        set{
+            if _currentType != newValue{
+                _currentType = newValue
+                for i in 0..<self.view.subviews.count {
+                    let v = self.view.subviews[i]
+                    v.removeFromSuperview()
+                }
+                if newValue == .Convert {
+//                    self.view.addSubview(self.convertViewController!.view)
+//                    self.convertViewController!.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.convertViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.convertViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.convertViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.convertViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .AddWatermark {
+//                    self.view.addSubview(self.addWatermarkViewController.view)
+//                    self.addWatermarkViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.addWatermarkViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.addWatermarkViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.addWatermarkViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.addWatermarkViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .RemoveWatermark {
+//                    self.view.addSubview(self.removeWatermarkViewController.view)
+//                    self.removeWatermarkViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.removeWatermarkViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.removeWatermarkViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.removeWatermarkViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.removeWatermarkViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .AddBackground {
+//                    self.view.addSubview(self.addBackgroundViewController.view)
+//                    self.addBackgroundViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.addBackgroundViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.addBackgroundViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.addBackgroundViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.addBackgroundViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .RemoveBackground {
+//                    self.view.addSubview(self.removeBackgroundViewController.view)
+//                    self.removeBackgroundViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.removeBackgroundViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.removeBackgroundViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.removeBackgroundViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.removeBackgroundViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .AddHeaderFooter {
+//                    self.view.addSubview(self.addHeaderFooterViewController.view)
+//                    self.addHeaderFooterViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.addHeaderFooterViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.addHeaderFooterViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.addHeaderFooterViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.addHeaderFooterViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .RemoveHeaderFooter {
+//                    self.view.addSubview(self.removeHeaderFooterViewController.view)
+//                    self.removeHeaderFooterViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.removeHeaderFooterViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.removeHeaderFooterViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.removeHeaderFooterViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.removeHeaderFooterViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .AddBates {
+//                    self.view.addSubview(self.addBatesViewController.view)
+//                    self.addBatesViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.addBatesViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.addBatesViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.addBatesViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.addBatesViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .RemoveBates {
+//                    self.view.addSubview(self.removeBatesViewController.view)
+//                    self.removeBatesViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.removeBatesViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.removeBatesViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.removeBatesViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.removeBatesViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+//                } else if _currentType == .AddPassword { self.view.addSubview(self.addPasswordViewController.view)
+//                    self.addPasswordViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.addPasswordViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.addPasswordViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.addPasswordViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.addPasswordViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .RemovePassword {
+//                    self.view.addSubview(self.removePasswordViewController.view)
+//                    self.removePasswordViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.removePasswordViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.removePasswordViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.removePasswordViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.removePasswordViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .Compress {
+//                    self.view.addSubview(self.compressViewController.view)
+//                    self.compressViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.compressViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.compressViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.compressViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.compressViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                } else if _currentType == .CreatePDF {
+//                    self.view.addSubview(self.imageToPDFViewController.view)
+//                    self.imageToPDFViewController.view.translatesAutoresizingMaskIntoConstraints = false
+//                    NSLayoutConstraint.activate([
+//                        self.imageToPDFViewController!.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+//                        self.imageToPDFViewController!.view.topAnchor.constraint(equalTo: self.view.topAnchor),
+//                        self.imageToPDFViewController!.view.rightAnchor.constraint(equalTo: self.view.rightAnchor),
+//                        self.imageToPDFViewController!.view.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+//                    ])
+                }
+            }
+        }
+    }
+
+    var files: [KMBatchOperateFile] = []
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        
+    }
+    
+    func switchToOperateType(operateType: KMBatchOperationType, files: [KMBatchOperateFile]) {
+        self.files = files
+//        self.imageToPDFViewController.files = self.files
+        self.currentType = operateType
+    }
+    
+    func switchToOperateType(operateType: KMBatchOperationType) {
+        self.currentType = operateType
+    }
+    
+    func switchToConvertType(_ convertType: KMConvertWithPDFType) {
+        if self.currentType == .Convert {
+            self.convertViewController!.switchToConvertType(convertType)
+        }
+    }
+    
+//    func watermarkInterfaceSelectWatermark(_ watermark: KMPDFWatermarkData) {
+//        if self.currentType == .AddWatermark {
+//            self.addWatermarkViewController.watermarkInterfaceSelectWatermark(watermark)
+//        }
+//    }
+//    
+//    func backgroundInterfaceSelectBackground(_ background: KMBackgroundObject) {
+//        if self.currentType == .AddBackground {
+//            self.addBackgroundViewController.backgroundInterfaceSelectBackground(background)
+//        }
+//    }
+//    
+//    func headerFooterInterfaceSelectHeaderFooter(_ headerFooter: KMHeaderFooterObject) {
+//        if self.currentType == .AddHeaderFooter {
+//            self.addHeaderFooterViewController.headerFooterInterfaceSelectHeaderFooter(headerFooter)
+//        }
+//    }
+//    
+//    func batesInterfaceSelectBates(_ headerFooter: KMHeaderFooterObject) {
+//        if self.currentType == .AddBates {
+//            self.addHeaderFooterViewController.headerFooterInterfaceSelectHeaderFooter(headerFooter)
+//        }
+//    }
 }
 }

+ 25 - 1
PDF Office/PDF Master/Class/Batch/WindowController/KMBatchOperateSplitViewController.swift

@@ -32,6 +32,30 @@ class KMBatchOperateSplitViewController: NSSplitViewController{
     
     
     func switchToOperateType(operateType: KMBatchOperationType, files: NSMutableArray) {
     func switchToOperateType(operateType: KMBatchOperationType, files: NSMutableArray) {
         self.leftFileListViewController?.switchToOperateType(operateType, files: files as! [KMBatchOperateFile])
         self.leftFileListViewController?.switchToOperateType(operateType, files: files as! [KMBatchOperateFile])
-//        self.rightPropertiesViewController.switchToOperateType(operateType: operateType, files: files)
+        self.rightPropertiesViewController?.switchToOperateType(operateType: operateType, files: files as! [KMBatchOperateFile])
     }
     }
+    func checkNeedPasswordSwitchToOperateType(_ operateType: KMBatchOperationType, files: [KMBatchOperateFile]) {
+        self.leftFileListViewController?.checkNeedPasswordSwitchToOperateType(operateType, files: files)
+        self.rightPropertiesViewController?.switchToOperateType(operateType: operateType, files: files)
+    }
+    func switchToOperateType(_ operateType: KMBatchOperationType) {
+        self.leftFileListViewController!.switchToOperateType(operateType)
+        self.rightPropertiesViewController!.switchToOperateType(operateType: operateType)
+    }
+    func switchToConvertType(_ convertType: KMConvertWithPDFType) {
+        self.leftFileListViewController!.reloadConvertInterface(withType: convertType)
+        self.rightPropertiesViewController!.switchToConvertType(convertType)
+    }
+//    func watermarkInterfaceSelectWatermark(_ watermark: KMPDFWatermarkData) {
+//        self.rightPropertiesViewController.watermarkInterfaceSelectWatermark(watermark)
+//    }
+//    func backgroundInterfaceSelectBackground(_ background: KMBackgroundObject) {
+//        self.rightPropertiesViewController.backgroundInterfaceSelectBackground(background)
+//    }
+//    func headerFooterInterfaceSelectHeaderFooter(_ headerFooter: KMHeaderFooterObject) {
+//        self.rightPropertiesViewController.headerFooterInterfaceSelectHeaderFooter(headerFooter)
+//    }
+//    func batesInterfaceSelectBates(_ headerFooter: KMHeaderFooterObject) {
+//        self.rightPropertiesViewController.batesInterfaceSelectBates(headerFooter)
+//    }
 }
 }

+ 591 - 0
PDF Office/PDF Master/Class/Batch/WindowController/VC/KMBatchOperateConvertViewController.swift

@@ -0,0 +1,591 @@
+//
+//  KMBatchOperateConvertViewController.swift
+//  PDF Master
+//
+//  Created by kdanmobile on 2023/11/1.
+//
+
+import Cocoa
+
+typealias detailInfoViewMouseDownCallback = (_ mouseDown: Bool) -> ()
+
+class KMDetailInfoView: NSView{
+    var mouseDownCallback: detailInfoViewMouseDownCallback?
+    override func mouseDown(with event: NSEvent) {
+        super.mouseDown(with: event)
+        guard let callBack = mouseDownCallback else { return }
+        callBack(true)
+    }
+}
+
+class KMBatchOperateConvertViewController: KMBatchOperateBaseViewController{
+    var dataSourcesArray: NSMutableArray?
+    @IBOutlet var collectionView: NSCollectionView!
+    @IBOutlet var bottomView: NSView!
+    @IBOutlet var convertEveryPageButton: NSButton!
+    
+    @IBOutlet var convertButton: NSButton!
+    
+    @IBOutlet var detailInfoView: KMDetailInfoView!
+    @IBOutlet var detailInfoLabel: NSTextField!
+    
+    @IBOutlet var checkBoxTopConstraint: NSLayoutConstraint!
+    @IBOutlet var containerViewTopConstraint: NSLayoutConstraint!
+    @IBOutlet var checkBoxBottomConstaint: NSLayoutConstraint!
+    
+    @IBOutlet var convertEveryPageButtonLabel: NSTextField!
+    
+    @IBOutlet var extractButton: NSButton!
+    
+    @IBOutlet var wordButtonOne: NSButton!
+    
+    @IBOutlet var wordButtonTwo: NSButton!
+    
+    @IBOutlet var csvExtractButton: NSButton!
+    
+    @IBOutlet var onlyTextBtn: NSButton!
+    
+    @IBOutlet var onlyTableBtn: NSButton!
+    
+    @IBOutlet var allContentBtn: NSButton!
+    
+    @IBOutlet var tableMenu1: NSMenuItem!
+    
+    @IBOutlet var tableMenu2: NSMenuItem!
+    
+    @IBOutlet var tableMenu3: NSMenuItem!
+    
+    @IBOutlet var allContentMenu2: NSMenuItem!
+    
+    @IBOutlet var allContentMenu3: NSMenuItem!
+    
+    @IBOutlet var tableMenu: NSPopUpButton!
+    
+    @IBOutlet var allContentMenu: NSPopUpButton!
+    
+    var excelContentOption: CPDFConvertExcelContentOptions?
+    var excelWorksheetOption: CPDFConvertExcelWorksheetOptions?
+    var haveFiles: Bool = false
+    
+    deinit {
+        NotificationCenter.default.removeObserver(self)
+    }
+    override var interfaceStatus: KMBatchOperateInterfaceStatus?{
+        set{
+            super.interfaceStatus = newValue
+            self.convertButton.isEnabled = true
+            if newValue == .Processing  {
+                self.collectionView.isSelectable = false
+                self.convertButton.title = NSLocalizedString("Cancel", comment: "")
+                self.convertButton.tag = 2
+                self.convertButton.setTitleColor(KMAppearance.Layout.w0Color())
+                self.convertButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor
+                if self.convertType == .WordStandard {
+                    self.convertButton.title = NSLocalizedString("Convert", comment: "")
+                    self.convertButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().withAlphaComponent(0.4).cgColor
+                    self.convertButton.isEnabled = false
+                }
+            } else {
+                DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
+                    var files: [URL] = []
+                    for url in self.successFilePathURLArray! {
+                        if FileManager.default.fileExists(atPath: url.path) {
+                            files.append(url)
+                        }
+                    }
+                    if files.count > 0 {
+                        let workspace = NSWorkspace.shared
+                        workspace.activateFileViewerSelecting(files)
+                    }
+                }
+                self.collectionView.isSelectable = true
+                self.convertButton.title = NSLocalizedString("Convert", comment: "")
+                self.convertButton.tag = 1
+                self.convertButton.setTitleColor(KMAppearance.Layout.w0Color())
+                self.convertButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor
+            }
+        }
+        get{
+            return super.interfaceStatus
+        }
+    }
+    override var convertType: KMConvertWithPDFType?{
+        set{
+            super.convertType = newValue
+            changeAllFilesToConvertType(convertType!)
+            fetchFileListViewController()?.reloadConvertInterface(withType: convertType!)
+        }
+        get{
+            return super.convertType
+        }
+    }
+    func changeAllFilesToConvertType(_ type: KMConvertWithPDFType) {
+        for i in 0..<self.files!.count {
+            let file = self.files![i]
+            file.convertType = type
+        }
+    }
+    func switchToConvertType(_ convertType: KMConvertWithPDFType) {
+        self.convertType = convertType
+        self.manualSelectRow(convertType)
+        self.updateBottomView()
+    }
+    func manualSelectRow(_ convertType: KMConvertWithPDFType) {
+        self.collectionView.deselectAll(nil)
+        self.collectionView.reloadData()
+        var set = Set<IndexPath>()
+        var index = -1
+        for i in 0..<self.dataSourcesArray!.count {
+            let number = self.dataSourcesArray![i]
+            if (number as AnyObject).intValue == convertType.rawValue {
+                index = i
+                break
+            }
+        }
+        if index != -1 {
+            let indexPath = IndexPath(item: index, section: 0)
+            set.insert(indexPath)
+            self.collectionView.selectItems(at: set, scrollPosition: [])
+            let selectionRect = self.collectionView.frameForItem(at: self.collectionView.selectionIndexes.first ?? 0)
+            self.collectionView.scrollToVisible(selectionRect)
+            
+        }
+    }
+    func updateBottomView() {
+        var moreLabelString = ""
+        self.onlyTextBtn.isHidden = true
+        self.onlyTableBtn.isHidden = true
+        self.allContentBtn.isHidden = true
+        self.tableMenu.isHidden = true
+        self.allContentMenu.isHidden = true
+#if VERSION_FREE
+        if .WordStandard == self.convertType {
+            moreLabelString = NSLocalizedString("Export PDF to Word and other Microsoft Office formats", comment: "")
+        } else if .WordAdvance == self.convertType ||
+            .Excel == self.convertType ||
+            .PowerPoint == self.convertType ||
+            .CSV == self.convertType ||
+            .RTF == self.convertType ||
+            .GIF == self.convertType ||
+            .TIFF == self.convertType ||
+            .JPEG2000 == self.convertType ||
+            .BMP == self.convertType ||
+            .TGA == self.convertType {
+            moreLabelString = NSLocalizedString("The first 10 pages for free. More precise one.", comment: "")
+        }
+#else
+        // 付费版
+        if .WordStandard == self.convertType {
+            moreLabelString = NSLocalizedString("Export PDF to Word and other Microsoft Office formats", comment: "")
+        } else if .WordAdvance == self.convertType ||
+            .Excel == self.convertType ||
+            .PowerPoint == self.convertType ||
+            .CSV == self.convertType ||
+            .RTF == self.convertType ||
+            .GIF == self.convertType ||
+            .TIFF == self.convertType ||
+            .JPEG2000 == self.convertType ||
+            .BMP == self.convertType ||
+            .TGA == self.convertType {
+            moreLabelString = NSLocalizedString("The first 10 pages for free. More precise one.", comment: "")
+        }
+#endif
+        
+        var hasInfo = false
+        var isExcel = false
+        self.detailInfoLabel.stringValue = moreLabelString
+        if moreLabelString.count > 0 {
+            self.detailInfoView.isHidden = false
+            self.containerViewTopConstraint.constant = 16
+            hasInfo = true
+        } else {
+            self.detailInfoView.isHidden = true
+            self.containerViewTopConstraint.constant = 11
+        }
+        
+        if self.convertType == .WordAdvance {
+            isExcel = true
+            self.convertEveryPageButton.isHidden = true
+            self.wordButtonOne.isHidden = false
+            self.wordButtonOne.title = NSLocalizedString("Retain Flowing Text", comment: "")
+            self.convertEveryPageButtonLabel.isHidden = true
+            self.extractButton.isHidden = true
+            self.csvExtractButton.isHidden = true
+            self.wordButtonTwo.isHidden = false
+            self.wordButtonTwo.title = NSLocalizedString("Retain Page Layout", comment: "")
+            self.checkBoxBottomConstaint.constant = 15 + self.wordButtonTwo.frame.size.height + self.wordButtonOne.frame.size.height
+            self.checkBoxTopConstraint.constant = 5
+        } else if self.convertType == .Excel {
+            isExcel = true
+            
+            self.convertEveryPageButtonLabel.stringValue = NSLocalizedString("Convert each page to a separate worksheet", comment: "")
+            self.onlyTextBtn.isHidden = false
+            self.onlyTableBtn.isHidden = false
+            self.allContentBtn.isHidden = false
+            self.tableMenu.isHidden = false
+            self.allContentMenu.isHidden = false
+            self.convertEveryPageButtonLabel.isHidden = true
+            self.convertEveryPageButton.isHidden = true
+            self.wordButtonOne.isHidden = true
+            self.extractButton.isHidden = true
+            self.wordButtonTwo.isHidden = true
+            self.csvExtractButton.isHidden = true
+            
+            self.extractButton.title = NSLocalizedString("Extract Tables Only", comment: "")
+            var oneHeight = self.convertEveryPageButtonLabel.frame.size.height
+            let language =  Bundle.main.preferredLocalizations[0]
+            if language != "zh_CN" && language != "zh_TW" {
+                oneHeight = 34.0
+            }
+            self.checkBoxBottomConstaint.constant = 83
+            self.checkBoxTopConstraint.constant = 5
+        } else if self.convertType == .CSV {
+            isExcel = true
+            self.convertEveryPageButtonLabel.isHidden = true
+            self.convertEveryPageButton.isHidden = true
+            self.extractButton.isHidden = true
+            self.wordButtonTwo.isHidden = true
+            self.wordButtonOne.isHidden = true
+            self.csvExtractButton.isHidden = false
+            
+            self.csvExtractButton.title = NSLocalizedString("Extract Tables Only", comment: "")
+            self.checkBoxBottomConstaint.constant = 15 + self.csvExtractButton.frame.size.height
+            self.checkBoxTopConstraint.constant = 5
+        } else {
+            self.convertEveryPageButton.isHidden = true
+            self.extractButton.isHidden = true
+            self.wordButtonTwo.isHidden = true
+            self.wordButtonOne.isHidden = true
+            self.csvExtractButton.isHidden = true
+            self.convertEveryPageButtonLabel.stringValue = NSLocalizedString("", comment: "")
+            self.checkBoxTopConstraint.constant = -10
+            self.checkBoxBottomConstaint.constant = 5
+        }
+        
+        if !hasInfo && !isExcel {
+            self.containerViewTopConstraint.constant = 0
+            self.checkBoxTopConstraint.constant = 0
+            self.checkBoxBottomConstaint.constant = 1
+        }
+    }
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.prepareData()
+        self.view.wantsLayer = true
+        collectionView.allowsMultipleSelection = false
+        collectionView.enclosingScrollView?.borderType = .noBorder
+        collectionView.allowsEmptySelection = false
+        convertButton.wantsLayer = true
+        convertButton.font = NSFont.systemFont(ofSize: 13)
+        convertButton.layer?.cornerRadius = 1.0
+        interfaceStatus = .PrepareProcess
+        convertEveryPageButton.title = NSLocalizedString("", comment: "")
+        // Convert each page to a separate worksheet
+        convertEveryPageButtonLabel.stringValue = NSLocalizedString("Convert each page to a separate worksheet", comment: "")
+        
+        self.collectionView.register(KMConvertCollectionViewHeader.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMAdvertisementCollectionViewItem"))
+        
+        collectionView.enclosingScrollView?.drawsBackground = false
+        let v = NSView(frame: NSRect(x: 0, y: 0, width: 100, height: 100))
+        v.wantsLayer = true
+        v.layer?.backgroundColor = KMAppearance.Layout.l0Color().cgColor
+        collectionView.backgroundView = v
+        collectionView.enclosingScrollView?.horizontalScrollElasticity = .none
+        collectionView.enclosingScrollView?.verticalScrollElasticity = .none
+        allContentBtn.state = .on
+        allContentMenu.isEnabled = true
+        tableMenu.isEnabled = false
+        excelContentOption = .allContent
+        excelWorksheetOption = .forEachPage
+        
+        onlyTextBtn.title = NSLocalizedString("Only Text", comment: "")
+        onlyTableBtn.title = NSLocalizedString("Only Table", comment: "")
+        allContentBtn.title = NSLocalizedString("All Content", comment: "")
+        onlyTextBtn.toolTip = NSLocalizedString("Only Text", comment: "")
+        onlyTableBtn.toolTip = NSLocalizedString("Only Table", comment: "")
+        allContentBtn.toolTip = NSLocalizedString("All Content", comment: "")
+        tableMenu1.title = NSLocalizedString("Create Sheet for each Table", comment: "")
+        tableMenu2.title = NSLocalizedString("Create Sheet for each Page", comment: "")
+        allContentMenu2.title = NSLocalizedString("Create Sheet for each Page", comment: "")
+        tableMenu3.title = NSLocalizedString("Create single Sheet for File", comment: "")
+        allContentMenu3.title = NSLocalizedString("Create single Sheet for File", comment: "")
+        
+        self.detailInfoView.mouseDownCallback = { [weak self] (downEntered: Bool) in
+            if downEntered {
+//                if (![IAPProductsManager defaultManager].isAvailableAdvancedPDFToOffice) {
+                self?.convertActionVC()
+//                }
+            }
+        }
+        self.updateViewColor()
+       
+        
+        NotificationCenter.default.addObserver(self, selector: #selector(batchFilesCountNotification(notification:)), name: NSNotification.Name("KMBatchFilesCountNotification"), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(IAPProductPurchasedNotification(notification:)), name: NSNotification.Name("KMIAPProductPurchasedNotification"), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(IAPProductRestoreFinishedNotification(notification:)), name: NSNotification.Name("KMIAPProductRestoreFinishedNotification"), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(themeChanged(notification:)), name: NSNotification.Name("AppleInterfaceThemeChangedNotification"), object: nil)
+    }
+    @objc func batchFilesCountNotification(notification: NSNotification) {
+        let files = notification.object as? [Any]
+        if files!.count > 0 {
+            self.convertButton.setTitleColor(NSColor.white)
+            self.convertButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor
+            self.haveFiles = true
+        } else {
+            self.convertButton.setTitleColor(KMAppearance.Layout.w0Color().withAlphaComponent(0.6))
+            self.convertButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().withAlphaComponent(0.4).cgColor
+            self.haveFiles = false
+        }
+    }
+    @objc func themeChanged(notification: NSNotification) {
+        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
+            self.updateViewColor()
+        }
+    }
+    @objc func IAPProductRestoreFinishedNotification(notification: NSNotification) {
+        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
+            self.updateBottomView()
+            self.prepareData()
+            self.collectionView.reloadData()
+        }
+    }
+    @objc func IAPProductPurchasedNotification(notification: NSNotification) {
+        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
+            self.updateBottomView()
+            self.prepareData()
+            self.collectionView.reloadData()
+        }
+    }
+    func updateViewColor() {
+        self.view.wantsLayer = true
+        if KMAppearance.isDarkMode() {
+            self.view.layer?.backgroundColor = NSColor(red: 0.055, green: 0.067, blue: 0.078, alpha: 1).cgColor
+            self.collectionView.backgroundView?.layer?.backgroundColor = NSColor(red: 0.055, green: 0.067, blue: 0.078, alpha: 1).cgColor
+        } else {
+            self.view.layer?.backgroundColor = NSColor(red: 0.922, green: 0.925, blue: 0.941, alpha: 1).cgColor 
+            self.collectionView.backgroundView?.layer?.backgroundColor = NSColor(red: 0.922, green: 0.925, blue: 0.941, alpha: 1).cgColor
+        }
+    }
+    
+    func convertActionVC() {
+//        KMToolCompareWindowController *vc = nil;
+        if(.WordStandard == self.convertType ||
+            .WordAdvance == self.convertType) {
+//             vc = [KMToolCompareWindowController toolCompareWithType:KMCompareWithToolType_Convert setSelectIndex:1];
+        } else if (.Excel == self.convertType) {
+//            vc = [KMToolCompareWindowController toolCompareWithType:KMCompareWithToolType_Convert setSelectIndex:2];
+        } else if (.PowerPoint == self.convertType) {
+//            vc = [KMToolCompareWindowController toolCompareWithType:KMCompareWithToolType_Convert setSelectIndex:3];
+        } else if (self.convertType == .JPG || self.convertType == .PNG || self.convertType == .GIF || self.convertType == .TIFF || self.convertType == .TGA || self.convertType == .BMP){
+//             vc = [KMToolCompareWindowController toolCompareWithType:KMCompareWithToolType_Convert setSelectIndex:4];
+        } else {
+//             vc = [KMToolCompareWindowController toolCompareWithType:KMCompareWithToolType_Convert setSelectIndex:0];
+        }
+//        [vc showWindow:nil];
+    }
+    func prepareData() {
+        let arr: [KMConvertWithPDFType] = [.Excel, .PowerPoint, .RTF, .CSV, .CSV, .HTML, .Text, .JPEG, .JPG, .PNG, .GIF, .TIFF, .TGA, .BMP, .JPEG2000]
+        self.dataSourcesArray = NSMutableArray(array: arr)
+        
+        var needShowAdvance = true
+        var needShowDefault = true
+        
+#if VERSION_FREE
+        // 桌机版
+        //        if IAPProductsManager.defaultManager().isAvailableAllFunction {
+        //            if IAPProductsManager.defaultManager().isAvailableAdvancedPDFToOffice {
+        //                needShowAdvance = true
+        //                needShowDefault = false
+        //            }
+        //        }
+#else
+        
+        //        if IAPProductsManager.defaultManager().isAvailableAdvancedPDFToOffice {
+        //            needShowAdvance = true
+        //            needShowDefault = false
+        //        }
+        
+#endif
+        
+        if needShowDefault {
+            var wordType: KMConvertWithPDFType = .WordStandard
+            self.dataSourcesArray?.insert(wordType, at: 0)
+        }
+        
+        if needShowAdvance {
+            var wordType: KMConvertWithPDFType = .WordAdvance
+            self.dataSourcesArray?.insert(wordType, at: 0)
+        }
+    }
+    
+    @IBAction func buttonClicked_Convert(_ sender: NSButton) {
+        if !self.haveFiles { return }
+       self.view.window?.makeFirstResponder(nil)
+        for i in 0..<self.files!.count {
+            let file = self.files?[i]
+            file?.excelParameter.allInOneSheet = (self.convertEveryPageButton.state == .on) ? false : true
+            file?.advanceWordParameter.isRetainLayout = (self.wordButtonTwo.state == .on) ? true : false
+            file?.excelParameter.isExtreactTabel = (self.extractButton.state == .on) ? true : false
+            file?.CSVParameter.isExtreactTabel = (self.csvExtractButton.state == .on) ? true : false
+            file?.excelParameter.excelContentOption = self.excelContentOption
+            file?.excelParameter.excelWorksheetOption = self.excelWorksheetOption
+       }
+       if sender.tag == 1 {
+           self.beginBatchOperation()
+       } else {
+           self.cancelBatchOperation()
+       }
+        
+    }
+    
+    @IBAction func moreButtonAction(_ sender: NSButton) {
+        self.convertActionVC()
+        self.buttonClicked_Cancel("")
+    }
+    
+    @IBAction func layoutButtonAction(_ sender: Any) {
+    }
+    
+    @IBAction func exctractTableButtonAction(_ sender: Any) {
+        if extractButton.state == .on {
+            convertEveryPageButton.state = .off
+            convertEveryPageButtonLabel.isEnabled = false
+            convertEveryPageButton.isEnabled = false
+            convertEveryPageButtonLabel.textColor = KMAppearance.Layout.b15_1Color()
+        } else {
+            convertEveryPageButton.state = .on
+            convertEveryPageButtonLabel.isEnabled = true
+            convertEveryPageButton.isEnabled = true
+            convertEveryPageButtonLabel.textColor = NSColor.labelColor
+        }
+    }
+    
+    @IBAction func buttonClicked_Cancel(_ sender: Any) {
+        let basePath = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).last ?? ""
+        let newPath = (basePath as NSString).appendingPathComponent(Bundle.main.bundleIdentifier ?? "")
+        let filePath = newPath.stringByAppendingPathComponent("convert.pdf")
+        if FileManager.default.fileExists(atPath: filePath) {
+            try? FileManager.default.removeItem(atPath: filePath)
+        }
+    }
+    
+    func transform(withString string: String) { 
+        if string == NSLocalizedString("Create Sheet for each Table", comment: "") {
+            self.excelWorksheetOption = .forEachTable
+        } else if string == NSLocalizedString("Create Sheet for each Page", comment: "") {
+            self.excelWorksheetOption = .forEachPage
+        } else if string == NSLocalizedString("Create single Sheet for File", comment: "") {
+            self.excelWorksheetOption = .forTheDocument
+        }
+    }
+    
+    @IBAction func buttonClicked_excelStyle(_ sender: NSButton) {
+        if sender == onlyTextBtn {
+            onlyTextBtn.state = NSControl.StateValue.on
+            onlyTableBtn.state = NSControl.StateValue.off
+            allContentBtn.state = NSControl.StateValue.off
+            tableMenu.isEnabled = false
+            allContentMenu.isEnabled = false
+            excelContentOption = .onlyText
+            excelWorksheetOption = .forEachTable
+        } else if sender == onlyTableBtn {
+            onlyTableBtn.state = NSControl.StateValue.on
+            onlyTextBtn.state = NSControl.StateValue.off
+            allContentBtn.state = NSControl.StateValue.off
+            tableMenu.isEnabled = true
+            allContentMenu.isEnabled = false
+            excelContentOption = .onlyTable
+            transform(withString: tableMenu.selectedItem?.title ?? "")
+        } else if sender == allContentBtn {
+            allContentBtn.state = NSControl.StateValue.on
+            onlyTextBtn.state = NSControl.StateValue.off
+            onlyTableBtn.state = NSControl.StateValue.off
+            tableMenu.isEnabled = false
+            allContentMenu.isEnabled = true
+            excelContentOption = .allContent
+            transform(withString: allContentMenu.selectedItem?.title ?? "")
+        }
+    }
+    
+    @IBAction func buttonClicked_tableMenu(_ sender: NSPopUpButton) {
+        transform(withString: self.tableMenu.selectedItem!.title)
+    }
+    
+    @IBAction func buttonClickec_allContentMenu(_ sender: NSButton) {
+        transform(withString: self.allContentMenu.selectedItem!.title)
+    }
+    func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
+        return dataSourcesArray!.count
+    }
+    func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
+        let item = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMBatchoperateConvertCollectionViewItem"), for: indexPath) as! KMBatchoperateConvertCollectionViewItem
+        let number = dataSourcesArray![indexPath.item]
+        item.updateInterface(KMConvertWithPDFType(rawValue: (number as AnyObject).intValue!) ?? .WordAdvance)
+        return item
+    }
+    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
+        return NSSize(width: 74, height: 80)
+    }
+    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets {
+        return NSEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)
+    }
+    func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
+        if let indexPath = indexPaths.first {
+            let number = dataSourcesArray![indexPath.item]
+            convertType = intConvertType(num: number as! Int)
+            updateBottomView()
+        }
+    }
+    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> NSSize {
+        return NSSize(width: 10000, height: 50)
+    }
+    func collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: NSCollectionView.SupplementaryElementKind, at indexPath: IndexPath) -> NSView {
+        let view = collectionView.makeSupplementaryView(ofKind: kind, withIdentifier:NSUserInterfaceItemIdentifier(rawValue: "convertHeader") , for: indexPath) as! KMConvertCollectionViewHeader
+        
+        view.convertHeaderClickedCallBack = {
+            self.convertActionVC()
+        }
+        return view
+    }
+    
+    func intConvertType(num: Int) -> KMConvertWithPDFType {
+        var type: KMConvertWithPDFType?
+        switch num {
+        case 0:
+            type = .WordAdvance
+        case 1:
+            type = .WordStandard
+        case 2:
+            type = .Excel
+        case 3:
+            type = .PowerPoint
+        case 4:
+            type = .RTF
+        case 5:
+            type = .CSV
+        case 6:
+            type = .HTML
+        case 7:
+            type = .Text
+        case 8:
+            type = .JPEG
+        case 9:
+            type = .JPG
+        case 10:
+            type = .PNG
+        case 11:
+            type = .GIF
+        case 12:
+            type = .TIFF
+        case 13:
+            type = .TGA
+        case 14:
+            type = .BMP
+        case 15:
+            type = .JPEG2000
+        default:
+            type = .WordAdvance
+        }
+        return type!
+    }
+}

+ 320 - 0
PDF Office/PDF Master/Class/Batch/WindowController/VC/KMBatchOperateConvertViewController.xib

@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMBatchOperateConvertViewController" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="allContentBtn" destination="6m4-cW-y3p" id="dFa-4U-LNf"/>
+                <outlet property="allContentMenu" destination="oiy-ho-hv0" id="T0R-RY-Z4Z"/>
+                <outlet property="allContentMenu2" destination="DQt-vJ-kuC" id="z3L-H4-EO3"/>
+                <outlet property="allContentMenu3" destination="dL3-9i-sD9" id="Wnw-gR-kAB"/>
+                <outlet property="bottomView" destination="RWh-gu-eYa" id="KeF-AW-TCH"/>
+                <outlet property="checkBoxBottomConstaint" destination="XFY-dJ-slt" id="DlC-VO-NW6"/>
+                <outlet property="checkBoxTopConstraint" destination="vFy-Pl-PGa" id="jGT-n1-OsJ"/>
+                <outlet property="collectionView" destination="rs6-48-Ybe" id="YwP-ad-igf"/>
+                <outlet property="containerViewTopConstraint" destination="Puy-3b-upI" id="Ri0-DO-yQ2"/>
+                <outlet property="convertButton" destination="x4l-h4-1bj" id="DJs-wX-FIh"/>
+                <outlet property="convertEveryPageButton" destination="SlC-Ho-TLc" id="gjs-Tl-fkQ"/>
+                <outlet property="convertEveryPageButtonLabel" destination="fgA-rp-Vm7" id="ELW-UZ-I8Z"/>
+                <outlet property="csvExtractButton" destination="Cav-bd-Zi0" id="tha-Kl-wek"/>
+                <outlet property="detailInfoLabel" destination="pba-Yz-CKK" id="ui2-Mz-LhQ"/>
+                <outlet property="detailInfoView" destination="0aW-6P-3ho" id="H45-gX-lwy"/>
+                <outlet property="dfdafd" destination="cIp-1A-hnp" id="cL3-dL-6Ku"/>
+                <outlet property="extractButton" destination="lTk-ta-kN4" id="fV4-Iy-uRi"/>
+                <outlet property="onlyTableBtn" destination="KvG-Id-TKV" id="7AY-dB-pf3"/>
+                <outlet property="onlyTextBtn" destination="8bG-eI-A9D" id="O3s-9H-DWx"/>
+                <outlet property="tableMenu" destination="WOO-1l-OeG" id="Iiv-J8-aXu"/>
+                <outlet property="tableMenu1" destination="JUp-Aa-YBd" id="vbG-J1-hzm"/>
+                <outlet property="tableMenu2" destination="3Kv-8b-IgA" id="bAq-IX-Jjb"/>
+                <outlet property="tableMenu3" destination="F4S-5r-3ft" id="Q3r-kc-WEH"/>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+                <outlet property="wordButtonOne" destination="xB1-6H-5c2" id="h9g-Sc-QbL"/>
+                <outlet property="wordButtonTwo" destination="EDe-r5-auK" id="tlE-6Y-u7n"/>
+            </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="509" height="388"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="dO1-Rz-qG5">
+                    <rect key="frame" x="0.0" y="385" width="509" height="5"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="1" id="S5F-Ob-ohc"/>
+                    </constraints>
+                </box>
+                <scrollView wantsLayer="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UxT-od-y5c">
+                    <rect key="frame" x="0.0" y="160" width="509" height="227"/>
+                    <clipView key="contentView" id="y9R-by-AsK">
+                        <rect key="frame" x="1" y="1" width="507" height="225"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <collectionView selectable="YES" id="rs6-48-Ybe">
+                                <rect key="frame" x="0.0" y="0.0" width="507" height="225"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
+                                <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="8" id="cpE-dx-iII">
+                                    <size key="itemSize" width="50" height="50"/>
+                                </collectionViewFlowLayout>
+                                <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                <connections>
+                                    <outlet property="dataSource" destination="-2" id="Fsm-S7-xY5"/>
+                                    <outlet property="delegate" destination="-2" id="0Ay-xo-YR3"/>
+                                </connections>
+                            </collectionView>
+                        </subviews>
+                    </clipView>
+                    <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="WLx-n6-zfD">
+                        <rect key="frame" x="-100" y="-100" width="325" height="16"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </scroller>
+                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="df6-Kd-jF8">
+                        <rect key="frame" x="493" y="50" width="15" height="199"/>
+                        <autoresizingMask key="autoresizingMask"/>
+                    </scroller>
+                </scrollView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="RWh-gu-eYa">
+                    <rect key="frame" x="0.0" y="0.0" width="509" height="160"/>
+                    <subviews>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="x4l-h4-1bj">
+                            <rect key="frame" x="16" y="16" width="477" height="32"/>
+                            <buttonCell key="cell" type="square" title="Button" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="46F-Eo-5Pf">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="SUn-Xj-aci"/>
+                            </constraints>
+                            <connections>
+                                <action selector="buttonClicked_Convert:" target="-2" id="Lwc-MC-9me"/>
+                            </connections>
+                        </button>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="0aW-6P-3ho" customClass="KMDetailInfoView">
+                            <rect key="frame" x="16" y="128" width="477" height="16"/>
+                            <subviews>
+                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="71Q-Bc-2Mg">
+                                    <rect key="frame" x="0.0" y="0.0" width="15" height="14"/>
+                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="KMImageNameElsei" imagePosition="overlaps" alignment="center" imageScaling="proportionallyDown" inset="2" id="rNT-sf-iUu">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <connections>
+                                        <action selector="moreButtonAction:" target="-2" id="mZn-vp-l0f"/>
+                                    </connections>
+                                </button>
+                                <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="pba-Yz-CKK">
+                                    <rect key="frame" x="18" y="0.0" width="92" height="16"/>
+                                    <textFieldCell key="cell" title="123213123123" id="pmi-wZ-mPV">
+                                        <font key="font" metaFont="system"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="bottom" secondItem="pba-Yz-CKK" secondAttribute="bottom" id="Nya-Lu-WeB"/>
+                                <constraint firstItem="pba-Yz-CKK" firstAttribute="leading" secondItem="71Q-Bc-2Mg" secondAttribute="trailing" constant="5" id="aDS-5u-Yrh"/>
+                                <constraint firstItem="pba-Yz-CKK" firstAttribute="top" secondItem="0aW-6P-3ho" secondAttribute="top" id="aPU-E8-OQ8"/>
+                                <constraint firstItem="71Q-Bc-2Mg" firstAttribute="leading" secondItem="0aW-6P-3ho" secondAttribute="leading" id="cIp-1A-hnp"/>
+                                <constraint firstItem="pba-Yz-CKK" firstAttribute="top" secondItem="71Q-Bc-2Mg" secondAttribute="top" constant="-2" id="dF9-2p-YG8"/>
+                                <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="pba-Yz-CKK" secondAttribute="trailing" id="q8B-G7-QzU"/>
+                            </constraints>
+                        </customView>
+                        <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="fgA-rp-Vm7">
+                            <rect key="frame" x="34" y="107" width="268" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="charWrapping" selectable="YES" enabled="NO" title="Convert each page to a separate worksheet" id="Fc9-Pg-PWR">
+                                <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>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SlC-Ho-TLc">
+                            <rect key="frame" x="14" y="105" width="481" height="18"/>
+                            <buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="wuh-tb-5tn">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                        </button>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8bG-eI-A9D">
+                            <rect key="frame" x="14" y="53" width="122" height="18"/>
+                            <buttonCell key="cell" type="radio" title="only text" bezelStyle="regularSquare" imagePosition="left" alignment="left" lineBreakMode="truncatingTail" inset="2" id="bax-mj-uaQ">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="120" id="ABr-le-fFY"/>
+                            </constraints>
+                            <connections>
+                                <action selector="buttonClicked_excelStyle:" target="-2" id="Pwu-ql-652"/>
+                            </connections>
+                        </button>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KvG-Id-TKV">
+                            <rect key="frame" x="14" y="77" width="86" height="18"/>
+                            <buttonCell key="cell" type="radio" title="only table" bezelStyle="regularSquare" imagePosition="left" alignment="left" lineBreakMode="truncatingTail" inset="2" id="rh3-Qq-C1S">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <constraints>
+                                <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="eCw-A1-YRn"/>
+                            </constraints>
+                            <connections>
+                                <action selector="buttonClicked_excelStyle:" target="-2" id="zLq-xa-KTo"/>
+                            </connections>
+                        </button>
+                        <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WOO-1l-OeG">
+                            <rect key="frame" x="105" y="72" width="150" height="25"/>
+                            <popUpButtonCell key="cell" type="push" title="For Each Table ddd" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" allowsMixedState="YES" imageScaling="proportionallyDown" inset="2" selectedItem="JUp-Aa-YBd" id="0gA-Hy-ymF">
+                                <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="menu"/>
+                                <menu key="menu" id="Mdk-aC-McC">
+                                    <items>
+                                        <menuItem title="For Each Table ddd" state="on" id="JUp-Aa-YBd"/>
+                                        <menuItem title="For Each Page ddd" id="3Kv-8b-IgA"/>
+                                        <menuItem title="For The Document fdfh" id="F4S-5r-3ft"/>
+                                    </items>
+                                </menu>
+                            </popUpButtonCell>
+                            <constraints>
+                                <constraint firstAttribute="width" relation="lessThanOrEqual" constant="143" id="YAO-cM-mcW"/>
+                                <constraint firstAttribute="height" constant="20" id="kTf-LP-OWs"/>
+                            </constraints>
+                            <connections>
+                                <action selector="buttonClicked_tableMenu:" target="-2" id="Ll2-te-FcJ"/>
+                            </connections>
+                        </popUpButton>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6m4-cW-y3p">
+                            <rect key="frame" x="14" y="103" width="94" height="18"/>
+                            <buttonCell key="cell" type="radio" title="All Content" bezelStyle="regularSquare" imagePosition="left" alignment="left" lineBreakMode="truncatingTail" inset="2" id="w8y-1e-FBg">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <constraints>
+                                <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="ec4-3f-Yd8"/>
+                            </constraints>
+                            <connections>
+                                <action selector="buttonClicked_excelStyle:" target="-2" id="Se0-TZ-Fuf"/>
+                            </connections>
+                        </button>
+                        <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oiy-ho-hv0">
+                            <rect key="frame" x="113" y="98" width="150" height="25"/>
+                            <popUpButtonCell key="cell" type="push" title="For Each Page  dddd" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" selectedItem="DQt-vJ-kuC" id="koF-3R-Lch">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="menu"/>
+                                <menu key="menu" id="be6-Eq-NBd">
+                                    <items>
+                                        <menuItem title="For Each Page  dddd" state="on" id="DQt-vJ-kuC"/>
+                                        <menuItem title="For The Documentd dd" id="dL3-9i-sD9"/>
+                                    </items>
+                                </menu>
+                            </popUpButtonCell>
+                            <constraints>
+                                <constraint firstAttribute="width" relation="lessThanOrEqual" constant="143" id="Qy4-TN-UAa"/>
+                                <constraint firstAttribute="height" constant="20" id="dQL-QW-Y05"/>
+                            </constraints>
+                            <connections>
+                                <action selector="buttonClickec_allContentMenu:" target="-2" id="OQ7-d3-lCU"/>
+                            </connections>
+                        </popUpButton>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Cav-bd-Zi0">
+                            <rect key="frame" x="14" y="105" width="481" height="18"/>
+                            <buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" inset="2" id="udS-KB-F6t">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                        </button>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xB1-6H-5c2">
+                            <rect key="frame" x="14" y="105" width="481" height="18"/>
+                            <buttonCell key="cell" type="radio" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" state="on" inset="2" id="Hm7-FA-QAP">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="layoutButtonAction:" target="-2" id="tSq-u0-Itr"/>
+                            </connections>
+                        </button>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lTk-ta-kN4">
+                            <rect key="frame" x="14" y="85" width="479" height="18"/>
+                            <buttonCell key="cell" type="check" title="dadsdf" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" inset="2" id="olK-fV-dfG">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="exctractTableButtonAction:" target="-2" id="oWc-V4-BLp"/>
+                            </connections>
+                        </button>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EDe-r5-auK">
+                            <rect key="frame" x="14" y="85" width="479" height="18"/>
+                            <buttonCell key="cell" type="radio" title="dadsdf" bezelStyle="regularSquare" imagePosition="left" lineBreakMode="truncatingMiddle" inset="2" id="yY3-53-HA7">
+                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="layoutButtonAction:" target="-2" id="3le-c3-D35"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="EDe-r5-auK" firstAttribute="trailing" secondItem="lTk-ta-kN4" secondAttribute="trailing" id="0Vl-EV-U5S"/>
+                        <constraint firstItem="0aW-6P-3ho" firstAttribute="centerX" secondItem="RWh-gu-eYa" secondAttribute="centerX" id="5GA-Aj-Zuz"/>
+                        <constraint firstItem="Cav-bd-Zi0" firstAttribute="trailing" secondItem="SlC-Ho-TLc" secondAttribute="trailing" id="5PS-jy-VVc"/>
+                        <constraint firstItem="KvG-Id-TKV" firstAttribute="leading" secondItem="8bG-eI-A9D" secondAttribute="leading" id="9YU-66-wDE"/>
+                        <constraint firstItem="x4l-h4-1bj" firstAttribute="leading" secondItem="RWh-gu-eYa" secondAttribute="leading" constant="16" id="Are-V0-PQm"/>
+                        <constraint firstItem="lTk-ta-kN4" firstAttribute="trailing" secondItem="SlC-Ho-TLc" secondAttribute="trailing" id="BCt-c9-l0e"/>
+                        <constraint firstItem="oiy-ho-hv0" firstAttribute="leading" secondItem="6m4-cW-y3p" secondAttribute="trailing" constant="8" id="E66-QE-YJ2"/>
+                        <constraint firstItem="SlC-Ho-TLc" firstAttribute="centerX" secondItem="RWh-gu-eYa" secondAttribute="centerX" id="EKK-WW-MoO"/>
+                        <constraint firstItem="6m4-cW-y3p" firstAttribute="leading" secondItem="KvG-Id-TKV" secondAttribute="leading" id="GJf-95-tW4"/>
+                        <constraint firstItem="oiy-ho-hv0" firstAttribute="centerY" secondItem="6m4-cW-y3p" secondAttribute="centerY" id="GTP-NQ-oqn"/>
+                        <constraint firstAttribute="bottom" secondItem="x4l-h4-1bj" secondAttribute="bottom" constant="16" id="Ggj-4b-dqX"/>
+                        <constraint firstItem="SlC-Ho-TLc" firstAttribute="leading" secondItem="0aW-6P-3ho" secondAttribute="leading" id="Goo-cP-7B0"/>
+                        <constraint firstItem="fgA-rp-Vm7" firstAttribute="leading" secondItem="SlC-Ho-TLc" secondAttribute="leading" constant="20" id="Ird-mt-qts"/>
+                        <constraint firstItem="lTk-ta-kN4" firstAttribute="leading" secondItem="SlC-Ho-TLc" secondAttribute="leading" id="J7C-6K-wNi"/>
+                        <constraint firstItem="fgA-rp-Vm7" firstAttribute="top" secondItem="SlC-Ho-TLc" secondAttribute="top" constant="-2" id="MeP-ez-6BE"/>
+                        <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="WOO-1l-OeG" secondAttribute="trailing" constant="16" id="NEJ-oQ-2BW"/>
+                        <constraint firstItem="x4l-h4-1bj" firstAttribute="leading" secondItem="SlC-Ho-TLc" secondAttribute="leading" id="PSp-mr-Cy6"/>
+                        <constraint firstItem="0aW-6P-3ho" firstAttribute="top" secondItem="RWh-gu-eYa" secondAttribute="top" constant="16" id="Puy-3b-upI"/>
+                        <constraint firstItem="Cav-bd-Zi0" firstAttribute="leading" secondItem="SlC-Ho-TLc" secondAttribute="leading" id="Q9u-gz-W5M"/>
+                        <constraint firstItem="0aW-6P-3ho" firstAttribute="leading" secondItem="RWh-gu-eYa" secondAttribute="leading" constant="16" id="T5a-op-Ha3"/>
+                        <constraint firstItem="xB1-6H-5c2" firstAttribute="leading" secondItem="SlC-Ho-TLc" secondAttribute="leading" id="UCE-8f-1UG"/>
+                        <constraint firstItem="Cav-bd-Zi0" firstAttribute="top" secondItem="SlC-Ho-TLc" secondAttribute="top" id="Ulb-dz-c3h"/>
+                        <constraint firstItem="x4l-h4-1bj" firstAttribute="top" secondItem="0aW-6P-3ho" secondAttribute="bottom" constant="80" id="XFY-dJ-slt"/>
+                        <constraint firstItem="xB1-6H-5c2" firstAttribute="trailing" secondItem="SlC-Ho-TLc" secondAttribute="trailing" id="Y8K-zn-HeC"/>
+                        <constraint firstItem="WOO-1l-OeG" firstAttribute="centerY" secondItem="KvG-Id-TKV" secondAttribute="centerY" id="Zbh-u8-P1G"/>
+                        <constraint firstItem="KvG-Id-TKV" firstAttribute="top" secondItem="6m4-cW-y3p" secondAttribute="bottom" constant="10" id="Zqv-5D-3Mb"/>
+                        <constraint firstItem="6m4-cW-y3p" firstAttribute="top" secondItem="0aW-6P-3ho" secondAttribute="bottom" constant="8" id="a66-ws-dzi"/>
+                        <constraint firstItem="WOO-1l-OeG" firstAttribute="leading" secondItem="KvG-Id-TKV" secondAttribute="trailing" constant="8" id="c0k-KR-huB"/>
+                        <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="oiy-ho-hv0" secondAttribute="trailing" constant="16" id="cPM-DO-yC0"/>
+                        <constraint firstItem="xB1-6H-5c2" firstAttribute="top" secondItem="SlC-Ho-TLc" secondAttribute="top" id="ePU-TT-G3L"/>
+                        <constraint firstItem="x4l-h4-1bj" firstAttribute="centerX" secondItem="RWh-gu-eYa" secondAttribute="centerX" id="lpV-Kh-Jid"/>
+                        <constraint firstItem="fgA-rp-Vm7" firstAttribute="trailing" relation="lessThanOrEqual" secondItem="0aW-6P-3ho" secondAttribute="trailing" id="mbD-DP-khR"/>
+                        <constraint firstItem="EDe-r5-auK" firstAttribute="top" secondItem="0aW-6P-3ho" secondAttribute="bottom" constant="26" id="n5J-6I-Y6T"/>
+                        <constraint firstItem="8bG-eI-A9D" firstAttribute="leading" secondItem="SlC-Ho-TLc" secondAttribute="leading" id="ovI-7d-oAB"/>
+                        <constraint firstItem="lTk-ta-kN4" firstAttribute="top" secondItem="fgA-rp-Vm7" secondAttribute="bottom" constant="5" id="q0q-fd-mFl"/>
+                        <constraint firstItem="EDe-r5-auK" firstAttribute="leading" secondItem="lTk-ta-kN4" secondAttribute="leading" id="qjc-AY-TBJ"/>
+                        <constraint firstItem="fgA-rp-Vm7" firstAttribute="top" secondItem="0aW-6P-3ho" secondAttribute="bottom" constant="5" id="vFy-Pl-PGa"/>
+                        <constraint firstItem="8bG-eI-A9D" firstAttribute="top" secondItem="KvG-Id-TKV" secondAttribute="bottom" constant="8" id="xR8-qJ-up4"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="RWh-gu-eYa" firstAttribute="top" secondItem="UxT-od-y5c" secondAttribute="bottom" id="1io-U8-dqY"/>
+                <constraint firstItem="dO1-Rz-qG5" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Cbf-bT-YEm"/>
+                <constraint firstAttribute="trailing" secondItem="RWh-gu-eYa" secondAttribute="trailing" id="Fbn-Qw-gUP"/>
+                <constraint firstItem="RWh-gu-eYa" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Kfu-cW-k4f"/>
+                <constraint firstAttribute="trailing" secondItem="UxT-od-y5c" secondAttribute="trailing" id="POS-Jd-jWA"/>
+                <constraint firstItem="UxT-od-y5c" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="1" id="VQ8-p3-du3"/>
+                <constraint firstItem="UxT-od-y5c" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Ziy-Qf-tSz"/>
+                <constraint firstItem="dO1-Rz-qG5" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="v9G-eb-jLh"/>
+                <constraint firstAttribute="bottom" secondItem="RWh-gu-eYa" secondAttribute="bottom" id="xVC-9U-dqH"/>
+                <constraint firstAttribute="trailing" secondItem="dO1-Rz-qG5" secondAttribute="trailing" id="xwM-IE-j2Y"/>
+            </constraints>
+            <point key="canvasLocation" x="101.5" y="179"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="KMImageNameElsei" width="15" height="14"/>
+    </resources>
+</document>

+ 2 - 2
PDF Office/PDF Master/Class/KMAdvertisement/View/Tableview/Cell/KMAdvertisementCollectionHeadView.xib

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

+ 4 - 4
PDF Office/PDF Master/Class/PDFTools/Tools/KMTextfieldButton/KMTextfieldButton.xib

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
     <dependencies>
         <deployment identifier="macosx"/>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     </dependencies>
     <objects>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="KMTextfieldButton" customModule="PDF_Office" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="KMTextfieldButton" customModule="PDF_Master" customModuleProvider="target">
             <connections>
             <connections>
                 <outlet property="button" destination="gSc-Qa-M8D" id="04I-5E-idC"/>
                 <outlet property="button" destination="gSc-Qa-M8D" id="04I-5E-idC"/>
                 <outlet property="imageView" destination="LLv-Vn-WMI" id="cEo-wO-NDf"/>
                 <outlet property="imageView" destination="LLv-Vn-WMI" id="cEo-wO-NDf"/>
@@ -27,7 +27,7 @@
                     </constraints>
                     </constraints>
                     <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="CeS-qp-9HU"/>
                     <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="btn_arrow_gray_down_s_norm_on" id="CeS-qp-9HU"/>
                 </imageView>
                 </imageView>
-                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MmT-n9-LqD">
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MmT-n9-LqD">
                     <rect key="frame" x="6" y="17" width="297" height="16"/>
                     <rect key="frame" x="6" y="17" width="297" height="16"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" alignment="left" title="Document and Markups" id="uWO-cA-MxX">
                     <textFieldCell key="cell" lineBreakMode="clipping" alignment="left" title="Document and Markups" id="uWO-cA-MxX">
                         <font key="font" metaFont="system"/>
                         <font key="font" metaFont="system"/>