浏览代码

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

tangchao 1 年之前
父节点
当前提交
40b4c29643
共有 36 个文件被更改,包括 4190 次插入27 次删除
  1. 256 0
      PDF Office/PDF Master.xcodeproj/project.pbxproj
  2. 0 22
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/PDF Tools/KMImageNameUXIconBtnArrowDown.imageset/Contents.json
  3. 二进制
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/PDF Tools/KMImageNameUXIconBtnArrowDown.imageset/light_ic_btn_arrow_down-1.pdf
  4. 二进制
      PDF Office/PDF Master/Class/Appearance/Image.xcassets/PDF Tools/KMImageNameUXIconBtnArrowDown.imageset/light_ic_btn_arrow_down.pdf
  5. 24 0
      PDF Office/PDF Master/Class/Batch/View/KMTextFieldCell.swift
  6. 2 2
      PDF Office/PDF Master/Class/Batch/WindowController/VC/KMBatchOperateImageToPDFViewController.xib
  7. 199 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMConvertGuideView.swift
  8. 341 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMConvertGuideView.xib
  9. 154 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMCustomColorGuideView.swift
  10. 149 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMCustomColorGuideView.xib
  11. 186 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMOpenFileFunctionView.swift
  12. 185 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMOpenFileFunctionView.xib
  13. 253 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideMultiController.swift
  14. 242 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideMultiController.xib
  15. 86 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideNameItemView.swift
  16. 76 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideNameItemView.xib
  17. 17 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideSingleController.swift
  18. 32 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideSingleController.xib
  19. 30 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMGuideCoverView.swift
  20. 18 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/KMGuideCoverView.xib
  21. 176 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift
  22. 173 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.xib
  23. 215 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideProperty.swift
  24. 216 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideProperty.xib
  25. 208 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideToolbar.swift
  26. 232 0
      PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideToolbar.xib
  27. 92 0
      PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.swift
  28. 42 0
      PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.xib
  29. 46 0
      PDF Office/PDF Master/Class/GuideInfo/KMGuideConfig.swift
  30. 40 0
      PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindow.swift
  31. 34 0
      PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindow.xib
  32. 414 0
      PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindowController.swift
  33. 42 0
      PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindowController.xib
  34. 2 2
      PDF Office/PDF Master/Class/Home/View/KMComboBox.swift
  35. 3 0
      PDF Office/PDF Master/Class/PDFTools/Convert/ExtractImage/Controller/KMExtractImageWindowController.xib
  36. 5 1
      PDF Office/PDF Master/Source/Fonts/NSFont+SFProText.swift

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

@@ -2694,6 +2694,87 @@
 		BB1B0A9D2B4FB88100889528 /* IAPProductsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0A9B2B4FB88000889528 /* IAPProductsManager.m */; };
 		BB1B0A9E2B4FB88100889528 /* IAPProductsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0A9B2B4FB88000889528 /* IAPProductsManager.m */; };
 		BB1B0A9F2B4FB88100889528 /* IAPProductsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0A9B2B4FB88000889528 /* IAPProductsManager.m */; };
+		BB1B0ABF2B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA12B4FC6E800889528 /* KMGuideInfoWindowController.swift */; };
+		BB1B0AC02B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA12B4FC6E800889528 /* KMGuideInfoWindowController.swift */; };
+		BB1B0AC12B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA12B4FC6E800889528 /* KMGuideInfoWindowController.swift */; };
+		BB1B0AC22B4FC6E900889528 /* KMFunctionGuideWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AA22B4FC6E800889528 /* KMFunctionGuideWindowController.xib */; };
+		BB1B0AC32B4FC6E900889528 /* KMFunctionGuideWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AA22B4FC6E800889528 /* KMFunctionGuideWindowController.xib */; };
+		BB1B0AC42B4FC6E900889528 /* KMFunctionGuideWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AA22B4FC6E800889528 /* KMFunctionGuideWindowController.xib */; };
+		BB1B0AC52B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA32B4FC6E800889528 /* KMGuideInfoWindow.swift */; };
+		BB1B0AC62B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA32B4FC6E800889528 /* KMGuideInfoWindow.swift */; };
+		BB1B0AC72B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA32B4FC6E800889528 /* KMGuideInfoWindow.swift */; };
+		BB1B0AC82B4FC6E900889528 /* KMGuideConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA42B4FC6E800889528 /* KMGuideConfig.swift */; };
+		BB1B0AC92B4FC6E900889528 /* KMGuideConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA42B4FC6E800889528 /* KMGuideConfig.swift */; };
+		BB1B0ACA2B4FC6E900889528 /* KMGuideConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA42B4FC6E800889528 /* KMGuideConfig.swift */; };
+		BB1B0ACB2B4FC6E900889528 /* KMFunctionGuideWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA52B4FC6E800889528 /* KMFunctionGuideWindowController.swift */; };
+		BB1B0ACC2B4FC6E900889528 /* KMFunctionGuideWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA52B4FC6E800889528 /* KMFunctionGuideWindowController.swift */; };
+		BB1B0ACD2B4FC6E900889528 /* KMFunctionGuideWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA52B4FC6E800889528 /* KMFunctionGuideWindowController.swift */; };
+		BB1B0ACE2B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA72B4FC6E800889528 /* KMFunctionGuideMultiController.swift */; };
+		BB1B0ACF2B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA72B4FC6E800889528 /* KMFunctionGuideMultiController.swift */; };
+		BB1B0AD02B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA72B4FC6E800889528 /* KMFunctionGuideMultiController.swift */; };
+		BB1B0AD12B4FC6E900889528 /* KMFunctionGuideSingleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA82B4FC6E800889528 /* KMFunctionGuideSingleController.swift */; };
+		BB1B0AD22B4FC6E900889528 /* KMFunctionGuideSingleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA82B4FC6E800889528 /* KMFunctionGuideSingleController.swift */; };
+		BB1B0AD32B4FC6E900889528 /* KMFunctionGuideSingleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AA82B4FC6E800889528 /* KMFunctionGuideSingleController.swift */; };
+		BB1B0AD42B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AA92B4FC6E800889528 /* KMFunctionGuideSingleController.xib */; };
+		BB1B0AD52B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AA92B4FC6E800889528 /* KMFunctionGuideSingleController.xib */; };
+		BB1B0AD62B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AA92B4FC6E800889528 /* KMFunctionGuideSingleController.xib */; };
+		BB1B0AD72B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAB2B4FC6E800889528 /* KMOpenFileGuideProperty.swift */; };
+		BB1B0AD82B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAB2B4FC6E800889528 /* KMOpenFileGuideProperty.swift */; };
+		BB1B0AD92B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAB2B4FC6E800889528 /* KMOpenFileGuideProperty.swift */; };
+		BB1B0ADA2B4FC6E900889528 /* KMOpenFileGuideToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAC2B4FC6E800889528 /* KMOpenFileGuideToolbar.swift */; };
+		BB1B0ADB2B4FC6E900889528 /* KMOpenFileGuideToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAC2B4FC6E800889528 /* KMOpenFileGuideToolbar.swift */; };
+		BB1B0ADC2B4FC6E900889528 /* KMOpenFileGuideToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAC2B4FC6E800889528 /* KMOpenFileGuideToolbar.swift */; };
+		BB1B0ADD2B4FC6E900889528 /* KMOpenFileGuidePanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAD2B4FC6E800889528 /* KMOpenFileGuidePanel.swift */; };
+		BB1B0ADE2B4FC6E900889528 /* KMOpenFileGuidePanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAD2B4FC6E800889528 /* KMOpenFileGuidePanel.swift */; };
+		BB1B0ADF2B4FC6E900889528 /* KMOpenFileGuidePanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AAD2B4FC6E800889528 /* KMOpenFileGuidePanel.swift */; };
+		BB1B0AE02B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AAE2B4FC6E800889528 /* KMOpenFileGuidePanel.xib */; };
+		BB1B0AE12B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AAE2B4FC6E800889528 /* KMOpenFileGuidePanel.xib */; };
+		BB1B0AE22B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AAE2B4FC6E800889528 /* KMOpenFileGuidePanel.xib */; };
+		BB1B0AE32B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AAF2B4FC6E800889528 /* KMOpenFileGuideToolbar.xib */; };
+		BB1B0AE42B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AAF2B4FC6E800889528 /* KMOpenFileGuideToolbar.xib */; };
+		BB1B0AE52B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AAF2B4FC6E800889528 /* KMOpenFileGuideToolbar.xib */; };
+		BB1B0AE62B4FC6E900889528 /* KMOpenFileGuideProperty.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB02B4FC6E800889528 /* KMOpenFileGuideProperty.xib */; };
+		BB1B0AE72B4FC6E900889528 /* KMOpenFileGuideProperty.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB02B4FC6E800889528 /* KMOpenFileGuideProperty.xib */; };
+		BB1B0AE82B4FC6E900889528 /* KMOpenFileGuideProperty.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB02B4FC6E800889528 /* KMOpenFileGuideProperty.xib */; };
+		BB1B0AE92B4FC6E900889528 /* KMFunctionGuideMultiController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB12B4FC6E800889528 /* KMFunctionGuideMultiController.xib */; };
+		BB1B0AEA2B4FC6E900889528 /* KMFunctionGuideMultiController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB12B4FC6E800889528 /* KMFunctionGuideMultiController.xib */; };
+		BB1B0AEB2B4FC6E900889528 /* KMFunctionGuideMultiController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB12B4FC6E800889528 /* KMFunctionGuideMultiController.xib */; };
+		BB1B0AEC2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB22B4FC6E800889528 /* KMGuideCoverView.swift */; };
+		BB1B0AED2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB22B4FC6E800889528 /* KMGuideCoverView.swift */; };
+		BB1B0AEE2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB22B4FC6E800889528 /* KMGuideCoverView.swift */; };
+		BB1B0AEF2B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB32B4FC6E800889528 /* KMFunctionGuideNameItemView.xib */; };
+		BB1B0AF02B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB32B4FC6E800889528 /* KMFunctionGuideNameItemView.xib */; };
+		BB1B0AF12B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB32B4FC6E800889528 /* KMFunctionGuideNameItemView.xib */; };
+		BB1B0AF22B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB42B4FC6E800889528 /* KMFunctionGuideNameItemView.swift */; };
+		BB1B0AF32B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB42B4FC6E800889528 /* KMFunctionGuideNameItemView.swift */; };
+		BB1B0AF42B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB42B4FC6E800889528 /* KMFunctionGuideNameItemView.swift */; };
+		BB1B0AF52B4FC6E900889528 /* KMConvertGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB62B4FC6E800889528 /* KMConvertGuideView.swift */; };
+		BB1B0AF62B4FC6E900889528 /* KMConvertGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB62B4FC6E800889528 /* KMConvertGuideView.swift */; };
+		BB1B0AF72B4FC6E900889528 /* KMConvertGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB62B4FC6E800889528 /* KMConvertGuideView.swift */; };
+		BB1B0AF82B4FC6E900889528 /* KMOpenFileFunctionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB72B4FC6E800889528 /* KMOpenFileFunctionView.swift */; };
+		BB1B0AF92B4FC6E900889528 /* KMOpenFileFunctionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB72B4FC6E800889528 /* KMOpenFileFunctionView.swift */; };
+		BB1B0AFA2B4FC6E900889528 /* KMOpenFileFunctionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB72B4FC6E800889528 /* KMOpenFileFunctionView.swift */; };
+		BB1B0AFB2B4FC6E900889528 /* KMCustomColorGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB82B4FC6E800889528 /* KMCustomColorGuideView.swift */; };
+		BB1B0AFC2B4FC6E900889528 /* KMCustomColorGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB82B4FC6E800889528 /* KMCustomColorGuideView.swift */; };
+		BB1B0AFD2B4FC6E900889528 /* KMCustomColorGuideView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1B0AB82B4FC6E800889528 /* KMCustomColorGuideView.swift */; };
+		BB1B0AFE2B4FC6E900889528 /* KMOpenFileFunctionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB92B4FC6E800889528 /* KMOpenFileFunctionView.xib */; };
+		BB1B0AFF2B4FC6E900889528 /* KMOpenFileFunctionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB92B4FC6E800889528 /* KMOpenFileFunctionView.xib */; };
+		BB1B0B002B4FC6E900889528 /* KMOpenFileFunctionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0AB92B4FC6E800889528 /* KMOpenFileFunctionView.xib */; };
+		BB1B0B012B4FC6E900889528 /* KMConvertGuideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABA2B4FC6E800889528 /* KMConvertGuideView.xib */; };
+		BB1B0B022B4FC6E900889528 /* KMConvertGuideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABA2B4FC6E800889528 /* KMConvertGuideView.xib */; };
+		BB1B0B032B4FC6E900889528 /* KMConvertGuideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABA2B4FC6E800889528 /* KMConvertGuideView.xib */; };
+		BB1B0B042B4FC6E900889528 /* KMCustomColorGuideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABB2B4FC6E800889528 /* KMCustomColorGuideView.xib */; };
+		BB1B0B052B4FC6E900889528 /* KMCustomColorGuideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABB2B4FC6E800889528 /* KMCustomColorGuideView.xib */; };
+		BB1B0B062B4FC6E900889528 /* KMCustomColorGuideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABB2B4FC6E800889528 /* KMCustomColorGuideView.xib */; };
+		BB1B0B072B4FC6E900889528 /* KMGuideCoverView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABC2B4FC6E800889528 /* KMGuideCoverView.xib */; };
+		BB1B0B082B4FC6E900889528 /* KMGuideCoverView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABC2B4FC6E800889528 /* KMGuideCoverView.xib */; };
+		BB1B0B092B4FC6E900889528 /* KMGuideCoverView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABC2B4FC6E800889528 /* KMGuideCoverView.xib */; };
+		BB1B0B0A2B4FC6E900889528 /* KMGuideInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABD2B4FC6E800889528 /* KMGuideInfoWindow.xib */; };
+		BB1B0B0B2B4FC6E900889528 /* KMGuideInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABD2B4FC6E800889528 /* KMGuideInfoWindow.xib */; };
+		BB1B0B0C2B4FC6E900889528 /* KMGuideInfoWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABD2B4FC6E800889528 /* KMGuideInfoWindow.xib */; };
+		BB1B0B0D2B4FC6E900889528 /* KMGuideInfoWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABE2B4FC6E800889528 /* KMGuideInfoWindowController.xib */; };
+		BB1B0B0E2B4FC6E900889528 /* KMGuideInfoWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABE2B4FC6E800889528 /* KMGuideInfoWindowController.xib */; };
+		BB1B0B0F2B4FC6E900889528 /* KMGuideInfoWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1B0ABE2B4FC6E800889528 /* KMGuideInfoWindowController.xib */; };
 		BB1BFF5D2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1BFF5C2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift */; };
 		BB1BFF5E2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1BFF5C2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift */; };
 		BB1BFF5F2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1BFF5C2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift */; };
@@ -4161,6 +4242,9 @@
 		BBD3C8B62B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD3C8B52B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift */; };
 		BBD3C8B72B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD3C8B52B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift */; };
 		BBD3C8B82B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD3C8B52B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift */; };
+		BBD4267F2B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */; };
+		BBD426802B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */; };
+		BBD426812B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */; };
 		BBD512A12B0DE86C005BFE8A /* KMBotaLeftView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD512A02B0DE86C005BFE8A /* KMBotaLeftView.swift */; };
 		BBD512A22B0DE86C005BFE8A /* KMBotaLeftView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD512A02B0DE86C005BFE8A /* KMBotaLeftView.swift */; };
 		BBD512A32B0DE86C005BFE8A /* KMBotaLeftView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBD512A02B0DE86C005BFE8A /* KMBotaLeftView.swift */; };
@@ -5693,6 +5777,33 @@
 		BB1AEF3429F937A50048D179 /* PDF Master User Guide.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "PDF Master User Guide.pdf"; sourceTree = "<group>"; };
 		BB1B0A9B2B4FB88000889528 /* IAPProductsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IAPProductsManager.m; sourceTree = "<group>"; };
 		BB1B0A9C2B4FB88000889528 /* IAPProductsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IAPProductsManager.h; sourceTree = "<group>"; };
+		BB1B0AA12B4FC6E800889528 /* KMGuideInfoWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMGuideInfoWindowController.swift; sourceTree = "<group>"; };
+		BB1B0AA22B4FC6E800889528 /* KMFunctionGuideWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMFunctionGuideWindowController.xib; sourceTree = "<group>"; };
+		BB1B0AA32B4FC6E800889528 /* KMGuideInfoWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMGuideInfoWindow.swift; sourceTree = "<group>"; };
+		BB1B0AA42B4FC6E800889528 /* KMGuideConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMGuideConfig.swift; sourceTree = "<group>"; };
+		BB1B0AA52B4FC6E800889528 /* KMFunctionGuideWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMFunctionGuideWindowController.swift; sourceTree = "<group>"; };
+		BB1B0AA72B4FC6E800889528 /* KMFunctionGuideMultiController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMFunctionGuideMultiController.swift; sourceTree = "<group>"; };
+		BB1B0AA82B4FC6E800889528 /* KMFunctionGuideSingleController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMFunctionGuideSingleController.swift; sourceTree = "<group>"; };
+		BB1B0AA92B4FC6E800889528 /* KMFunctionGuideSingleController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMFunctionGuideSingleController.xib; sourceTree = "<group>"; };
+		BB1B0AAB2B4FC6E800889528 /* KMOpenFileGuideProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMOpenFileGuideProperty.swift; sourceTree = "<group>"; };
+		BB1B0AAC2B4FC6E800889528 /* KMOpenFileGuideToolbar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMOpenFileGuideToolbar.swift; sourceTree = "<group>"; };
+		BB1B0AAD2B4FC6E800889528 /* KMOpenFileGuidePanel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMOpenFileGuidePanel.swift; sourceTree = "<group>"; };
+		BB1B0AAE2B4FC6E800889528 /* KMOpenFileGuidePanel.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMOpenFileGuidePanel.xib; sourceTree = "<group>"; };
+		BB1B0AAF2B4FC6E800889528 /* KMOpenFileGuideToolbar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMOpenFileGuideToolbar.xib; sourceTree = "<group>"; };
+		BB1B0AB02B4FC6E800889528 /* KMOpenFileGuideProperty.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMOpenFileGuideProperty.xib; sourceTree = "<group>"; };
+		BB1B0AB12B4FC6E800889528 /* KMFunctionGuideMultiController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMFunctionGuideMultiController.xib; sourceTree = "<group>"; };
+		BB1B0AB22B4FC6E800889528 /* KMGuideCoverView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMGuideCoverView.swift; sourceTree = "<group>"; };
+		BB1B0AB32B4FC6E800889528 /* KMFunctionGuideNameItemView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMFunctionGuideNameItemView.xib; sourceTree = "<group>"; };
+		BB1B0AB42B4FC6E800889528 /* KMFunctionGuideNameItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMFunctionGuideNameItemView.swift; sourceTree = "<group>"; };
+		BB1B0AB62B4FC6E800889528 /* KMConvertGuideView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMConvertGuideView.swift; sourceTree = "<group>"; };
+		BB1B0AB72B4FC6E800889528 /* KMOpenFileFunctionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMOpenFileFunctionView.swift; sourceTree = "<group>"; };
+		BB1B0AB82B4FC6E800889528 /* KMCustomColorGuideView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMCustomColorGuideView.swift; sourceTree = "<group>"; };
+		BB1B0AB92B4FC6E800889528 /* KMOpenFileFunctionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMOpenFileFunctionView.xib; sourceTree = "<group>"; };
+		BB1B0ABA2B4FC6E800889528 /* KMConvertGuideView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMConvertGuideView.xib; sourceTree = "<group>"; };
+		BB1B0ABB2B4FC6E800889528 /* KMCustomColorGuideView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMCustomColorGuideView.xib; sourceTree = "<group>"; };
+		BB1B0ABC2B4FC6E800889528 /* KMGuideCoverView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMGuideCoverView.xib; sourceTree = "<group>"; };
+		BB1B0ABD2B4FC6E800889528 /* KMGuideInfoWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMGuideInfoWindow.xib; sourceTree = "<group>"; };
+		BB1B0ABE2B4FC6E800889528 /* KMGuideInfoWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMGuideInfoWindowController.xib; sourceTree = "<group>"; };
 		BB1BFF5C2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchOperateBaseWindowController.swift; sourceTree = "<group>"; };
 		BB1BFF602AE9FA6C003EB179 /* KMBatchOperateBaseWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMBatchOperateBaseWindowController.xib; sourceTree = "<group>"; };
 		BB1BFF642AE9FBA7003EB179 /* KMBatchOperateWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMBatchOperateWindowController.xib; sourceTree = "<group>"; };
@@ -6232,6 +6343,7 @@
 		BBD1F79B296FF7A600343885 /* KMPageEditSplitSettingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPageEditSplitSettingModel.swift; sourceTree = "<group>"; };
 		BBD25BF02B18768600EB85D4 /* KMCompressOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCompressOperation.swift; sourceTree = "<group>"; };
 		BBD3C8B52B2C438F00EB0867 /* KMToolbarPreviousNextItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolbarPreviousNextItemView.swift; sourceTree = "<group>"; };
+		BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMTextFieldCell.swift; sourceTree = "<group>"; };
 		BBD512A02B0DE86C005BFE8A /* KMBotaLeftView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBotaLeftView.swift; sourceTree = "<group>"; };
 		BBD54ED32A1CBD720012A230 /* NSView+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSView+KMExtension.swift"; sourceTree = "<group>"; };
 		BBDA8A682A31B50C006A2C4E /* KMCustomStepperView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCustomStepperView.swift; sourceTree = "<group>"; };
@@ -9718,6 +9830,64 @@
 			path = NewController;
 			sourceTree = "<group>";
 		};
+		BB1B0AA02B4FC6E800889528 /* GuideInfo */ = {
+			isa = PBXGroup;
+			children = (
+				BB1B0AA42B4FC6E800889528 /* KMGuideConfig.swift */,
+				BB1B0AA32B4FC6E800889528 /* KMGuideInfoWindow.swift */,
+				BB1B0ABD2B4FC6E800889528 /* KMGuideInfoWindow.xib */,
+				BB1B0AA12B4FC6E800889528 /* KMGuideInfoWindowController.swift */,
+				BB1B0ABE2B4FC6E800889528 /* KMGuideInfoWindowController.xib */,
+				BB1B0AA52B4FC6E800889528 /* KMFunctionGuideWindowController.swift */,
+				BB1B0AA22B4FC6E800889528 /* KMFunctionGuideWindowController.xib */,
+				BB1B0AA62B4FC6E800889528 /* Controllers */,
+			);
+			path = GuideInfo;
+			sourceTree = "<group>";
+		};
+		BB1B0AA62B4FC6E800889528 /* Controllers */ = {
+			isa = PBXGroup;
+			children = (
+				BB1B0AB22B4FC6E800889528 /* KMGuideCoverView.swift */,
+				BB1B0ABC2B4FC6E800889528 /* KMGuideCoverView.xib */,
+				BB1B0AA72B4FC6E800889528 /* KMFunctionGuideMultiController.swift */,
+				BB1B0AB12B4FC6E800889528 /* KMFunctionGuideMultiController.xib */,
+				BB1B0AA82B4FC6E800889528 /* KMFunctionGuideSingleController.swift */,
+				BB1B0AA92B4FC6E800889528 /* KMFunctionGuideSingleController.xib */,
+				BB1B0AB42B4FC6E800889528 /* KMFunctionGuideNameItemView.swift */,
+				BB1B0AB32B4FC6E800889528 /* KMFunctionGuideNameItemView.xib */,
+				BB1B0AAA2B4FC6E800889528 /* OpenFileGuide */,
+				BB1B0AB52B4FC6E800889528 /* FunctionGuide */,
+			);
+			path = Controllers;
+			sourceTree = "<group>";
+		};
+		BB1B0AAA2B4FC6E800889528 /* OpenFileGuide */ = {
+			isa = PBXGroup;
+			children = (
+				BB1B0AAD2B4FC6E800889528 /* KMOpenFileGuidePanel.swift */,
+				BB1B0AAE2B4FC6E800889528 /* KMOpenFileGuidePanel.xib */,
+				BB1B0AAC2B4FC6E800889528 /* KMOpenFileGuideToolbar.swift */,
+				BB1B0AAF2B4FC6E800889528 /* KMOpenFileGuideToolbar.xib */,
+				BB1B0AAB2B4FC6E800889528 /* KMOpenFileGuideProperty.swift */,
+				BB1B0AB02B4FC6E800889528 /* KMOpenFileGuideProperty.xib */,
+			);
+			path = OpenFileGuide;
+			sourceTree = "<group>";
+		};
+		BB1B0AB52B4FC6E800889528 /* FunctionGuide */ = {
+			isa = PBXGroup;
+			children = (
+				BB1B0AB72B4FC6E800889528 /* KMOpenFileFunctionView.swift */,
+				BB1B0AB92B4FC6E800889528 /* KMOpenFileFunctionView.xib */,
+				BB1B0AB62B4FC6E800889528 /* KMConvertGuideView.swift */,
+				BB1B0ABA2B4FC6E800889528 /* KMConvertGuideView.xib */,
+				BB1B0AB82B4FC6E800889528 /* KMCustomColorGuideView.swift */,
+				BB1B0ABB2B4FC6E800889528 /* KMCustomColorGuideView.xib */,
+			);
+			path = FunctionGuide;
+			sourceTree = "<group>";
+		};
 		BB1BFF842AEA2F2F003EB179 /* Catogary */ = {
 			isa = PBXGroup;
 			children = (
@@ -9847,6 +10017,7 @@
 				9FBDA7272A4D326800A972F3 /* Websocket */,
 				9FF816F12AFB15140087EFC5 /* Foundation Categories */,
 				BBA9220F2B4E77BA0061057A /* Purchase */,
+				BB1B0AA02B4FC6E800889528 /* GuideInfo */,
 			);
 			path = Class;
 			sourceTree = "<group>";
@@ -11458,6 +11629,7 @@
 				BB6347C32AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift */,
 				BB6347C72AF24F6C00F5438E /* KMBatchoperateConvertCollectionViewItem.xib */,
 				BB90E4F12AF37F9F00B04B9F /* KMCustomViewButton.swift */,
+				BBD4267E2B4FCF1500AC8660 /* KMTextFieldCell.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -12127,6 +12299,7 @@
 				BB8810BB2B4F872500AFA63E /* KMVerificationWindowController.xib in Resources */,
 				896933D429AEEE3D0055327F /* PageSheet.xib in Resources */,
 				9FBC48BB299B44C600CA39D7 /* KMSecondaryViewController.xib in Resources */,
+				BB1B0AE02B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */,
 				9FBA0EF128FFC716001117AF /* KMHomeFastToolViewController.xib in Resources */,
 				899700F928F4051B009AF911 /* KMAnnotationViewController.xib in Resources */,
 				BB3A429A2B4BC75D006D0642 /* NotesPanel.xib in Resources */,
@@ -12135,6 +12308,7 @@
 				ADBC372D29CA951E00D93208 /* KMComparativeOutlineView.xib in Resources */,
 				ADAFDA102AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.xib in Resources */,
 				ADAFDA1C2AE8DD6600F084BC /* KMAdvertisementTableView.xib in Resources */,
+				BB1B0B0D2B4FC6E900889528 /* KMGuideInfoWindowController.xib in Resources */,
 				BB7F7BFA29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */,
 				ADAFDA0D2AE8DD6600F084BC /* KMAdvertisementCollectionViewItem.xib in Resources */,
 				9F1F82E62934D5240092C4B4 /* KMHomeExtractActionViewController.xib in Resources */,
@@ -12272,6 +12446,7 @@
 				AD1CA41C2A061CE10070541F /* KMAnnotationScreenTypeViewItem.xib in Resources */,
 				9FB2210A2B19BD8B00A5B208 /* KMGeneralAnnotationViewController.xib in Resources */,
 				9F8539F62947137500DF644E /* sadfavicon.png in Resources */,
+				BB1B0AEF2B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */,
 				ADBC372429CA923E00D93208 /* KMComparative.plist in Resources */,
 				ADAFDA5E2AEB455500F084BC /* KMHomeContentView.xib in Resources */,
 				ADE787AE2AA5AA50002EC85A /* KMAccountExceptionView.xib in Resources */,
@@ -12315,6 +12490,7 @@
 				BBB3769B2B10A7FD009539CC /* a_2a.png in Resources */,
 				BB1A916E2AFB7871005E5FD8 /* KMConvertWindowController.xib in Resources */,
 				AD3AAD272B0B6FB100DE5FE7 /* KMCompareContentView.xib in Resources */,
+				BB1B0B042B4FC6E900889528 /* KMCustomColorGuideView.xib in Resources */,
 				BB853C672AF87502009C20C1 /* KMBatchOperateRemoveWatermarkViewController.xib in Resources */,
 				8931684C296E436B0073EA59 /* KMSignatureWindowController.xib in Resources */,
 				BB1BFF6D2AEA030F003EB179 /* KMBatchOperateSplitViewController.xib in Resources */,
@@ -12341,6 +12517,7 @@
 				9FAAA335290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
 				ADD1B6CB2942E85300C3FFF7 /* KMPrintBottomView.xib in Resources */,
 				89752DB02936F505003FF08E /* KMCustomButtonPopMenuViewController.xib in Resources */,
+				BB1B0B012B4FC6E900889528 /* KMConvertGuideView.xib in Resources */,
 				BBAC26A82AFE138800563A08 /* KMToolbarItemPopViewController.xib in Resources */,
 				F356720829AF184A00740FF3 /* CPDFListAnnotationNoteWindowController.xib in Resources */,
 				9F94747F29FA24200042F949 /* Credits.rtf in Resources */,
@@ -12386,6 +12563,8 @@
 				899700EB28F3E4D3009AF911 /* MainWindowController.xib in Resources */,
 				BB49ED01293F459500C82CA2 /* KMConvertPPTsWindowController.xib in Resources */,
 				ADD1B6AE2941E97F00C3FFF7 /* KMPrintWindowController.xib in Resources */,
+				BB1B0B0A2B4FC6E900889528 /* KMGuideInfoWindow.xib in Resources */,
+				BB1B0AC22B4FC6E900889528 /* KMFunctionGuideWindowController.xib in Resources */,
 				BBBE20972B21B1DF00509C4E /* KMPDFInsertWindowController.xib in Resources */,
 				9F00CF542A38657400AC462E /* GoogleService-Info.plist in Resources */,
 				AD88108729A719E500178CA1 /* KMRegisterView.xib in Resources */,
@@ -12399,6 +12578,7 @@
 				9F728FAB29926B4300F0C225 /* black_pdfreaderpro_home_en.pdf in Resources */,
 				AD0FA51629A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */,
 				BBC3480F29558DC1008D2CD1 /* KMBackgroundController.xib in Resources */,
+				BB1B0AE32B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */,
 				BBC4F9EE2AEB58470098A1A8 /* KMAlertWindowController.xib in Resources */,
 				BB10FAF22AFE23BE00F18D65 /* LineInspector.xib in Resources */,
 				ADF6B8792A48155E0090CB78 /* KMComparativeViewCollectionItem.xib in Resources */,
@@ -12408,11 +12588,13 @@
 				BB6BA4C82B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */,
 				ADD1B6F82946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
 				BBC745ED295F067B0072C2ED /* KMCropSettingWindowController.xib in Resources */,
+				BB1B0AE62B4FC6E900889528 /* KMOpenFileGuideProperty.xib in Resources */,
 				AD3AAD162B0B5B2700DE5FE7 /* KMCompareContentWindowController.xib in Resources */,
 				9F02016D2A1B088700C9B673 /* KMAIOpenPDFFilesVC.xib in Resources */,
 				9FF94F1C29A770B500B1EF69 /* KMFillSignShapePanel.xib in Resources */,
 				89E9B3F9295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib in Resources */,
 				9F8539CE29430BF300DF644E /* KMBrowserWindowController.xib in Resources */,
+				BB1B0AE92B4FC6E900889528 /* KMFunctionGuideMultiController.xib in Resources */,
 				ADDF83472B391A5C00A81A4E /* DSignatureCreateInfoViewController.xib in Resources */,
 				AD0FA4FE29A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */,
 				9F0CB49229683DEE00007028 /* KMPropertiesPanelLineSubVC.xib in Resources */,
@@ -12427,6 +12609,7 @@
 				ADBC374529CAD2D300D93208 /* SF-Pro-Text-Bold.otf in Resources */,
 				ADB5E51E2A3711DF007110A8 /* KMSubscribeWaterMarkView.xib in Resources */,
 				9F1F82B7292DEF370092C4B4 /* KMCloudDocumentsViewController.xib in Resources */,
+				BB1B0B072B4FC6E900889528 /* KMGuideCoverView.xib in Resources */,
 				AD1CA4142A061CCD0070541F /* KMAnnotationScreenColorViewItem.xib in Resources */,
 				AD68783829A60FC0005B5210 /* KMLoginView.xib in Resources */,
 				9F853A022947137500DF644E /* default-icon.pdf in Resources */,
@@ -12453,6 +12636,7 @@
 				BBA922152B4E783F0061057A /* KMPurchaseCompareDMGWindowController.xib in Resources */,
 				BB8F4552295A9FA50037EA22 /* KMCreateHeaderFooterController.xib in Resources */,
 				BBC348172955920B008D2CD1 /* KMBackgroundPropertyController.xib in Resources */,
+				BB1B0AFE2B4FC6E900889528 /* KMOpenFileFunctionView.xib in Resources */,
 				BB897261294C5DDA0045787C /* KMWatermarkPropertyInfoController.xib in Resources */,
 				ADBC2D3A299F0A5A006280C8 /* KMPrintHelpViewController.xib in Resources */,
 				89E9B409295D268E00AEFA61 /* KMEditImagePropertyViewController.xib in Resources */,
@@ -12505,6 +12689,7 @@
 				9F0201752A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				BB853CAE2AF8FA67009C20C1 /* KMHeaderFooterManagerWindowController.xib in Resources */,
 				9F0201812A1BAC1600C9B673 /* KMAIRewritingVC.xib in Resources */,
+				BB1B0AD42B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */,
 				ADDF83532B391A5C00A81A4E /* DSignatureFileListViewController.xib in Resources */,
 				AD85D1B02AF09C79000F4D28 /* KMHomeQuickToolsWindowCollectionViewItem.xib in Resources */,
 				ADE3C1E729A5ABC200793B13 /* KMLoginWindowController.xib in Resources */,
@@ -12550,8 +12735,10 @@
 				9F0CB49B29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				AD1D48262AFB6BCB007AC1F0 /* KMMergeView.xib in Resources */,
 				9F0CB4C12977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */,
+				BB1B0AD52B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */,
 				8997011228F40842009AF911 /* KMOutlineViewController.xib in Resources */,
 				9FF816E22AFA5BA80087EFC5 /* KMAnnotationTableViewController.xib in Resources */,
+				BB1B0AE72B4FC6E900889528 /* KMOpenFileGuideProperty.xib in Resources */,
 				BBB3769C2B10A7FD009539CC /* a_2a.png in Resources */,
 				9FDD0F9A2952FF4D000C4DAD /* alias-light.json in Resources */,
 				BB65A0512AF8B64B003A27A0 /* DisplayPreferences.xib in Resources */,
@@ -12582,6 +12769,7 @@
 				BBC3483F2955A60B008D2CD1 /* KMBackgroundPropertyInfoController.xib in Resources */,
 				9F02018A2A1DA28B00C9B673 /* KMAILanguagePopVC.xib in Resources */,
 				9FA693AC2987C0590055488A /* KMStepperView.xib in Resources */,
+				BB1B0AFF2B4FC6E900889528 /* KMOpenFileFunctionView.xib in Resources */,
 				AD58F4132B1DAAB200299EE0 /* KMPrintDefaultView.xib in Resources */,
 				899700E328F3A9F2009AF911 /* KMHomeWindowController.xib in Resources */,
 				BB8F4543295A98960037EA22 /* KMHeaderFooterPropertyController.xib in Resources */,
@@ -12610,6 +12798,7 @@
 				ADBC372529CA923E00D93208 /* KMComparative.plist in Resources */,
 				ADBC373829CA975B00D93208 /* KMCompatative.xcassets in Resources */,
 				BB4EEF3129763EE7003A3537 /* KMRedactBaseWindowController.xib in Resources */,
+				BB1B0B082B4FC6E900889528 /* KMGuideCoverView.xib in Resources */,
 				BB6347B12AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */,
 				9F0201762A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
@@ -12631,6 +12820,7 @@
 				9FF94F1D29A770B500B1EF69 /* KMFillSignShapePanel.xib in Resources */,
 				BBC348472956A638008D2CD1 /* KMEditBackgroundController.xib in Resources */,
 				BB49ECFA293F44DC00C82CA2 /* KMConvertExcelWindowController.xib in Resources */,
+				BB1B0AC32B4FC6E900889528 /* KMFunctionGuideWindowController.xib in Resources */,
 				89E4E7862967BF5A002DBA6F /* KMCustomizeStampViewController.xib in Resources */,
 				AD85D1BE2AF0D2DD000F4D28 /* KMHomeQuickToolsCollectionView.xib in Resources */,
 				BB03D6A12B024AC8008C9976 /* KMPDFEditInsertPageWindow.xib in Resources */,
@@ -12650,7 +12840,9 @@
 				F3B7DF9E2948565000333201 /* CPDFListHoverAnnotationViewController.xib in Resources */,
 				BBADCF592AF3C7B3004ECE0C /* KMBatchOperateAddWatermarkViewController.xib in Resources */,
 				BBC3481029558DC1008D2CD1 /* KMBackgroundController.xib in Resources */,
+				BB1B0AF02B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */,
 				BB10FAEA2AFE03CD00F18D65 /* KMPDFEditPageRangeWindowController.xib in Resources */,
+				BB1B0AE12B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */,
 				BBAFC84E298519F700D0648E /* KMSavePanelAccessoryController.xib in Resources */,
 				ADBC2CF6299C7B3E006280C8 /* Print.xcassets in Resources */,
 				BB5DF1ED2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.xib in Resources */,
@@ -12661,6 +12853,7 @@
 				AD1D48142AFB1912007AC1F0 /* KMCompressView.xib in Resources */,
 				89E4E77D2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
 				BB49ECE1293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
+				BB1B0B0B2B4FC6E900889528 /* KMGuideInfoWindow.xib in Resources */,
 				BBC348572958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */,
 				AD867FAB29DFB78200F00440 /* KMAnnotationOutlineView.xib in Resources */,
 				BB99ACD3292E2AEF0048AFD9 /* KMMergeCollectionViewItem.xib in Resources */,
@@ -12676,6 +12869,7 @@
 				89752DB12936F505003FF08E /* KMCustomButtonPopMenuViewController.xib in Resources */,
 				9F705F7A291A3A84005199AD /* KMHistoryFileDeleteWindowController.xib in Resources */,
 				89D9897028FD50EF003A3E87 /* KMAnnotationCollectionViewItem.xib in Resources */,
+				BB1B0B052B4FC6E900889528 /* KMCustomColorGuideView.xib in Resources */,
 				9FBA0EEA28FFC2FE001117AF /* Image.xcassets in Resources */,
 				BB4F7E922B0C80000077EC8C /* KMNoteColorCollectionViewItem.xib in Resources */,
 				89E4E6F02963D1B7002DBA6F /* KMColorPickerViewController.xib in Resources */,
@@ -12757,6 +12951,7 @@
 				BB0B2CD92B04AE560088FFD8 /* LeftSideView.xib in Resources */,
 				9F8539FA2947137500DF644E /* newtab_p.pdf in Resources */,
 				BB853C962AF8DCC7009C20C1 /* KMBatchOperateRemovePasswordViewController.xib in Resources */,
+				BB1B0AE42B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */,
 				BB04FD112B206F4000D80F7B /* KMPlanViewController.xib in Resources */,
 				BBB376AB2B10A7FD009539CC /* a_3a.png in Resources */,
 				BB90E4EB2AF347A700B04B9F /* PreferenceWindow.xib in Resources */,
@@ -12797,11 +12992,13 @@
 				ADAFDA1D2AE8DD6600F084BC /* KMAdvertisementTableView.xib in Resources */,
 				9F0CB4B92977BC1000007028 /* KMPropertiesPanelPreviewSubVC.xib in Resources */,
 				BBF62C752B0347D1007B7E86 /* SplitWindowController.xib in Resources */,
+				BB1B0B022B4FC6E900889528 /* KMConvertGuideView.xib in Resources */,
 				BBC8A7762B0640C200FA9377 /* KMBotaSearchViewController.xib in Resources */,
 				BB8810BC2B4F872500AFA63E /* KMVerificationWindowController.xib in Resources */,
 				BB96A0B52AFCD56B00559E24 /* KMToolCompareWindowController.xib in Resources */,
 				9F8539FD2947137500DF644E /* throbber_waiting.png in Resources */,
 				9F8539E42947126000DF644E /* KMChromiumToolbar.xib in Resources */,
+				BB1B0B0E2B4FC6E900889528 /* KMGuideInfoWindowController.xib in Resources */,
 				ADF1569D29A63CBF001D1018 /* KMLightMember.xcassets in Resources */,
 				BB6CA4D0298BB0D000A13864 /* KMPreferenceWindowController.xib in Resources */,
 				BB003019298CA446002DD1A0 /* KMPreferenceGeneralController.xib in Resources */,
@@ -12825,6 +13022,7 @@
 				ADDF83512B391A5C00A81A4E /* CDSignatureCertificateCustomViewController.xib in Resources */,
 				ADE8BC2B29F7CDB000570F89 /* KMPageNumberDisplayView.xib in Resources */,
 				BB65A05E2AF8BF2A003A27A0 /* NotesPreferences.xib in Resources */,
+				BB1B0AEA2B4FC6E900889528 /* KMFunctionGuideMultiController.xib in Resources */,
 				ADBC374D29CAD65D00D93208 /* KMComparativeOutlineCell.xib in Resources */,
 				BBC2BCCA295DA8F30036B983 /* KMCropPreviewController.xib in Resources */,
 				AD3AAD1F2B0B5B4400DE5FE7 /* KMCompareCoveringWindowController.xib in Resources */,
@@ -13040,6 +13238,7 @@
 				BB8810BD2B4F872500AFA63E /* KMVerificationWindowController.xib in Resources */,
 				BB853CB02AF8FA67009C20C1 /* KMHeaderFooterManagerWindowController.xib in Resources */,
 				ADBC372629CA923E00D93208 /* KMComparative.plist in Resources */,
+				BB1B0AE22B4FC6E900889528 /* KMOpenFileGuidePanel.xib in Resources */,
 				9FDD0FA12952FF4D000C4DAD /* global.json in Resources */,
 				89E4E73A2964148E002DBA6F /* KMAnnotationPropertiesViewController.xib in Resources */,
 				BB3A429C2B4BC75D006D0642 /* NotesPanel.xib in Resources */,
@@ -13048,6 +13247,7 @@
 				9FD0FA3629CD947000F2AB0D /* KMOpacityPanel.xib in Resources */,
 				9F78EFC028F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
 				9F8539E52947126000DF644E /* KMChromiumToolbar.xib in Resources */,
+				BB1B0B0F2B4FC6E900889528 /* KMGuideInfoWindowController.xib in Resources */,
 				9F0CB4742967E63100007028 /* KMPropertiesPanelNameSubVC.xib in Resources */,
 				9FB220FC2B186C9800A5B208 /* KMAnnotationGeneralViewController.xib in Resources */,
 				BB1A91702AFB7871005E5FD8 /* KMConvertWindowController.xib in Resources */,
@@ -13185,6 +13385,7 @@
 				BBC821E52B0D9F72004B7E8E /* KMStampCreaterWindowController.xib in Resources */,
 				BB7F7C0229AA586900A3E4E7 /* signAdd.png in Resources */,
 				ADD1B6CD2942E85300C3FFF7 /* KMPrintBottomView.xib in Resources */,
+				BB1B0AF12B4FC6E900889528 /* KMFunctionGuideNameItemView.xib in Resources */,
 				9F853A012947137500DF644E /* throbber.png in Resources */,
 				AD1CA41E2A061CE10070541F /* KMAnnotationScreenTypeViewItem.xib in Resources */,
 				ADAFDA602AEB455500F084BC /* KMHomeContentView.xib in Resources */,
@@ -13228,6 +13429,7 @@
 				BB6DD81129347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				BB49ECE2293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
 				ADD1B6D129431D7100C3FFF7 /* KMPrintPreviewView.xib in Resources */,
+				BB1B0B062B4FC6E900889528 /* KMCustomColorGuideView.xib in Resources */,
 				BB6347B22AF1F0BB00F5438E /* KMBatchOperateConvertViewController.xib in Resources */,
 				AD3AAD322B0B700500DE5FE7 /* KMCompareCoveringView.xib in Resources */,
 				AD0FA4F729A8582C00EDEB50 /* KMComparativeTableView.xib in Resources */,
@@ -13254,6 +13456,7 @@
 				BB00302B298CF7EC002DD1A0 /* KMPreferenceDisplayController.xib in Resources */,
 				BBC348072955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.xib in Resources */,
 				F3A9DC83294309D80074E5D2 /* CPDFListEditAnnotationViewController.xib in Resources */,
+				BB1B0B032B4FC6E900889528 /* KMConvertGuideView.xib in Resources */,
 				9F0CB4C22977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */,
 				9F080B19298CFDB300FC27DA /* KMTextImageButtonVC.xib in Resources */,
 				AD3AAD202B0B5B4400DE5FE7 /* KMCompareCoveringWindowController.xib in Resources */,
@@ -13299,6 +13502,8 @@
 				BBEC00B4295C2AF300A26C98 /* KMBatesPreviewController.xib in Resources */,
 				8997010328F40710009AF911 /* KMBookMarkViewController.xib in Resources */,
 				9F00CCEF2A309E8E00AC462E /* KMEditImagePropertyViewController.xib in Resources */,
+				BB1B0B0C2B4FC6E900889528 /* KMGuideInfoWindow.xib in Resources */,
+				BB1B0AC42B4FC6E900889528 /* KMFunctionGuideWindowController.xib in Resources */,
 				BBC4F9F02AEB58470098A1A8 /* KMAlertWindowController.xib in Resources */,
 				BBBE20992B21B1DF00509C4E /* KMPDFInsertWindowController.xib in Resources */,
 				ADBC2CF7299C7B3E006280C8 /* Print.xcassets in Resources */,
@@ -13312,6 +13517,7 @@
 				ADF1569929A62D31001D1018 /* KMLoginLeftImageView.xib in Resources */,
 				89752DEF293875FC003FF08E /* KMMainToolbarController.xib in Resources */,
 				9FBC48BD299B44C600CA39D7 /* KMSecondaryViewController.xib in Resources */,
+				BB1B0AE52B4FC6E900889528 /* KMOpenFileGuideToolbar.xib in Resources */,
 				89752E092939DB42003FF08E /* KMToolbarViewController.xib in Resources */,
 				ADE86A862B0222B300414DFA /* KMSecurityView.xib in Resources */,
 				9FE0BBE92B0EFBA300CD1CAC /* KMAnnotationFontWindowController.xib in Resources */,
@@ -13321,11 +13527,13 @@
 				BBA19F3429ADAC81001A285A /* signPicture_hover.pdf in Resources */,
 				89E4E77E2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
 				BBC2BCCB295DA8F30036B983 /* KMCropPreviewController.xib in Resources */,
+				BB1B0AE82B4FC6E900889528 /* KMOpenFileGuideProperty.xib in Resources */,
 				ADD272D629B9CFE20032B5D6 /* KMLightNoNetworkView.xib in Resources */,
 				BB2EDF51296E63E5003BCF58 /* KMPageEditInsertCustomPageWindowController.xib in Resources */,
 				BBB376A32B10A7FD009539CC /* a_2b.png in Resources */,
 				9F00CCBF2A2F20E600AC462E /* pdfmasterprocast.xml in Resources */,
 				ADBC375A29CAE95700D93208 /* KMComparativeOutlineSectionCell.xib in Resources */,
+				BB1B0AEB2B4FC6E900889528 /* KMFunctionGuideMultiController.xib in Resources */,
 				BB99ACD4292E2AEF0048AFD9 /* KMMergeCollectionViewItem.xib in Resources */,
 				ADDF83492B391A5C00A81A4E /* DSignatureCreateInfoViewController.xib in Resources */,
 				BB4F7E872B0C4E820077EC8C /* KMNoteFilterCollevtionViewItem.xib in Resources */,
@@ -13340,6 +13548,7 @@
 				9F8539FE2947137500DF644E /* throbber_waiting.png in Resources */,
 				ADE86AAA2B031FFA00414DFA /* KMCompareView.xib in Resources */,
 				ADE86AFD2B0AF5A400414DFA /* KMCompareContentSettingView.xib in Resources */,
+				BB1B0B092B4FC6E900889528 /* KMGuideCoverView.xib in Resources */,
 				BB2F61552966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				ADE86A8F2B02269400414DFA /* KMRemovePasswordWindowController.xib in Resources */,
 				BBB376AC2B10A7FD009539CC /* a_3a.png in Resources */,
@@ -13366,6 +13575,7 @@
 				BBA922172B4E783F0061057A /* KMPurchaseCompareDMGWindowController.xib in Resources */,
 				9F3D819829A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
 				BBC8A7772B0640C200FA9377 /* KMBotaSearchViewController.xib in Resources */,
+				BB1B0B002B4FC6E900889528 /* KMOpenFileFunctionView.xib in Resources */,
 				8997010B28F4082C009AF911 /* KMFromViewController.xib in Resources */,
 				9F0CB4642966C9E200007028 /* KMFormPropertPanelViewController.xib in Resources */,
 				BBFBE74B28DD7DDE008B2335 /* Main.storyboard in Resources */,
@@ -13418,6 +13628,7 @@
 				9F00CCBB2A2F1E0F00AC462E /* dsa_priv.pem in Resources */,
 				BBF62C6E2B033B5B007B7E86 /* KMPDFEditExtractWindow.xib in Resources */,
 				9F0CB46C2967E5CB00007028 /* KMPropertiesPanelSubViewController.xib in Resources */,
+				BB1B0AD62B4FC6E900889528 /* KMFunctionGuideSingleController.xib in Resources */,
 				ADDF83552B391A5C00A81A4E /* DSignatureFileListViewController.xib in Resources */,
 				AD85D1B22AF09C79000F4D28 /* KMHomeQuickToolsWindowCollectionViewItem.xib in Resources */,
 				BBC348482956A638008D2CD1 /* KMEditBackgroundController.xib in Resources */,
@@ -13591,6 +13802,7 @@
 				9FF816E62AFA5D650087EFC5 /* KMTableAnnotation.swift in Sources */,
 				9F0201652A176AF200C9B673 /* KMDottedLineView.swift in Sources */,
 				BBBB6CDA2AD15B900035AA66 /* CPDFFreeTextAnnotation+PDFListView.swift in Sources */,
+				BB1B0ABF2B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */,
 				BB5DF1F12959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
 				BB853C9D2AF8E436009C20C1 /* KMBatchRemovePasswordOperation.swift in Sources */,
 				AD5999422AD8DC2000412F8B /* KMDynamicStampViewController.swift in Sources */,
@@ -13637,6 +13849,7 @@
 				9F1FE4D229406E4700E952CA /* CTTabView.m in Sources */,
 				ADBC372929CA950500D93208 /* KMComparativeOutlineView.swift in Sources */,
 				9FDD0F64294AB645000C4DAD /* KMMainViewController.swift in Sources */,
+				BBD4267F2B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */,
 				89D2D2FB294C806000BFF5FE /* KMPDFThumbnailItem.swift in Sources */,
 				BB9599CB2B3184230062D346 /* KMRedactSelectPagesWindowController.swift in Sources */,
 				BBB9B313299A5D6D004F3235 /* DropboxModel.m in Sources */,
@@ -13743,6 +13956,7 @@
 				ADC63E482A49BEDD00854E02 /* KMSubscribeWaterMarkCollectionItem.swift in Sources */,
 				89752E1D2942CB03003FF08E /* KMSearchMode.swift in Sources */,
 				AD3A3587294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */,
+				BB1B0AC52B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */,
 				AD199DF82B26A36500D56FEE /* KMPrintPosterPreviewView.swift in Sources */,
 				BB3AD6F929935483004FC1AE /* Reachability.m in Sources */,
 				ADAFDA762AEB5FCD00F084BC /* KMHomeHistoryCollectionItem.swift in Sources */,
@@ -13776,12 +13990,14 @@
 				BB003026298CF7EC002DD1A0 /* KMPreferenceDisplayController.swift in Sources */,
 				BBE9D0922AF0A85C002E83CE /* KMBatchOperation.swift in Sources */,
 				BBB612AD2AF4B9E4000F3724 /* KMWatermarkCollectionViewItem.swift in Sources */,
+				BB1B0AF82B4FC6E900889528 /* KMOpenFileFunctionView.swift in Sources */,
 				BB03D6982B0221FF008C9976 /* NSImage+KMExtension.swift in Sources */,
 				BB1BFF5D2AE9F1FF003EB179 /* KMBatchOperateBaseWindowController.swift in Sources */,
 				F36AD77729642FE80015AD53 /* CPDFListView+UndoManager.m in Sources */,
 				9FF816EE2AFA5D840087EFC5 /* KMTableDataManager.swift in Sources */,
 				ADDEEA492AD38BDB00EF675D /* KMSignatureHelpViewController.swift in Sources */,
 				BB146FBA299DC0D100784A6A /* GTLRBase64.m in Sources */,
+				BB1B0ACB2B4FC6E900889528 /* KMFunctionGuideWindowController.swift in Sources */,
 				BB981E522AD4F638001988CA /* KMCoverButton.swift in Sources */,
 				9F53D5472AD664C300CCF9D8 /* CPDFListHoverAnnotationViewController.swift in Sources */,
 				BB4A949B2B04B77F00940F8B /* KMOCROperation.swift in Sources */,
@@ -13885,6 +14101,7 @@
 				BB897241294C028A0045787C /* KMWatermarkAdjectiveSegementControl.swift in Sources */,
 				BBF811F12B0763930074874F /* PDFConvertObject.swift in Sources */,
 				BB5BE4ED2B060E2100D51BF2 /* KMLanguageViewController.swift in Sources */,
+				BB1B0AC82B4FC6E900889528 /* KMGuideConfig.swift in Sources */,
 				BBEFD01C2AF9E5AA003FABD8 /* KMBatchOperateAddHeaderFooterViewController.swift in Sources */,
 				9F3D818E29A22AD90087B5AD /* Date+KMExtensions.swift in Sources */,
 				89E4E755296427E5002DBA6F /* NSImage_SKExtensions.m in Sources */,
@@ -13917,6 +14134,7 @@
 				ADBC2D11299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				9FCFEC982AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				ADAFDA302AE8E45000F084BC /* KMAdvertisementConfig.swift in Sources */,
+				BB1B0AEC2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				9FAAA325290A69920046FFCE /* KMToolSetScroller.swift in Sources */,
 				BBBE208B2B21649100509C4E /* KMPDFEditWindowController.swift in Sources */,
 				BB4F7E702B0C3DC40077EC8C /* KMButtonLayer.swift in Sources */,
@@ -13984,6 +14202,7 @@
 				9F0CB45F2966C9E200007028 /* KMFormPropertPanelViewController.swift in Sources */,
 				ADCFFC0229C004AD007D3657 /* KMBookMarkTableRowView.swift in Sources */,
 				ADF6B86C2A480C5F0090CB78 /* KMComparativeView.swift in Sources */,
+				BB1B0AF52B4FC6E900889528 /* KMConvertGuideView.swift in Sources */,
 				9FAAA339290F72CC0046FFCE /* KMHistoryFileCollectionView.swift in Sources */,
 				BB8810852B4F7C2200AFA63E /* KMVerificationAlertViewController.m in Sources */,
 				BB93CDE92AE7B6E100B29C57 /* KMToolbarView.swift in Sources */,
@@ -14010,6 +14229,7 @@
 				BB4F7E812B0C4E140077EC8C /* KMNoteFilterCollevtionViewItem.swift in Sources */,
 				BB4DD047299B294000E80DF6 /* KMCloudFileEmptyView.swift in Sources */,
 				ADD272D029B9CFD30032B5D6 /* KMLightNoNetworkView.swift in Sources */,
+				BB1B0AD12B4FC6E900889528 /* KMFunctionGuideSingleController.swift in Sources */,
 				9F1F82CA292F6CF90092C4B4 /* KMPDFInsertPageWindow.swift in Sources */,
 				9FBA0EE128FEC253001117AF /* KMProductPromotionViewController.swift in Sources */,
 				BB3A81B32AC2BCBC006FC66C /* KMPageSizeTool.swift in Sources */,
@@ -14045,6 +14265,7 @@
 				ADE86AC82B034CB200414DFA /* KMAddBackgroundView.swift in Sources */,
 				BBB9B32E299A5D6D004F3235 /* GTMAppAuthFetcherAuthorization.m in Sources */,
 				BB3198162AC55E6D00107371 /* CPDFDocument+KMExtension.swift in Sources */,
+				BB1B0ADA2B4FC6E900889528 /* KMOpenFileGuideToolbar.swift in Sources */,
 				ADE86A802B02220700414DFA /* KMSecurityView.swift in Sources */,
 				BB4A94912B04926700940F8B /* KMGOCROperation.swift in Sources */,
 				BBEFD0242AFA065F003FABD8 /* KMBatchAddHeaderFooterOperation.swift in Sources */,
@@ -14073,6 +14294,7 @@
 				9F78EFBB28F7C1CC001E66F4 /* KMHomeViewController.swift in Sources */,
 				8942F7E92925E1C400389627 /* KMLiftSideCellView.swift in Sources */,
 				9FBA0EEE28FFC716001117AF /* KMHomeFastToolViewController.swift in Sources */,
+				BB1B0AF22B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */,
 				BBBC08832B2AC863009B237F /* KMSnapshotModel.swift in Sources */,
 				9F512CCF2B469A7700EC0BC3 /* KMPageDisplayThemeCollectionViewItem.swift in Sources */,
 				BB4F7E792B0C45BB0077EC8C /* KMNoteOutlineFilterViewController.swift in Sources */,
@@ -14268,6 +14490,7 @@
 				AD9527EA2955520C0039D2BC /* KMBaseTextFieldModel.swift in Sources */,
 				BB146FEA299DC0D100784A6A /* GTLRDuration.m in Sources */,
 				BB146FFC299DC0D100784A6A /* OIDAuthState+Mac.m in Sources */,
+				BB1B0AD72B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */,
 				BB31981E2AC57ACA00107371 /* CPDFPage+PDFListView.swift in Sources */,
 				9F705F89291E576D005199AD /* KMTableView.swift in Sources */,
 				BBFBE6BE28DD7B97008B2335 /* AppDelegate.swift in Sources */,
@@ -14367,6 +14590,7 @@
 				9FD0FA2929CD3ED400F2AB0D /* KMRightSideEmptyVC.swift in Sources */,
 				BBF729BB2B19717200576AC5 /* KMBatchRemoveBackgroundOperation.swift in Sources */,
 				ADE86AAE2B03438400414DFA /* KMWatermarkWindowController.swift in Sources */,
+				BB1B0ADD2B4FC6E900889528 /* KMOpenFileGuidePanel.swift in Sources */,
 				BBBB6CCE2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */,
 				ADE3C1ED29A5AFB100793B13 /* KMRequestServerManager.swift in Sources */,
 				9F1FE4A229406E4700E952CA /* CTToolbarController.m in Sources */,
@@ -14448,6 +14672,7 @@
 				ADD1B70A29471FA500C3FFF7 /* KMPrintChoosePresenter.swift in Sources */,
 				BB1BFF692AEA02F8003EB179 /* KMBatchOperateSplitViewController.swift in Sources */,
 				F3599173292B62F5000D25DE /* CStringConstants.m in Sources */,
+				BB1B0AFB2B4FC6E900889528 /* KMCustomColorGuideView.swift in Sources */,
 				9F0CB4D92986553600007028 /* KMDesignToken+VerticalPadding.swift in Sources */,
 				BBF19E992B0B3218007154C8 /* KMAnnotationStamp.swift in Sources */,
 				9FF94F1929A770B500B1EF69 /* KMFillSignShapePanel.swift in Sources */,
@@ -14468,6 +14693,7 @@
 				BB65A0542AF8B90F003A27A0 /* KMDisplayPreferences.swift in Sources */,
 				9F0CB49729683E1000007028 /* KMPropertiesPanelTextSubVC.swift in Sources */,
 				BB3D970A2B2FEAC8007094C8 /* KMPDFRedactViewController.swift in Sources */,
+				BB1B0ACE2B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */,
 				BB853C6B2AF8782A009C20C1 /* KMRemoveWatermarkOperationQueue.swift in Sources */,
 				9F1FE49929406E4700E952CA /* NewTabButton.m in Sources */,
 				9FCFECA82AD243C900EAD2CB /* KMBlankView.swift in Sources */,
@@ -14571,7 +14797,9 @@
 				BB46CF4D2AFBB34900281EDF /* AutoSaveManager.swift in Sources */,
 				9FB220E02B10850400A5B208 /* KMAnnotationStampViewController.swift in Sources */,
 				BB3A66A42B0783BD00575343 /* KMTocTableCellView.swift in Sources */,
+				BBD426802B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */,
 				BBA00AC52B157C880043D903 /* KMToolbarZoomItemView.swift in Sources */,
+				BB1B0AC62B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */,
 				BBC3484B2958222C008D2CD1 /* KMBackgroundOutsideView.swift in Sources */,
 				AD1D48222AFB6BBA007AC1F0 /* KMMergeView.swift in Sources */,
 				BB90E4F32AF37F9F00B04B9F /* KMCustomViewButton.swift in Sources */,
@@ -14685,6 +14913,7 @@
 				BB5DF1F22959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
 				BBC3482529559506008D2CD1 /* KMBackgroundManager.swift in Sources */,
 				BB276A4C2B0375FE00AB5578 /* KMOperationQueue.swift in Sources */,
+				BB1B0AFC2B4FC6E900889528 /* KMCustomColorGuideView.swift in Sources */,
 				AD867FC629DFFBC400F00440 /* KMAnnotationOutlineRowView.swift in Sources */,
 				BB4EEF2E29763EE7003A3537 /* KMRedactBaseWindowController.swift in Sources */,
 				ADC31FA72A0E0C1A00ED44A2 /* KMEditPropertyAlignmentView.swift in Sources */,
@@ -14702,6 +14931,7 @@
 				ADDEEA5F2AD39DC500EF675D /* KMSignatureManager.swift in Sources */,
 				9FD0FA4C29D43D6800F2AB0D /* KMDeviceBrowserWindowController.swift in Sources */,
 				AD015FB829AB484400A57062 /* KMLightMemberConfig.swift in Sources */,
+				BB1B0AF92B4FC6E900889528 /* KMOpenFileFunctionView.swift in Sources */,
 				BBD1F77D296F9BE000343885 /* KMPageEditSettingBaseWindowController.swift in Sources */,
 				BB0A55112A302DB700B6E84B /* KMTextField.swift in Sources */,
 				BB2F184B2A0C911B0003F65E /* KMBaseWindowController.swift in Sources */,
@@ -14841,6 +15071,7 @@
 				BB003027298CF7EC002DD1A0 /* KMPreferenceDisplayController.swift in Sources */,
 				F36AD77829642FE80015AD53 /* CPDFListView+UndoManager.m in Sources */,
 				BB89726A294DB41D0045787C /* KMWatermarkAdjectivePositionView.swift in Sources */,
+				BB1B0ACC2B4FC6E900889528 /* KMFunctionGuideWindowController.swift in Sources */,
 				ADAFDA312AE8E45000F084BC /* KMAdvertisementConfig.swift in Sources */,
 				ADE787A32AA5A833002EC85A /* KMAccountExceptionWindowController.swift in Sources */,
 				BB3A66972B071B0300575343 /* KMSnapshotTableViewCell.swift in Sources */,
@@ -14961,6 +15192,7 @@
 				9F1FE49429406E4700E952CA /* common.m in Sources */,
 				ADDF83AE2B391A5D00A81A4E /* DSignatureConfig.swift in Sources */,
 				BB6347C52AF24F6300F5438E /* KMBatchoperateConvertCollectionViewItem.swift in Sources */,
+				BB1B0AC92B4FC6E900889528 /* KMGuideConfig.swift in Sources */,
 				AD0FA51329A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				9F0201732A1B488C00C9B673 /* KMAITranslationVC.swift in Sources */,
 				ADAFDA1A2AE8DD6600F084BC /* KMAdvertisementTableView.swift in Sources */,
@@ -15026,6 +15258,7 @@
 				9FF816EF2AFA5D840087EFC5 /* KMTableDataManager.swift in Sources */,
 				ADDEEA872AD7805200EF675D /* KMGeneralButton.swift in Sources */,
 				BB5BE4EE2B060E2F00D51BF2 /* KMLanguageViewController.swift in Sources */,
+				BB1B0AED2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				9F1FE4EE29406E4700E952CA /* ThrobberView.m in Sources */,
 				BB2F18472A0C7E250003F65E /* KMConvertBaseView.swift in Sources */,
 				9FBA0EE228FEC253001117AF /* KMProductPromotionViewController.swift in Sources */,
@@ -15065,7 +15298,9 @@
 				ADDF83452B391A5C00A81A4E /* DSignatureManager.swift in Sources */,
 				BB2F61592966B69D001CB369 /* KMWatermarkPropertyHomeController.swift in Sources */,
 				BB146FC4299DC0D100784A6A /* GTMReadMonitorInputStream.m in Sources */,
+				BB1B0AC02B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */,
 				BB1BFF7A2AEA0B8E003EB179 /* KMBatchOperateRightViewController.swift in Sources */,
+				BB1B0ADB2B4FC6E900889528 /* KMOpenFileGuideToolbar.swift in Sources */,
 				BB8115FC29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */,
 				AD867FB029DFBB1200F00440 /* KMAnnotationOutlineCellView.swift in Sources */,
 				BBFEF7182B3A77E700C28AC0 /* KMSystemFileMenu.swift in Sources */,
@@ -15177,6 +15412,7 @@
 				BB88E45929404752002B3655 /* KMPDFConvert.swift in Sources */,
 				9F080B15298CFDB300FC27DA /* KMTextImageButtonVC.swift in Sources */,
 				BB27BF3D2B33E85200A0BAAE /* CPDFView+KMExtension.swift in Sources */,
+				BB1B0AD82B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */,
 				BBB14A60297929BD00936EDB /* KMRedactPageRangeWindowController.swift in Sources */,
 				ADA08A8B29F21A53009B2A7B /* KMPDFViewAnnotationOnceModeStore.swift in Sources */,
 				BB853C872AF8BC12009C20C1 /* KMAddPasswordOperationQueue.swift in Sources */,
@@ -15206,6 +15442,7 @@
 				BB8810AA2B4F7D7500AFA63E /* KMVerificationViewController.m in Sources */,
 				BB897221294AF9080045787C /* KMWatermarkAdjectiveTopBarView.swift in Sources */,
 				9F72D2092994BDAF00DCACF1 /* KMNotificationVC.swift in Sources */,
+				BB1B0ACF2B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */,
 				BB4DD04C299B296500E80DF6 /* KMCloudPathControl.swift in Sources */,
 				AD867F9129D9554F00F00440 /* KMBOTAOutlineItem.swift in Sources */,
 				BB2A984B2B26A99A00647AF3 /* KMBatchAddWatermarkOperation.swift in Sources */,
@@ -15275,6 +15512,7 @@
 				9FCFEC9D2AD152FA00EAD2CB /* CustomAlertView.swift in Sources */,
 				BB147000299DC0D100784A6A /* OIDRedirectHTTPHandler.m in Sources */,
 				BB147003299DC0D100784A6A /* OIDScopeUtilities.m in Sources */,
+				BB1B0AF62B4FC6E900889528 /* KMConvertGuideView.swift in Sources */,
 				AD867FA729DFB77500F00440 /* KMAnnotationOutlineView.swift in Sources */,
 				BBB9B32C299A5D6D004F3235 /* GTMOAuth2KeychainCompatibility.m in Sources */,
 				AD9527D82952ED970039D2BC /* KMPrintPresenter_C.swift in Sources */,
@@ -15351,6 +15589,7 @@
 				ADE3C1AC29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				BB10FAF72AFE2C2900F18D65 /* KMNumberArrayFormatter.swift in Sources */,
 				BBD7FE082A13241C00F96075 /* KMOutlineEditViewController.swift in Sources */,
+				BB1B0AF32B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */,
 				BB8F4558295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
 				AD88108E29A760D100178CA1 /* KMRegisterPresenter.swift in Sources */,
 				BB146FB5299DC0D100784A6A /* GTLRUtilities.m in Sources */,
@@ -15412,6 +15651,7 @@
 				9F1FE50E29407B2B00E952CA /* KMUploadFilePanel.swift in Sources */,
 				BBA93D2E29BEBAA60044E0DD /* KMPreferenceEnum.swift in Sources */,
 				ADE8BC3F29F9458700570F89 /* KMRecommondInfo.m in Sources */,
+				BB1B0ADE2B4FC6E900889528 /* KMOpenFileGuidePanel.swift in Sources */,
 				ADDEEA672AD3C4BE00EF675D /* KMPDFSignatureImageView.swift in Sources */,
 				BB403BAB2B15CA6E00B3106D /* KMBatchConvertOperation.swift in Sources */,
 				ADDEEA732AD3EFE200EF675D /* KMButton.swift in Sources */,
@@ -15441,6 +15681,7 @@
 				BB1A34A9295EA30100B80B3E /* NSBitmapImageRep_SKExtensions.m in Sources */,
 				9F0CB4FE298655F600007028 /* KMDesignToken+BorderColor.swift in Sources */,
 				BBB1A3A729F6B66400E54E47 /* NSPanel+KMExtension.swift in Sources */,
+				BB1B0AD22B4FC6E900889528 /* KMFunctionGuideSingleController.swift in Sources */,
 				BB4F7E962B0C857D0077EC8C /* KMNoteTypeCollectionViewItem.swift in Sources */,
 				BB147048299DC0D200784A6A /* OIDServiceConfiguration.m in Sources */,
 				9F1F82BD292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.swift in Sources */,
@@ -15592,6 +15833,7 @@
 				BB8810662B4F74DD00AFA63E /* KMRepeatTrialAlertController.m in Sources */,
 				9F1FE51329407B4000E952CA /* KMFileSearchView.swift in Sources */,
 				BBEC00B1295C2AF300A26C98 /* KMBatesPreviewController.swift in Sources */,
+				BBD426812B4FCF1500AC8660 /* KMTextFieldCell.swift in Sources */,
 				BB897260294C5DDA0045787C /* KMWatermarkPropertyInfoController.swift in Sources */,
 				BB0A55162A3052F800B6E84B /* KMCustomTextField.swift in Sources */,
 				9F0201882A1DA28B00C9B673 /* KMAILanguagePopVC.swift in Sources */,
@@ -15688,6 +15930,7 @@
 				BB1A91752AFB8D95005E5FD8 /* KMBookletMaskView.swift in Sources */,
 				BB89DD802953F863007C3FFA /* KMWatermarkFileOutsideView.swift in Sources */,
 				ADAFDA442AE8F3C400F084BC /* KMAdvertisementTimeStampConversion.swift in Sources */,
+				BB1B0ADC2B4FC6E900889528 /* KMOpenFileGuideToolbar.swift in Sources */,
 				BB3D97182B3023C5007094C8 /* KMCustomButton.swift in Sources */,
 				BBFEF71D2B3A784200C28AC0 /* KMSystemEditMenu.swift in Sources */,
 				BB6B4C0A292F53CE0071CA06 /* KMMergeFileModel.swift in Sources */,
@@ -15709,6 +15952,7 @@
 				9F0CB51F2986569B00007028 /* KMDesignToken+BorderRadiusBottomRight.swift in Sources */,
 				BB86C1EF28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				BBB7B4932A03AD2A00B58A5A /* KMPDFEditToolbar.swift in Sources */,
+				BB1B0AF72B4FC6E900889528 /* KMConvertGuideView.swift in Sources */,
 				BB86C1EF28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				ADBC2D39299F0A5A006280C8 /* KMPrintHelpViewController.swift in Sources */,
 				BB146FE0299DC0D100784A6A /* GTLRDriveObjects.m in Sources */,
@@ -16001,6 +16245,7 @@
 				BB146FE9299DC0D100784A6A /* GTLRQuery.m in Sources */,
 				BBFEF7152B3A766C00C28AC0 /* KMSystemMenu.swift in Sources */,
 				BB147016299DC0D100784A6A /* OIDAuthState.m in Sources */,
+				BB1B0ACA2B4FC6E900889528 /* KMGuideConfig.swift in Sources */,
 				BB8810D82B4F984000AFA63E /* JSONKit.m in Sources */,
 				BBF8A3FF2AE8B04400788BAC /* KMBatchOperateFile.swift in Sources */,
 				BB897258294C559F0045787C /* KMWatermarkPropertyCreateController.swift in Sources */,
@@ -16078,6 +16323,7 @@
 				9FE0BBE02B0E009F00CD1CAC /* KMColorPickerView.swift in Sources */,
 				ADD1B6EE2946C04C00C3FFF7 /* KMPrintChoosePageSizePamphletView.swift in Sources */,
 				9F0CB4DB2986553600007028 /* KMDesignToken+VerticalPadding.swift in Sources */,
+				BB1B0AF42B4FC6E900889528 /* KMFunctionGuideNameItemView.swift in Sources */,
 				BB6DD816293486FA001F0544 /* KMSecureEncryptPasswordCellView.swift in Sources */,
 				9F1FE4C829406E4700E952CA /* CTUtil.m in Sources */,
 				BB147010299DC0D100784A6A /* OIDScopes.m in Sources */,
@@ -16153,6 +16399,7 @@
 				9FBC48BA299B44C600CA39D7 /* KMSecondaryViewController.m in Sources */,
 				AD1CA3F92A05FCB60070541F /* KMAnnotationScreenViewController.swift in Sources */,
 				9F1FE4EC29406E4700E952CA /* NSBezierPath+MCAdditions.m in Sources */,
+				BB1B0AFA2B4FC6E900889528 /* KMOpenFileFunctionView.swift in Sources */,
 				9F5664892988B16F00020985 /* KMTextfieldVC.swift in Sources */,
 				ADAFDA3B2AE8EEFF00F084BC /* KMAdvertisementRequestServer.swift in Sources */,
 				BBD1F77E296F9BE000343885 /* KMPageEditSettingBaseWindowController.swift in Sources */,
@@ -16202,6 +16449,7 @@
 				ADAFDA842AEB804B00F084BC /* KMQucikToolCollectionViewItem.swift in Sources */,
 				BBC8A7622B05C87600FA9377 /* KMBotaTableView.swift in Sources */,
 				BB147028299DC0D100784A6A /* OIDTokenRequest.m in Sources */,
+				BB1B0AD02B4FC6E900889528 /* KMFunctionGuideMultiController.swift in Sources */,
 				9F1FE49829406E4700E952CA /* common.c in Sources */,
 				ADBC375629CAE94700D93208 /* KMComparativeOutlineSectionCell.swift in Sources */,
 				9F0CB5442986953A00007028 /* KMURLToPDFWindowController.swift in Sources */,
@@ -16226,6 +16474,7 @@
 				9FCFEC7E2AC579F600EAD2CB /* CPDFListSignatureAnnotation.swift in Sources */,
 				BB8115FD29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */,
 				9F78EFBD28F7C1CC001E66F4 /* KMHomeViewController.swift in Sources */,
+				BB1B0AEE2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				9FCFEC9A2AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				BBC745EC295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */,
 				BB90E4F02AF3546500B04B9F /* NSUserDefaultsController+KMExtension.swift in Sources */,
@@ -16234,6 +16483,7 @@
 				ADB5E50E2A3703E6007110A8 /* KMInAppPurchaseManager.swift in Sources */,
 				ADD1B6C92942E83000C3FFF7 /* KMPrintBottomView.swift in Sources */,
 				ADD1B7042946C8AD00C3FFF7 /* KMBaseTextField.swift in Sources */,
+				BB1B0AD92B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */,
 				9FD0FA2B29CD3ED400F2AB0D /* KMRightSideEmptyVC.swift in Sources */,
 				BB3A66A92B078CA400575343 /* KMNoteOutlineView.swift in Sources */,
 				BB6B43682A04919200E02B54 /* KMBaseViewController.swift in Sources */,
@@ -16304,6 +16554,7 @@
 				BBFE6E67293097A600142C01 /* KMPageRangePickerWindowController.swift in Sources */,
 				BBFEF7292B3A78EC00C28AC0 /* KMSystemToolMenu.swift in Sources */,
 				BB88E43D294023CB002B3655 /* KMDocumentModel.swift in Sources */,
+				BB1B0ADF2B4FC6E900889528 /* KMOpenFileGuidePanel.swift in Sources */,
 				9FB221102B1AE35E00A5B208 /* NSBitmapImageRep_KMExtension.swift in Sources */,
 				BBF2455A2AE78D0300037D08 /* KMBatchOperateWindowController.swift in Sources */,
 				ADDF83342B391A5C00A81A4E /* CPDFAnnotation+PDFListView.m in Sources */,
@@ -16348,6 +16599,7 @@
 				9F0CB4E32986556400007028 /* KMDesignToken+PaddingTop.swift in Sources */,
 				BB2EDF6F296ECE17003BCF58 /* KMPageEditInsertDirectionItemView.swift in Sources */,
 				8942F80529262B2E00389627 /* KMSideViewController.swift in Sources */,
+				BB1B0AD32B4FC6E900889528 /* KMFunctionGuideSingleController.swift in Sources */,
 				BB74DA812AC42959006EDFE7 /* NSButton+KMExtension.swift in Sources */,
 				ADDF83942B391A5D00A81A4E /* DSignatureFilelistRow.swift in Sources */,
 				9F0CB4F3298655BC00007028 /* KMDesignToken+ItemSpacing.swift in Sources */,
@@ -16386,6 +16638,7 @@
 				9F39B9462A661ED500930ACA /* KMHomeScrollView.swift in Sources */,
 				BBB9B315299A5D6D004F3235 /* DropboxModel.m in Sources */,
 				9F0CB51B2986568000007028 /* KMDesignToken+BorderRadiusTopRight.swift in Sources */,
+				BB1B0ACD2B4FC6E900889528 /* KMFunctionGuideWindowController.swift in Sources */,
 				8942F7BD29222C7E00389627 /* KMBookCellView.swift in Sources */,
 				9F1FE4C229406E4700E952CA /* NSWindow+CTThemed.m in Sources */,
 				BB147001299DC0D100784A6A /* OIDRedirectHTTPHandler.m in Sources */,
@@ -16425,6 +16678,7 @@
 				9F080B16298CFDB300FC27DA /* KMTextImageButtonVC.swift in Sources */,
 				BBFBE74828DD7DB8008B2335 /* AppDelegate.swift in Sources */,
 				BB3A66AD2B078FB200575343 /* KMNoteTableViewCell.swift in Sources */,
+				BB1B0AC12B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */,
 				BB853C932AF8DCBF009C20C1 /* KMBatchOperateRemovePasswordViewController.swift in Sources */,
 				BB8B173E2907CDD9001C5EA5 /* NibLoadable.swift in Sources */,
 				9FCFEC862AD0EF6700EAD2CB /* KMCustomButtonPopMenuViewController.swift in Sources */,
@@ -16508,6 +16762,7 @@
 				ADAFDA272AE8DE1B00F084BC /* KMAdvertisementModel.swift in Sources */,
 				89316824296D73CC0073EA59 /* KMSignatureAnnotationViewController.m in Sources */,
 				9F1FE4A429406E4700E952CA /* CTToolbarController.m in Sources */,
+				BB1B0AFD2B4FC6E900889528 /* KMCustomColorGuideView.swift in Sources */,
 				BB3A66A52B0783BD00575343 /* KMTocTableCellView.swift in Sources */,
 				BBEB93ED2AD6C2AE00739573 /* KMPDFMergeFileNameTabelViewCell.swift in Sources */,
 				F3599175292B62F5000D25DE /* CStringConstants.m in Sources */,
@@ -16565,6 +16820,7 @@
 				BB0A55122A302DB700B6E84B /* KMTextField.swift in Sources */,
 				9F0CB5032986560D00007028 /* KMDesignToken+BorderTop.swift in Sources */,
 				9F0CB4CB2986533F00007028 /* KMDesignToken+Sizing.swift in Sources */,
+				BB1B0AC72B4FC6E900889528 /* KMGuideInfoWindow.swift in Sources */,
 				ADD1B70C29471FA500C3FFF7 /* KMPrintChoosePresenter.swift in Sources */,
 				9F0CB4692967E5CB00007028 /* KMPropertiesPanelSubViewController.swift in Sources */,
 				9FBC48C1299E23B100CA39D7 /* NSViewController+DesignToken.swift in Sources */,

+ 0 - 22
PDF Office/PDF Master/Class/Appearance/Image.xcassets/PDF Tools/KMImageNameUXIconBtnArrowDown.imageset/Contents.json

@@ -1,22 +0,0 @@
-{
-  "images" : [
-    {
-      "filename" : "light_ic_btn_arrow_down.pdf",
-      "idiom" : "mac"
-    },
-    {
-      "appearances" : [
-        {
-          "appearance" : "luminosity",
-          "value" : "dark"
-        }
-      ],
-      "filename" : "light_ic_btn_arrow_down-1.pdf",
-      "idiom" : "mac"
-    }
-  ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
-  }
-}

二进制
PDF Office/PDF Master/Class/Appearance/Image.xcassets/PDF Tools/KMImageNameUXIconBtnArrowDown.imageset/light_ic_btn_arrow_down-1.pdf


二进制
PDF Office/PDF Master/Class/Appearance/Image.xcassets/PDF Tools/KMImageNameUXIconBtnArrowDown.imageset/light_ic_btn_arrow_down.pdf


+ 24 - 0
PDF Office/PDF Master/Class/Batch/View/KMTextFieldCell.swift

@@ -0,0 +1,24 @@
+//
+//  KMTextFieldCell.swift
+//  PDF Master
+//
+//  Created by liujiajie on 2024/1/11.
+//
+
+import Cocoa
+
+class KMTextFieldCell: NSTextFieldCell{
+    override func drawingRect(forBounds rect: NSRect) -> NSRect {
+        var newRect:NSRect = super.drawingRect(forBounds: rect)
+        let textSize:NSSize = self.cellSize(forBounds: rect)
+        let heightDelta:CGFloat = newRect.size.height - textSize.height
+        if heightDelta > 0 {
+            newRect.size.height = textSize.height
+            newRect.origin.y += heightDelta * 0.5
+        }
+        newRect.origin.x += 3
+        return newRect
+    }
+}
+
+

+ 2 - 2
PDF Office/PDF Master/Class/Batch/WindowController/VC/KMBatchOperateImageToPDFViewController.xib

@@ -72,8 +72,8 @@
                     <rect key="frame" x="34" y="279" width="430" height="24"/>
                     <subviews>
                         <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AKV-3R-iGQ">
-                            <rect key="frame" x="1" y="1" width="400" height="22"/>
-                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" drawsBackground="YES" id="V8A-qR-hoa">
+                            <rect key="frame" x="-1" y="1" width="404" height="22"/>
+                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="left" id="V8A-qR-hoa" customClass="KMTextFieldCell" customModule="PDF_Master" customModuleProvider="target">
                                 <font key="font" metaFont="system"/>
                                 <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
                                 <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>

+ 199 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMConvertGuideView.swift

@@ -0,0 +1,199 @@
+//
+//  KMConvertGuideView.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/11.
+//
+
+import Cocoa
+
+class KMConvertGuideView: NSView, NibLoadable {
+
+    @IBOutlet weak var contendView: NSView!
+    @IBOutlet weak var shadowView: NSView!
+    
+    @IBOutlet weak var bigCircleView: NSView!
+    @IBOutlet weak var smallCircleView: NSView!
+    @IBOutlet weak var circleTopConst: NSLayoutConstraint!
+    
+    @IBOutlet weak var tipInfoView: NSView!
+    @IBOutlet weak var iconImage: NSImageView!
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var tipInfoLabel1: NSTextField!
+    @IBOutlet weak var tipInfoLabel2: NSTextField!
+    @IBOutlet weak var tipInfoLabel3: NSTextField!
+    @IBOutlet weak var tipInfoLabel4: NSTextField!
+    
+    @IBOutlet weak var closeBox: KMBox!
+    @IBOutlet weak var closeLabel: NSTextField!
+    @IBOutlet weak var closeButton: KMButton!
+    
+    @IBOutlet weak var convertBox: KMBox!
+    @IBOutlet weak var convertLabel: NSTextField!
+    @IBOutlet weak var convertButton: KMButton!
+    
+    @objc var _circleRect: CGRect = .zero
+    var clickHandle: ((_ view: KMConvertGuideView, _ actionType: KMGuideActionType)->Void)?
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self.bigCircleView.wantsLayer = true
+        self.bigCircleView.layer?.cornerRadius = CGRectGetHeight(self.bigCircleView.frame)/2
+        self.bigCircleView.layer?.borderWidth = 3
+        
+        self.smallCircleView.wantsLayer = true
+        self.smallCircleView.layer?.cornerRadius = CGRectGetHeight(self.smallCircleView.frame)/2
+        self.smallCircleView.layer?.borderWidth = 3
+        
+        self.tipInfoView.wantsLayer = true
+        self.tipInfoView.layer?.borderWidth = 2
+        self.tipInfoView.layer?.cornerRadius = 8
+        self.tipInfoView.layer?.masksToBounds = true
+        
+        self.closeBox.wantsLayer = true
+        self.closeBox.borderWidth = 1
+        self.closeBox.cornerRadius = 2
+        self.closeBox.fillColor = NSColor.clear
+        
+        self.convertBox.wantsLayer = true
+        self.convertBox.cornerRadius = 4
+        self.convertBox.borderWidth = 0
+        self.convertBox.fillColor = NSColor.clear
+        
+        self.titleLabel.font = NSFont.SFProTextSemiboldFont(14)
+        self.tipInfoLabel1.font = NSFont.SFProTextRegularFont(14)
+        self.tipInfoLabel2.font = NSFont.SFProTextRegularFont(14)
+        self.tipInfoLabel3.font = NSFont.SFProTextRegularFont(14)
+        self.tipInfoLabel4.font = NSFont.SFProTextRegularFont(14)
+        self.closeLabel.font = NSFont.SFProTextSemiboldFont(13)
+        self.convertLabel.font = NSFont.SFProTextSemiboldFont(14)
+        
+        self.titleLabel.stringValue = NSLocalizedString("The Best PDF Converter", comment: "")
+        self.tipInfoLabel1.stringValue = NSLocalizedString("Free convert first 10 pages.", comment: "")
+        self.tipInfoLabel2.stringValue = NSLocalizedString("Convert PDFs to various file formats in high accuracy.", comment: "")
+        self.tipInfoLabel3.stringValue = NSLocalizedString("Create PDFs from images or Office files.", comment: "")
+        self.tipInfoLabel4.stringValue = NSLocalizedString("Batch convert PDFs to improve productivity.", comment: "")
+        self.closeLabel.stringValue = NSLocalizedString("Close", comment: "")
+        self.convertLabel.stringValue = NSLocalizedString("Convert All Pages", comment: "")
+        
+        self.closeButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.closeBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.5)
+                } else {
+                    self?.closeBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+                }
+            } else {
+                if mouseEntered {
+                    self?.closeBox.borderColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 0.5)
+                } else {
+                    self?.closeBox.borderColor = NSColor.black.withAlphaComponent(0.15)
+                }
+            }
+        }
+        
+        self.convertButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if mouseEntered {
+                self?.convertBox.fillColor = NSColor(red: 23/255, green: 85/255, blue: 178/255, alpha: 1)
+            } else {
+                self?.convertBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+            }
+        }
+        
+        self.shadowView.wantsLayer = true
+        self.shadowView.layer?.borderWidth = 0
+        self.shadowView.layer?.shadowColor = NSColor.black.withAlphaComponent(0.55).cgColor
+        self.shadowView.layer?.shadowOpacity = 0.1
+        self.shadowView.layer?.shadowRadius = 3.0
+        let shadowPath = NSBezierPath(rect: self.shadowView.bounds)
+        if #available(macOS 14.0, *) {
+            self.shadowView.layer?.shadowPath = shadowPath.cgPath
+        }
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+    }
+    
+    @objc var circleRect: CGRect {
+        set {
+            _circleRect = newValue;
+        }
+        get {
+            return _circleRect;
+        }
+    }
+    
+    func updateViewColor() {
+        if self.window != nil {
+            self.circleTopConst.constant = (self.window?.frame.size.height)! - self.circleRect.origin.y - CGRectGetHeight(self.bigCircleView.frame)
+        }
+        
+        if KMAppearance.isDarkMode() {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.black.cgColor
+            self.titleLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            self.tipInfoLabel1.textColor = KMAppearance.KMColor_Interactive_A0()
+            self.tipInfoLabel2.textColor = KMAppearance.KMColor_Layout_H1()
+            self.tipInfoLabel3.textColor = KMAppearance.KMColor_Layout_H1()
+            self.tipInfoLabel4.textColor = KMAppearance.KMColor_Layout_H1()
+            self.closeLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.convertLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            
+            self.closeBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+            self.convertBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+            
+            self.bigCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            
+        } else {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.white.cgColor
+            self.titleLabel.textColor = KMAppearance.KMColor_Interactive_M0()
+            self.tipInfoLabel1.textColor = KMAppearance.KMColor_Interactive_A0()
+            self.tipInfoLabel2.textColor = KMAppearance.KMColor_Layout_H0()
+            self.tipInfoLabel3.textColor = KMAppearance.KMColor_Layout_H0()
+            self.tipInfoLabel4.textColor = KMAppearance.KMColor_Layout_H0()
+            self.closeLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.convertLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            
+            self.closeBox.borderColor = NSColor.black.withAlphaComponent(0.15)
+            self.convertBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+            
+            self.smallCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            self.bigCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+        }
+    }
+    
+    //MARK: IBAction
+    @IBAction func closeAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .skip)
+    }
+    
+    @IBAction func convertAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .purchase)
+//        FMTrackEventManager.default().trackOnceEvent("PUW", withProperties: ["PUW_Btn":"Btn_PUW_StartGuideConvert_Buy"])
+    }
+    
+    @objc func themeChange() {
+       DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+           self.updateViewColor()
+       }
+   }
+}

+ 341 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMConvertGuideView.xib

@@ -0,0 +1,341 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMConvertGuideView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="678" height="650"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="0V3-xC-NhK">
+                    <rect key="frame" x="0.0" y="0.0" width="678" height="650"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="hhe-He-yaD">
+                            <rect key="frame" x="20" y="552" width="638" height="50"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="N28-tm-4IT">
+                                    <rect key="frame" x="6" y="6" width="626" height="38"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="38" id="cXz-x3-1IF"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="N28-tm-4IT" firstAttribute="centerY" secondItem="hhe-He-yaD" secondAttribute="centerY" id="DbI-0S-qwx"/>
+                                <constraint firstItem="N28-tm-4IT" firstAttribute="centerX" secondItem="hhe-He-yaD" secondAttribute="centerX" id="KVI-Ps-5Bv"/>
+                                <constraint firstAttribute="height" constant="50" id="TKg-H8-7Jf"/>
+                                <constraint firstAttribute="trailing" secondItem="N28-tm-4IT" secondAttribute="trailing" constant="6" id="dOh-Lv-peX"/>
+                                <constraint firstItem="N28-tm-4IT" firstAttribute="leading" secondItem="hhe-He-yaD" secondAttribute="leading" constant="6" id="hwJ-WH-eW3"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="3IB-7j-i4Z">
+                            <rect key="frame" x="139" y="113" width="400" height="433"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="P4D-mT-c6q">
+                            <rect key="frame" x="139" y="113" width="400" height="433"/>
+                            <subviews>
+                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Ab1-44-9MG">
+                                    <rect key="frame" x="20" y="207" width="360" height="206"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="206" id="UHW-R0-afc"/>
+                                        <constraint firstAttribute="width" constant="360" id="Z6g-a0-2EN"/>
+                                    </constraints>
+                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="guideConvert" id="vzy-Eb-bLB"/>
+                                </imageView>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2cp-7N-j4b">
+                                    <rect key="frame" x="18" y="178" width="120" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="Digital Signature" id="LcD-jK-3Hj">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="RH5-2l-6Fc">
+                                    <rect key="frame" x="20" y="150" width="360" height="20"/>
+                                    <subviews>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="B2O-Zo-9Ns">
+                                            <rect key="frame" x="0.0" y="0.0" width="20" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="20" id="3kd-MF-8m0"/>
+                                                <constraint firstAttribute="height" constant="20" id="V0n-iN-Wof"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="guide_Convert_tip" id="BPX-oj-IFr"/>
+                                        </imageView>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vLK-MJ-ETm">
+                                            <rect key="frame" x="22" y="2" width="340" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="336" id="HG5-Cu-zeY"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" alignment="left" title="Convert the first 10 pages of each file for free." id="Aqn-IJ-Iw2">
+                                                <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="vLK-MJ-ETm" firstAttribute="top" secondItem="RH5-2l-6Fc" secondAttribute="top" id="IBW-6K-fav"/>
+                                        <constraint firstItem="B2O-Zo-9Ns" firstAttribute="leading" secondItem="RH5-2l-6Fc" secondAttribute="leading" id="LsV-ed-7ah"/>
+                                        <constraint firstItem="B2O-Zo-9Ns" firstAttribute="top" secondItem="RH5-2l-6Fc" secondAttribute="top" id="Pm1-eG-AVF"/>
+                                        <constraint firstAttribute="bottom" secondItem="vLK-MJ-ETm" secondAttribute="bottom" constant="2" id="YqU-gk-rAB"/>
+                                        <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="YyJ-P4-xYI"/>
+                                        <constraint firstItem="vLK-MJ-ETm" firstAttribute="leading" secondItem="B2O-Zo-9Ns" secondAttribute="trailing" constant="4" id="snN-ot-aNw"/>
+                                        <constraint firstAttribute="width" constant="360" id="y81-jn-KDu"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="4s7-tz-fFz">
+                                    <rect key="frame" x="20" y="124" width="360" height="18"/>
+                                    <subviews>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Ncd-2J-81m">
+                                            <rect key="frame" x="0.0" y="-2" width="20" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="20" id="8Pf-Ga-wih"/>
+                                                <constraint firstAttribute="height" constant="20" id="Q2g-pU-Wy5"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="vipSecond" id="OYD-Vj-MSb"/>
+                                        </imageView>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y4d-zT-oBL">
+                                            <rect key="frame" x="22" y="2" width="340" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="336" id="LeB-GI-8KA"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" alignment="left" title="Convert PDFs Accurately with Retained Formatting." id="PTh-3z-IY7">
+                                                <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="Y4d-zT-oBL" secondAttribute="bottom" constant="2" id="BZg-nA-V59"/>
+                                        <constraint firstItem="Y4d-zT-oBL" firstAttribute="top" secondItem="4s7-tz-fFz" secondAttribute="top" id="Ix0-wm-UMO"/>
+                                        <constraint firstItem="Y4d-zT-oBL" firstAttribute="leading" secondItem="Ncd-2J-81m" secondAttribute="trailing" constant="4" id="RuJ-2h-PDx"/>
+                                        <constraint firstAttribute="width" constant="360" id="Xxu-Fu-Pvw"/>
+                                        <constraint firstItem="Ncd-2J-81m" firstAttribute="leading" secondItem="4s7-tz-fFz" secondAttribute="leading" id="c3L-PS-6i7"/>
+                                        <constraint firstItem="Ncd-2J-81m" firstAttribute="top" secondItem="4s7-tz-fFz" secondAttribute="top" id="wsb-bm-vaE"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="puY-2Y-BOa">
+                                    <rect key="frame" x="20" y="98" width="360" height="18"/>
+                                    <subviews>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ifv-GO-04q">
+                                            <rect key="frame" x="0.0" y="-2" width="20" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="RtF-lq-crQ"/>
+                                                <constraint firstAttribute="width" constant="20" id="tlL-CR-QtY"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="vipSecond" id="uiO-ZP-nSd"/>
+                                        </imageView>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rYf-RP-Ojg">
+                                            <rect key="frame" x="22" y="2" width="340" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="336" id="E0T-BE-553"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" alignment="left" title="Convert PDF to/from Popular Office File Formats." id="d9n-Bs-r7a">
+                                                <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="rYf-RP-Ojg" secondAttribute="bottom" constant="2" id="EfC-cM-imi"/>
+                                        <constraint firstAttribute="width" constant="360" id="MwK-dq-kyo"/>
+                                        <constraint firstItem="rYf-RP-Ojg" firstAttribute="top" secondItem="puY-2Y-BOa" secondAttribute="top" id="QKs-uL-Tu5"/>
+                                        <constraint firstItem="ifv-GO-04q" firstAttribute="leading" secondItem="puY-2Y-BOa" secondAttribute="leading" id="Thi-Bk-gzO"/>
+                                        <constraint firstItem="ifv-GO-04q" firstAttribute="top" secondItem="puY-2Y-BOa" secondAttribute="top" id="XaM-q0-oeT"/>
+                                        <constraint firstItem="rYf-RP-Ojg" firstAttribute="leading" secondItem="ifv-GO-04q" secondAttribute="trailing" constant="4" id="fqF-do-njB"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="MSg-b9-aBi">
+                                    <rect key="frame" x="20" y="72" width="360" height="18"/>
+                                    <subviews>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="1I3-Mh-7n8">
+                                            <rect key="frame" x="0.0" y="-2" width="20" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="20" id="T2x-5S-z3f"/>
+                                                <constraint firstAttribute="height" constant="20" id="X83-qQ-yFz"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="vipSecond" id="smH-Cy-o21"/>
+                                        </imageView>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cd9-us-gA4">
+                                            <rect key="frame" x="22" y="2" width="340" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="336" id="EMC-eo-6ng"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" alignment="left" title="Convert PDF to/from Image Files." id="bWO-13-LDY">
+                                                <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="1I3-Mh-7n8" firstAttribute="top" secondItem="MSg-b9-aBi" secondAttribute="top" id="70h-s6-nkC"/>
+                                        <constraint firstItem="cd9-us-gA4" firstAttribute="leading" secondItem="1I3-Mh-7n8" secondAttribute="trailing" constant="4" id="AYV-pd-HAi"/>
+                                        <constraint firstAttribute="width" constant="360" id="CrN-uE-2Z6"/>
+                                        <constraint firstItem="1I3-Mh-7n8" firstAttribute="leading" secondItem="MSg-b9-aBi" secondAttribute="leading" id="D4j-yB-sii"/>
+                                        <constraint firstItem="cd9-us-gA4" firstAttribute="top" secondItem="MSg-b9-aBi" secondAttribute="top" id="YkU-3T-DqL"/>
+                                        <constraint firstAttribute="bottom" secondItem="cd9-us-gA4" secondAttribute="bottom" constant="2" id="eBP-bj-97X"/>
+                                    </constraints>
+                                </customView>
+                                <box boxType="custom" borderType="line" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="FGE-HD-uMz" customClass="KMBox">
+                                    <rect key="frame" x="160" y="20" width="67" height="32"/>
+                                    <view key="contentView" id="2H3-w4-Cbp">
+                                        <rect key="frame" x="1" y="1" width="65" height="30"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FKZ-6g-6uN">
+                                                <rect key="frame" x="10" y="9" width="45" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Close" id="9ro-jO-CZy">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P5F-Uj-vJH" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="65" height="30"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="7Up-eg-vZi">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="closeAction:" target="c22-O7-iKe" id="mG9-RY-Ku6"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="P5F-Uj-vJH" firstAttribute="leading" secondItem="2H3-w4-Cbp" secondAttribute="leading" id="3iw-1c-ahe"/>
+                                            <constraint firstItem="FKZ-6g-6uN" firstAttribute="centerY" secondItem="2H3-w4-Cbp" secondAttribute="centerY" constant="-2" id="6bL-EO-IRB"/>
+                                            <constraint firstAttribute="trailing" secondItem="P5F-Uj-vJH" secondAttribute="trailing" id="MzO-7u-87D"/>
+                                            <constraint firstItem="P5F-Uj-vJH" firstAttribute="top" secondItem="2H3-w4-Cbp" secondAttribute="top" id="kfG-Gq-khs"/>
+                                            <constraint firstAttribute="trailing" secondItem="FKZ-6g-6uN" secondAttribute="trailing" constant="12" id="nr6-Rs-FDl"/>
+                                            <constraint firstItem="FKZ-6g-6uN" firstAttribute="leading" secondItem="2H3-w4-Cbp" secondAttribute="leading" constant="12" id="obb-Q8-nAo"/>
+                                            <constraint firstAttribute="bottom" secondItem="P5F-Uj-vJH" secondAttribute="bottom" id="vq8-8Y-Kg5"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="32" id="ysN-nq-4L9"/>
+                                    </constraints>
+                                    <font key="titleFont" metaFont="smallSystem"/>
+                                </box>
+                                <box boxType="custom" borderType="line" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="PWh-gy-TmU" customClass="KMBox">
+                                    <rect key="frame" x="235" y="20" width="145" height="32"/>
+                                    <view key="contentView" id="Lcj-9H-r8H">
+                                        <rect key="frame" x="1" y="1" width="143" height="30"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7B0-Ss-Sdb">
+                                                <rect key="frame" x="10" y="9" width="123" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Convert All Pages" id="0Vq-qk-vP7">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mua-0m-k0A" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="143" height="30"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="ZMk-wp-fkl">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="convertAction:" target="c22-O7-iKe" id="wci-Wa-f3X"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="mua-0m-k0A" firstAttribute="top" secondItem="Lcj-9H-r8H" secondAttribute="top" id="8ku-Vn-WVb"/>
+                                            <constraint firstItem="7B0-Ss-Sdb" firstAttribute="leading" secondItem="Lcj-9H-r8H" secondAttribute="leading" constant="12" id="9nT-Qh-PBH"/>
+                                            <constraint firstAttribute="bottom" secondItem="mua-0m-k0A" secondAttribute="bottom" id="HeN-jN-3b8"/>
+                                            <constraint firstItem="7B0-Ss-Sdb" firstAttribute="centerY" secondItem="Lcj-9H-r8H" secondAttribute="centerY" constant="-2" id="QvR-5i-zNC"/>
+                                            <constraint firstAttribute="trailing" secondItem="mua-0m-k0A" secondAttribute="trailing" id="ThN-V5-s9T"/>
+                                            <constraint firstItem="mua-0m-k0A" firstAttribute="leading" secondItem="Lcj-9H-r8H" secondAttribute="leading" id="Woo-F3-06s"/>
+                                            <constraint firstAttribute="trailing" secondItem="7B0-Ss-Sdb" secondAttribute="trailing" constant="12" id="n0d-EE-B9o"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="32" id="Yxg-6j-mab"/>
+                                    </constraints>
+                                    <font key="titleFont" metaFont="smallSystem"/>
+                                </box>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="PWh-gy-TmU" secondAttribute="trailing" constant="20" id="0aU-lH-G5M"/>
+                                <constraint firstItem="puY-2Y-BOa" firstAttribute="leading" secondItem="P4D-mT-c6q" secondAttribute="leading" constant="20" id="0oa-C8-eXz"/>
+                                <constraint firstAttribute="bottom" secondItem="PWh-gy-TmU" secondAttribute="bottom" constant="20" id="4tw-zA-wnB"/>
+                                <constraint firstItem="4s7-tz-fFz" firstAttribute="leading" secondItem="P4D-mT-c6q" secondAttribute="leading" constant="20" id="9r4-pP-Jpy"/>
+                                <constraint firstItem="puY-2Y-BOa" firstAttribute="top" secondItem="4s7-tz-fFz" secondAttribute="bottom" constant="8" id="Cel-Bz-35W"/>
+                                <constraint firstItem="PWh-gy-TmU" firstAttribute="leading" secondItem="FGE-HD-uMz" secondAttribute="trailing" constant="8" id="EG9-xl-ZH6"/>
+                                <constraint firstItem="MSg-b9-aBi" firstAttribute="top" secondItem="puY-2Y-BOa" secondAttribute="bottom" constant="8" id="FGE-xQ-2s1"/>
+                                <constraint firstAttribute="trailing" secondItem="4s7-tz-fFz" secondAttribute="trailing" constant="20" id="I8X-sg-iUc"/>
+                                <constraint firstItem="2cp-7N-j4b" firstAttribute="leading" secondItem="P4D-mT-c6q" secondAttribute="leading" constant="20" id="P76-4l-ZrK"/>
+                                <constraint firstItem="Ab1-44-9MG" firstAttribute="centerX" secondItem="P4D-mT-c6q" secondAttribute="centerX" id="PdY-gI-pU7"/>
+                                <constraint firstItem="Ab1-44-9MG" firstAttribute="top" secondItem="P4D-mT-c6q" secondAttribute="top" constant="20" id="TNx-ev-aAk"/>
+                                <constraint firstItem="PWh-gy-TmU" firstAttribute="centerY" secondItem="FGE-HD-uMz" secondAttribute="centerY" id="Wnj-5F-2lD"/>
+                                <constraint firstItem="RH5-2l-6Fc" firstAttribute="top" secondItem="2cp-7N-j4b" secondAttribute="bottom" constant="8" id="ZSp-ZD-Nf2"/>
+                                <constraint firstItem="4s7-tz-fFz" firstAttribute="top" secondItem="RH5-2l-6Fc" secondAttribute="bottom" constant="8" id="aTB-qL-k8u"/>
+                                <constraint firstItem="MSg-b9-aBi" firstAttribute="leading" secondItem="P4D-mT-c6q" secondAttribute="leading" constant="20" id="g2V-f1-f8i"/>
+                                <constraint firstItem="2cp-7N-j4b" firstAttribute="top" secondItem="Ab1-44-9MG" secondAttribute="bottom" constant="12" id="jeN-DC-sBa"/>
+                                <constraint firstAttribute="width" constant="400" id="jhH-Xm-LSD"/>
+                                <constraint firstItem="PWh-gy-TmU" firstAttribute="top" secondItem="MSg-b9-aBi" secondAttribute="bottom" constant="20" id="qUB-LM-2Rz"/>
+                                <constraint firstItem="RH5-2l-6Fc" firstAttribute="leading" secondItem="P4D-mT-c6q" secondAttribute="leading" constant="20" id="t9o-Yd-hwy"/>
+                                <constraint firstAttribute="trailing" secondItem="MSg-b9-aBi" secondAttribute="trailing" constant="20" id="tqU-YX-fWP"/>
+                                <constraint firstAttribute="trailing" secondItem="puY-2Y-BOa" secondAttribute="trailing" constant="20" id="ypX-8m-xUM"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="hhe-He-yaD" firstAttribute="leading" secondItem="0V3-xC-NhK" secondAttribute="leading" constant="20" id="HFJ-aY-Nyu"/>
+                        <constraint firstItem="P4D-mT-c6q" firstAttribute="centerX" secondItem="0V3-xC-NhK" secondAttribute="centerX" id="ILk-Bu-SlT"/>
+                        <constraint firstItem="P4D-mT-c6q" firstAttribute="top" secondItem="hhe-He-yaD" secondAttribute="bottom" constant="6" id="K9s-v4-UD0"/>
+                        <constraint firstItem="3IB-7j-i4Z" firstAttribute="trailing" secondItem="P4D-mT-c6q" secondAttribute="trailing" id="NlI-Up-oIz"/>
+                        <constraint firstItem="hhe-He-yaD" firstAttribute="top" secondItem="0V3-xC-NhK" secondAttribute="top" constant="48" id="PF3-VJ-0u0"/>
+                        <constraint firstItem="3IB-7j-i4Z" firstAttribute="leading" secondItem="P4D-mT-c6q" secondAttribute="leading" id="qvt-d1-HIR"/>
+                        <constraint firstItem="3IB-7j-i4Z" firstAttribute="top" secondItem="P4D-mT-c6q" secondAttribute="top" id="rbH-eA-Gj6"/>
+                        <constraint firstItem="3IB-7j-i4Z" firstAttribute="bottom" secondItem="P4D-mT-c6q" secondAttribute="bottom" id="sku-in-BkK"/>
+                        <constraint firstAttribute="trailing" secondItem="hhe-He-yaD" secondAttribute="trailing" constant="20" id="vCz-F8-jPs"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="0V3-xC-NhK" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="1Xi-l2-w8g"/>
+                <constraint firstItem="0V3-xC-NhK" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="Peq-Ae-kJx"/>
+                <constraint firstAttribute="trailing" secondItem="0V3-xC-NhK" secondAttribute="trailing" id="Yj5-yS-z5h"/>
+                <constraint firstAttribute="bottom" secondItem="0V3-xC-NhK" secondAttribute="bottom" id="eqO-ca-p44"/>
+            </constraints>
+            <connections>
+                <outlet property="bigCircleView" destination="hhe-He-yaD" id="VBN-iH-D6j"/>
+                <outlet property="circleTopConst" destination="PF3-VJ-0u0" id="1xH-Ey-q7c"/>
+                <outlet property="closeBox" destination="FGE-HD-uMz" id="0NW-lC-ke8"/>
+                <outlet property="closeButton" destination="P5F-Uj-vJH" id="iBX-EW-jN6"/>
+                <outlet property="closeLabel" destination="FKZ-6g-6uN" id="bRt-nb-r3E"/>
+                <outlet property="contendView" destination="0V3-xC-NhK" id="rIT-7a-bcm"/>
+                <outlet property="convertBox" destination="PWh-gy-TmU" id="5Ai-Nj-x0e"/>
+                <outlet property="convertButton" destination="mua-0m-k0A" id="8cw-5q-Wnd"/>
+                <outlet property="convertLabel" destination="7B0-Ss-Sdb" id="jRO-uo-fjO"/>
+                <outlet property="iconImage" destination="Ab1-44-9MG" id="dFu-OT-a8i"/>
+                <outlet property="shadowView" destination="3IB-7j-i4Z" id="RQx-tq-dw8"/>
+                <outlet property="smallCircleView" destination="N28-tm-4IT" id="JiT-8V-rJt"/>
+                <outlet property="tipInfoLabel1" destination="vLK-MJ-ETm" id="GDc-fA-I9z"/>
+                <outlet property="tipInfoLabel2" destination="Y4d-zT-oBL" id="VrW-3W-xdD"/>
+                <outlet property="tipInfoLabel3" destination="rYf-RP-Ojg" id="kwY-sZ-uD9"/>
+                <outlet property="tipInfoLabel4" destination="cd9-us-gA4" id="QFT-aq-pMx"/>
+                <outlet property="tipInfoView" destination="P4D-mT-c6q" id="z8t-fQ-9jK"/>
+                <outlet property="titleLabel" destination="2cp-7N-j4b" id="QIT-Pk-SO9"/>
+            </connections>
+            <point key="canvasLocation" x="214" y="203"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="guideConvert" width="360" height="206"/>
+        <image name="guide_Convert_tip" width="20" height="20"/>
+        <image name="vipSecond" width="20" height="20"/>
+    </resources>
+</document>

+ 154 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMCustomColorGuideView.swift

@@ -0,0 +1,154 @@
+//
+//  KMCustomColorGuideView.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/11.
+//
+
+import Cocoa
+
+class KMCustomColorGuideView: NSView, NibLoadable {
+
+    
+    @IBOutlet weak var contendView: NSView!
+    @IBOutlet weak var shadowView: NSView!
+    
+    @IBOutlet weak var bigCircleView: NSView!
+    @IBOutlet weak var smallCircleView: NSView!
+    @IBOutlet weak var circleLeftConst: NSLayoutConstraint!
+    @IBOutlet weak var circleBottomConst: NSLayoutConstraint!
+    
+    
+    @IBOutlet weak var tipInfoView: NSView!
+    @IBOutlet weak var tipTitleLabel: NSTextField!
+    @IBOutlet weak var tipSubTitleLabel: NSTextField!
+
+    @IBOutlet weak var finishBox: KMBox!
+    @IBOutlet weak var finishLabel: NSTextField!
+    @IBOutlet weak var finishButton: KMButton!
+    
+    var clickHandle: ((_ view: KMCustomColorGuideView, _ actionType: KMGuideActionType)->Void)?
+    var _circleRect: CGRect = .zero
+
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        
+        self.bigCircleView.wantsLayer = true
+        self.bigCircleView.layer?.cornerRadius = CGRectGetHeight(self.bigCircleView.frame)/2
+        self.bigCircleView.layer?.borderWidth = 3
+        
+        self.smallCircleView.wantsLayer = true
+        self.smallCircleView.layer?.cornerRadius = CGRectGetHeight(self.smallCircleView.frame)/2
+        self.smallCircleView.layer?.borderWidth = 3
+        
+        self.tipInfoView.wantsLayer = true
+        self.tipInfoView.layer?.borderWidth = 2
+        self.tipInfoView.layer?.cornerRadius = 8
+        self.tipInfoView.layer?.masksToBounds = true
+        
+        self.tipTitleLabel.stringValue = NSLocalizedString("Customize Color", comment: "")
+        self.tipSubTitleLabel.stringValue = NSLocalizedString("Right click a color and select “Change Color...”", comment: "")
+        self.finishLabel.stringValue = NSLocalizedString("Got it", comment: "")
+        
+        
+        self.finishBox.wantsLayer = true
+        self.finishBox.borderWidth = 1
+        self.finishBox.cornerRadius = 2
+        
+        self.finishButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.finishBox.fillColor = NSColor(red: 23/255, green: 85/255, blue: 178/255, alpha: 1)
+                } else {
+                    self?.finishBox.fillColor = KMAppearance.KMColor_Interactive_A0()
+                }
+            } else {
+                if mouseEntered {
+                    self?.finishBox.fillColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 1)
+                } else {
+                    self?.finishBox.fillColor = NSColor(red: 56/255, green: 100/255, blue: 176/255, alpha: 1)
+                }
+            }
+            
+        }
+        
+        self.shadowView.wantsLayer = true
+        self.shadowView.layer?.borderWidth = 0
+        self.shadowView.layer?.shadowColor = NSColor.black.withAlphaComponent(0.55).cgColor
+        self.shadowView.layer?.shadowOpacity = 0.1
+        self.shadowView.layer?.shadowRadius = 3.0
+        let shadowPath = NSBezierPath(rect: self.shadowView.bounds)
+        if #available(macOS 14.0, *) {
+            self.shadowView.layer?.shadowPath = shadowPath.cgPath
+        }
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+    }
+    
+    //MARK: Setter
+    var circleRect: CGRect {
+        set {
+            _circleRect = newValue;
+        }
+        get {
+            return _circleRect;
+        }
+    }
+    
+    func updateViewColor() {
+        self.circleLeftConst.constant = CGRectGetMinX(self.circleRect) - CGRectGetWidth(self.bigCircleView.frame)/2 + CGRectGetWidth(self.circleRect)/2
+        self.circleBottomConst.constant = self.circleRect.origin.y - 12
+        
+        if KMAppearance.isDarkMode() {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.black.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.finishLabel.textColor = NSColor.white
+            self.finishBox.borderColor = NSColor.clear
+            self.finishBox.fillColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1)
+
+            self.bigCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            
+        } else {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.white.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H0()
+            self.finishBox.borderColor = NSColor.clear
+            self.finishBox.fillColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1)
+            self.finishLabel.textColor = NSColor.white
+              
+            self.smallCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            self.bigCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+        }
+        
+    }
+    
+    @IBAction func closeAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .getIt)
+    }
+    
+    @objc func themeChange() {
+       DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+           self.updateViewColor()
+       }
+   }
+}

+ 149 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMCustomColorGuideView.xib

@@ -0,0 +1,149 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMCustomColorGuideView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Dea-Vg-VZM">
+                    <rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="omi-f9-51O">
+                            <rect key="frame" x="380" y="200" width="56" height="56"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="9nP-gx-K2s">
+                                    <rect key="frame" x="6" y="6" width="45" height="45"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="45" id="djM-yL-n6w"/>
+                                        <constraint firstAttribute="width" constant="45" id="mzA-95-fSx"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="9nP-gx-K2s" firstAttribute="centerX" secondItem="omi-f9-51O" secondAttribute="centerX" id="9gV-8s-5xe"/>
+                                <constraint firstAttribute="width" constant="56" id="p3K-3p-gWz"/>
+                                <constraint firstItem="9nP-gx-K2s" firstAttribute="centerY" secondItem="omi-f9-51O" secondAttribute="centerY" id="sMo-uu-GsQ"/>
+                                <constraint firstAttribute="height" constant="56" id="xdY-kr-eji"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="63R-VF-jf2">
+                            <rect key="frame" x="166" y="68" width="300" height="126"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="WB5-SO-mvF">
+                            <rect key="frame" x="166" y="68" width="300" height="126"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tvJ-xF-71m">
+                                    <rect key="frame" x="18" y="89" width="96" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="CH9-8z-XVt">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rWm-ru-kMX">
+                                    <rect key="frame" x="18" y="64" width="264" height="17"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="260" id="Bw4-qg-ejW"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="EGc-UA-BfD">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <box boxType="custom" borderType="line" cornerRadius="2" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="WX1-bZ-Pfr" customClass="KMBox">
+                                    <rect key="frame" x="226" y="20" width="54" height="24"/>
+                                    <view key="contentView" id="3pq-7c-eUt">
+                                        <rect key="frame" x="1" y="1" width="52" height="22"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WQ7-ua-ZcP">
+                                                <rect key="frame" x="7" y="3" width="39" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Next" id="QAH-51-4An">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rx1-Rj-nA5" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="52" height="22"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="PMy-In-n4q">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="closeAction:" target="c22-O7-iKe" id="xgG-xj-Ms0"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="WQ7-ua-ZcP" firstAttribute="centerY" secondItem="3pq-7c-eUt" secondAttribute="centerY" id="BBx-bm-xXk"/>
+                                            <constraint firstItem="WQ7-ua-ZcP" firstAttribute="centerX" secondItem="3pq-7c-eUt" secondAttribute="centerX" id="JLr-wd-fSU"/>
+                                            <constraint firstItem="rx1-Rj-nA5" firstAttribute="leading" secondItem="3pq-7c-eUt" secondAttribute="leading" id="gsf-wK-psB"/>
+                                            <constraint firstAttribute="bottom" secondItem="rx1-Rj-nA5" secondAttribute="bottom" id="o9l-F9-mcO"/>
+                                            <constraint firstItem="rx1-Rj-nA5" firstAttribute="top" secondItem="3pq-7c-eUt" secondAttribute="top" id="qbD-P0-6An"/>
+                                            <constraint firstAttribute="trailing" secondItem="rx1-Rj-nA5" secondAttribute="trailing" id="uct-Yh-SIQ"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="MIj-9c-h0K"/>
+                                        <constraint firstAttribute="width" constant="54" id="ZoR-hm-siL"/>
+                                    </constraints>
+                                </box>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="WX1-bZ-Pfr" secondAttribute="trailing" constant="20" id="M1G-uT-Ws0"/>
+                                <constraint firstItem="tvJ-xF-71m" firstAttribute="leading" secondItem="WB5-SO-mvF" secondAttribute="leading" constant="20" id="OX1-eD-4df"/>
+                                <constraint firstItem="WX1-bZ-Pfr" firstAttribute="top" secondItem="rWm-ru-kMX" secondAttribute="bottom" constant="20" id="RFH-xx-Ljj"/>
+                                <constraint firstAttribute="bottom" secondItem="WX1-bZ-Pfr" secondAttribute="bottom" constant="20" id="Ruq-pC-D7a"/>
+                                <constraint firstItem="tvJ-xF-71m" firstAttribute="top" secondItem="WB5-SO-mvF" secondAttribute="top" constant="20" id="mKW-7f-q7o"/>
+                                <constraint firstAttribute="width" constant="300" id="tjP-8d-4v6"/>
+                                <constraint firstItem="rWm-ru-kMX" firstAttribute="top" secondItem="tvJ-xF-71m" secondAttribute="bottom" constant="8" id="uh5-0D-zsk"/>
+                                <constraint firstItem="rWm-ru-kMX" firstAttribute="leading" secondItem="WB5-SO-mvF" secondAttribute="leading" constant="20" id="yOf-6e-fsg"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="WB5-SO-mvF" firstAttribute="leading" secondItem="63R-VF-jf2" secondAttribute="leading" id="3zj-Na-uEq"/>
+                        <constraint firstItem="WB5-SO-mvF" firstAttribute="trailing" secondItem="63R-VF-jf2" secondAttribute="trailing" id="6mV-BC-utE"/>
+                        <constraint firstItem="omi-f9-51O" firstAttribute="trailing" secondItem="WB5-SO-mvF" secondAttribute="trailing" constant="-30" id="9cC-c1-z0a"/>
+                        <constraint firstAttribute="bottom" secondItem="omi-f9-51O" secondAttribute="bottom" constant="200" id="Crz-tI-jWS"/>
+                        <constraint firstItem="WB5-SO-mvF" firstAttribute="bottom" secondItem="63R-VF-jf2" secondAttribute="bottom" id="fzP-J6-H5f"/>
+                        <constraint firstItem="omi-f9-51O" firstAttribute="leading" secondItem="Dea-Vg-VZM" secondAttribute="leading" constant="380" id="ih1-Dv-A8E"/>
+                        <constraint firstItem="WB5-SO-mvF" firstAttribute="top" secondItem="63R-VF-jf2" secondAttribute="top" id="nfe-Oz-j5Y"/>
+                        <constraint firstItem="omi-f9-51O" firstAttribute="bottom" secondItem="WB5-SO-mvF" secondAttribute="top" constant="-6" id="onx-N4-95V"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="Dea-Vg-VZM" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="5WJ-Fb-4dK"/>
+                <constraint firstAttribute="trailing" secondItem="Dea-Vg-VZM" secondAttribute="trailing" id="OZy-AE-lWI"/>
+                <constraint firstItem="Dea-Vg-VZM" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="gPG-gV-eFa"/>
+                <constraint firstAttribute="bottom" secondItem="Dea-Vg-VZM" secondAttribute="bottom" id="sKm-MO-4xP"/>
+            </constraints>
+            <connections>
+                <outlet property="bigCircleView" destination="omi-f9-51O" id="gqy-0B-Bsv"/>
+                <outlet property="circleBottomConst" destination="Crz-tI-jWS" id="HlK-PJ-Mpl"/>
+                <outlet property="circleLeftConst" destination="ih1-Dv-A8E" id="E6t-2U-L20"/>
+                <outlet property="contendView" destination="Dea-Vg-VZM" id="iku-1n-QVl"/>
+                <outlet property="finishBox" destination="WX1-bZ-Pfr" id="iLG-3C-hJk"/>
+                <outlet property="finishButton" destination="rx1-Rj-nA5" id="moJ-zS-UXi"/>
+                <outlet property="finishLabel" destination="WQ7-ua-ZcP" id="PSn-t0-d2p"/>
+                <outlet property="shadowView" destination="63R-VF-jf2" id="peA-WF-iJH"/>
+                <outlet property="smallCircleView" destination="9nP-gx-K2s" id="TYB-Wy-VOG"/>
+                <outlet property="tipInfoView" destination="WB5-SO-mvF" id="h4D-If-pqG"/>
+                <outlet property="tipSubTitleLabel" destination="rWm-ru-kMX" id="Z9Q-6G-KZX"/>
+                <outlet property="tipTitleLabel" destination="tvJ-xF-71m" id="xQl-Ec-SSy"/>
+            </connections>
+            <point key="canvasLocation" x="46" y="136"/>
+        </customView>
+    </objects>
+</document>

+ 186 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMOpenFileFunctionView.swift

@@ -0,0 +1,186 @@
+//
+//  KMOpenFileFunctionView.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/11.
+//
+
+import Cocoa
+
+class KMOpenFileFunctionView: NSView, NibLoadable {
+    
+    @IBOutlet weak var contendView: NSView!
+    @IBOutlet weak var shadowView: NSView!
+    
+    @IBOutlet weak var bigCircleView: NSView!
+    @IBOutlet weak var smallCircleView: NSView!
+    @IBOutlet weak var circleLeftConst: NSLayoutConstraint!
+    @IBOutlet weak var circleTopConst: NSLayoutConstraint!
+    
+    @IBOutlet weak var tipInfoView: NSView!
+    @IBOutlet weak var tipImage: NSImageView!
+    @IBOutlet weak var ntipView: NSView!
+    @IBOutlet weak var ntipLabel: NSTextField!
+    @IBOutlet weak var tipTitleLabel: NSTextField!
+    @IBOutlet weak var tipSubTitleLabel: NSTextField!
+    
+    @IBOutlet weak var getItBox: KMBox!
+    @IBOutlet weak var getItLabel: NSTextField!
+    @IBOutlet weak var getItButton: KMButton!
+    
+    @objc var _type: KMGuideInfoType = .none
+    @objc var _circleRect: CGRect = .zero
+    
+    var clickHandle: ((_ view: KMOpenFileFunctionView, _ actionType: KMGuideActionType)->Void)?
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self.bigCircleView.wantsLayer = true
+        self.bigCircleView.layer?.cornerRadius = CGRectGetWidth(self.bigCircleView.frame)/2
+        self.bigCircleView.layer?.borderWidth = 3
+        
+        self.smallCircleView.wantsLayer = true
+        self.smallCircleView.layer?.cornerRadius = CGRectGetWidth(self.smallCircleView.frame)/2
+        self.smallCircleView.layer?.borderWidth = 3
+        
+        self.tipInfoView.wantsLayer = true
+        self.tipInfoView.layer?.borderWidth = 2
+        self.tipInfoView.layer?.cornerRadius = 8
+        self.tipInfoView.layer?.masksToBounds = true
+        
+        self.ntipView.wantsLayer = true
+        self.ntipView.layer?.cornerRadius = 10
+        self.ntipView.layer?.masksToBounds = true
+        
+        self.getItBox.wantsLayer = true
+        self.getItBox.fillColor = NSColor.clear
+        self.getItBox.cornerRadius = 4
+        self.getItButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.getItBox.fillColor = NSColor(red: 23/255, green: 85/255, blue: 178/255, alpha: 1)
+                } else {
+                    self?.getItBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+                }
+            } else {
+                if mouseEntered {
+                    self?.getItBox.fillColor = NSColor(red: 56/255, green: 100/255, blue: 176/255, alpha: 1)
+                } else {
+                    self?.getItBox.fillColor = KMAppearance.KMColor_Interactive_A0()
+                }
+            }
+        }
+        
+        self.ntipLabel.stringValue = NSLocalizedString("New", comment: "")
+        
+        self.shadowView.wantsLayer = true
+        self.shadowView.layer?.borderWidth = 0
+        self.shadowView.layer?.shadowColor = NSColor.black.withAlphaComponent(0.55).cgColor
+        self.shadowView.layer?.shadowOpacity = 0.1
+        self.shadowView.layer?.shadowRadius = 3.0
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+    }
+    
+    @objc func updateViewColor() {
+        
+        if self.type == .digitalSignGuide {
+            self.circleTopConst.constant = 0
+            self.circleLeftConst.constant = CGRectGetMinX(self.circleRect) - CGRectGetWidth(self.bigCircleView.frame)/2 + CGRectGetWidth(self.circleRect)/2
+            self.tipImage.image = NSImage(named: "guideDigitalSign")
+            self.tipTitleLabel.stringValue = NSLocalizedString("Digital Signature", comment: "")
+            self.tipSubTitleLabel.stringValue = NSLocalizedString("Digital signature provides proof of the signer's identity and intent, ensuring a high level of security and authenticity, making you more productive to sign digital documents.", comment: "")
+            self.getItLabel.stringValue = NSLocalizedString("Got it", comment: "")
+            
+        } else if self.type == .pdfCompareGuide {
+            if self.window != nil {
+                self.circleTopConst.constant = (self.window?.frame.size.height)! - self.circleRect.origin.y - CGRectGetHeight(self.bigCircleView.frame) + 5
+            }
+            self.circleLeftConst.constant = CGRectGetMinX(KMGuideInfoWindowController.currentWC().compareItemRect) - CGRectGetWidth(self.bigCircleView.frame)/2 + CGRectGetWidth(KMGuideInfoWindowController.currentWC().compareItemRect)/2
+            self.tipImage.image = NSImage(named: "guidePDFCompare")
+            self.tipTitleLabel.stringValue = NSLocalizedString("Compare PDFs", comment: "")
+            self.tipSubTitleLabel.stringValue = NSLocalizedString("The document compare feature lets you quickly spot differences between two versions of a PDF for a better review process.", comment: "")
+            self.getItLabel.stringValue = NSLocalizedString("Got it", comment: "")
+            
+        }
+        self.shadowView.layer?.shadowPath = nil
+        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+            self.shadowView.frame = self.tipInfoView.frame
+            let shadowPath = NSBezierPath(rect: self.shadowView.bounds)
+            if #available(macOS 14.0, *) {
+                self.shadowView.layer?.shadowPath = shadowPath.cgPath
+            }
+        }
+        self.getItBox.fillColor = KMAppearance.KMColor_Interactive_A0()
+        
+        if KMAppearance.isDarkMode() {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.black.cgColor
+            self.ntipView.layer?.backgroundColor = NSColor(red: 0, green: 207/255, blue: 133/255, alpha: 1).cgColor
+            self.ntipLabel.textColor = NSColor.white
+            self.tipTitleLabel.textColor = NSColor.white
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.getItLabel.textColor = NSColor.white
+            
+            self.bigCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+        } else {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.white.cgColor
+            self.ntipView.layer?.backgroundColor = NSColor(red: 0, green: 207/255, blue: 133/255, alpha: 1).cgColor
+            self.ntipLabel.textColor = NSColor.white
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H0()
+            self.getItLabel.textColor = NSColor.white
+            
+            self.smallCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            self.bigCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+        }
+    }
+    
+    
+    //MARK: Setter
+    @objc var type: KMGuideInfoType {
+        set {
+            _type = newValue;
+        }
+        get {
+            return _type;
+        }
+    }
+    
+    @objc var circleRect: CGRect {
+        set {
+            _circleRect = newValue;
+        }
+        get {
+            return _circleRect;
+        }
+    }
+    
+    @IBAction func getItAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .getIt)
+    }
+    
+    @objc func themeChange() {
+       DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+           self.updateViewColor()
+       }
+   }
+    
+}

+ 185 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/FunctionGuide/KMOpenFileFunctionView.xib

@@ -0,0 +1,185 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMOpenFileFunctionView" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="650" height="555"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Hxc-9r-cWI">
+                    <rect key="frame" x="0.0" y="0.0" width="650" height="555"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="eyC-C4-Pb6">
+                            <rect key="frame" x="110" y="505" width="50" height="50"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="1h8-bQ-2VN">
+                                    <rect key="frame" x="5" y="5" width="40" height="40"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="Gfb-2b-Mw7"/>
+                                        <constraint firstAttribute="width" constant="40" id="okX-1a-dmQ"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="1h8-bQ-2VN" firstAttribute="centerX" secondItem="eyC-C4-Pb6" secondAttribute="centerX" id="9eC-TP-kgu"/>
+                                <constraint firstItem="1h8-bQ-2VN" firstAttribute="centerY" secondItem="eyC-C4-Pb6" secondAttribute="centerY" id="CSr-iR-n5O"/>
+                                <constraint firstAttribute="width" constant="50" id="KRV-YN-0bs"/>
+                                <constraint firstAttribute="height" constant="50" id="hO0-9t-WBv"/>
+                            </constraints>
+                        </customView>
+                        <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e64-iZ-rOR">
+                            <rect key="frame" x="50" y="122" width="320" height="377"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="M5p-u9-5xx">
+                            <rect key="frame" x="50" y="122" width="320" height="377"/>
+                            <subviews>
+                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="7Iy-Pz-Emb">
+                                    <rect key="frame" x="20" y="197" width="280" height="160"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="160" id="V5q-0L-hNA"/>
+                                        <constraint firstAttribute="width" constant="280" id="cX0-Nb-Hnv"/>
+                                    </constraints>
+                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="guideToolbar" id="89b-IL-WYp"/>
+                                </imageView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="JEQ-wO-L9T">
+                                    <rect key="frame" x="20" y="165" width="43" height="20"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4Cg-yt-2ZL">
+                                            <rect key="frame" x="6" y="2" width="31" height="16"/>
+                                            <textFieldCell key="cell" alignment="left" title="New" id="wPF-CH-sAM">
+                                                <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="4Cg-yt-2ZL" firstAttribute="leading" secondItem="JEQ-wO-L9T" secondAttribute="leading" constant="8" id="8Hg-F5-hAM"/>
+                                        <constraint firstAttribute="trailing" secondItem="4Cg-yt-2ZL" secondAttribute="trailing" constant="8" id="E3h-4f-qBV"/>
+                                        <constraint firstItem="4Cg-yt-2ZL" firstAttribute="top" secondItem="JEQ-wO-L9T" secondAttribute="top" constant="2" id="Jvh-av-dDX"/>
+                                        <constraint firstAttribute="bottom" secondItem="4Cg-yt-2ZL" secondAttribute="bottom" constant="2" id="p6c-E2-m3R"/>
+                                    </constraints>
+                                </customView>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gXM-Uj-57G">
+                                    <rect key="frame" x="65" y="167" width="120" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="Digital Signature" id="pns-LK-zKW">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="n75-Sj-e7s">
+                                    <rect key="frame" x="18" y="72" width="284" height="85"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="bHD-Op-SyD"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" alignment="left" id="gXY-sg-UPG">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <string key="title">Digital signature verify the authenticity and integrity of documents, agreements, or contract, ensuring that the signature cannot be tampered with and provides a higher level of security. </string>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <box boxType="custom" borderType="none" borderWidth="0.0" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="FJl-RQ-aGl" customClass="KMBox">
+                                    <rect key="frame" x="90" y="20" width="140" height="32"/>
+                                    <view key="contentView" id="fv6-AS-ufh">
+                                        <rect key="frame" x="0.0" y="0.0" width="140" height="32"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cAf-Vp-6qV">
+                                                <rect key="frame" x="48" y="8" width="44" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Got it" id="gyG-01-Mbh">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eRC-jL-IiE" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="140" height="32"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="0lx-HA-MnD">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="getItAction:" target="c22-O7-iKe" id="U6K-Y4-jL0"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="cAf-Vp-6qV" firstAttribute="centerY" secondItem="fv6-AS-ufh" secondAttribute="centerY" id="1Yq-yU-Tub"/>
+                                            <constraint firstAttribute="trailing" secondItem="eRC-jL-IiE" secondAttribute="trailing" id="1iW-iy-F62"/>
+                                            <constraint firstAttribute="bottom" secondItem="eRC-jL-IiE" secondAttribute="bottom" id="7Kf-GR-opd"/>
+                                            <constraint firstItem="cAf-Vp-6qV" firstAttribute="centerX" secondItem="fv6-AS-ufh" secondAttribute="centerX" id="ctP-aj-J5R"/>
+                                            <constraint firstItem="eRC-jL-IiE" firstAttribute="leading" secondItem="fv6-AS-ufh" secondAttribute="leading" id="e5h-09-Cpj"/>
+                                            <constraint firstItem="eRC-jL-IiE" firstAttribute="top" secondItem="fv6-AS-ufh" secondAttribute="top" id="pD5-vu-XKz"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="32" id="155-NV-tHA"/>
+                                        <constraint firstAttribute="width" constant="140" id="EM0-Mp-zBM"/>
+                                    </constraints>
+                                    <color key="fillColor" red="0.0" green="0.53333333329999999" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </box>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="FJl-RQ-aGl" firstAttribute="top" secondItem="n75-Sj-e7s" secondAttribute="bottom" constant="20" id="0IH-Nc-k6x"/>
+                                <constraint firstItem="FJl-RQ-aGl" firstAttribute="centerX" secondItem="M5p-u9-5xx" secondAttribute="centerX" id="818-8e-yiL"/>
+                                <constraint firstItem="gXM-Uj-57G" firstAttribute="leading" secondItem="JEQ-wO-L9T" secondAttribute="trailing" constant="4" id="9Op-jP-bKa"/>
+                                <constraint firstItem="n75-Sj-e7s" firstAttribute="top" secondItem="JEQ-wO-L9T" secondAttribute="bottom" constant="8" id="Ahp-RR-pt2"/>
+                                <constraint firstItem="7Iy-Pz-Emb" firstAttribute="top" secondItem="M5p-u9-5xx" secondAttribute="top" constant="20" id="WBR-XN-3gX"/>
+                                <constraint firstAttribute="bottom" secondItem="FJl-RQ-aGl" secondAttribute="bottom" constant="20" id="c1c-Ba-5Xe"/>
+                                <constraint firstItem="n75-Sj-e7s" firstAttribute="leading" secondItem="M5p-u9-5xx" secondAttribute="leading" constant="20" id="eoA-R6-8wO"/>
+                                <constraint firstItem="JEQ-wO-L9T" firstAttribute="leading" secondItem="M5p-u9-5xx" secondAttribute="leading" constant="20" id="hWP-jL-PZi"/>
+                                <constraint firstItem="JEQ-wO-L9T" firstAttribute="top" secondItem="7Iy-Pz-Emb" secondAttribute="bottom" constant="12" id="lhW-vs-ukb"/>
+                                <constraint firstItem="gXM-Uj-57G" firstAttribute="centerY" secondItem="JEQ-wO-L9T" secondAttribute="centerY" id="vF1-H8-Q5X"/>
+                                <constraint firstAttribute="width" constant="320" id="vsD-B3-Q5T"/>
+                                <constraint firstItem="7Iy-Pz-Emb" firstAttribute="centerX" secondItem="M5p-u9-5xx" secondAttribute="centerX" id="vuJ-4a-cWK"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="eyC-C4-Pb6" firstAttribute="leading" secondItem="Hxc-9r-cWI" secondAttribute="leading" constant="110" id="00u-gI-nep"/>
+                        <constraint firstItem="M5p-u9-5xx" firstAttribute="leading" secondItem="eyC-C4-Pb6" secondAttribute="leading" constant="-60" id="BRK-Aq-cpq"/>
+                        <constraint firstItem="eyC-C4-Pb6" firstAttribute="top" secondItem="Hxc-9r-cWI" secondAttribute="top" id="cKO-UJ-95I"/>
+                        <constraint firstItem="M5p-u9-5xx" firstAttribute="top" secondItem="eyC-C4-Pb6" secondAttribute="bottom" constant="6" id="vf6-3c-caF"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="Hxc-9r-cWI" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="Rza-5L-w6b"/>
+                <constraint firstItem="Hxc-9r-cWI" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="Txg-ZT-4Wn"/>
+                <constraint firstAttribute="trailing" secondItem="Hxc-9r-cWI" secondAttribute="trailing" id="Z08-Ba-FLj"/>
+                <constraint firstAttribute="bottom" secondItem="Hxc-9r-cWI" secondAttribute="bottom" id="pQ3-Tg-8pw"/>
+            </constraints>
+            <connections>
+                <outlet property="bigCircleView" destination="eyC-C4-Pb6" id="ohc-Zj-uVO"/>
+                <outlet property="circleLeftConst" destination="00u-gI-nep" id="4g8-EZ-OR6"/>
+                <outlet property="circleTopConst" destination="cKO-UJ-95I" id="VOk-sk-AM0"/>
+                <outlet property="contendView" destination="Hxc-9r-cWI" id="IEE-iF-opD"/>
+                <outlet property="getItBox" destination="FJl-RQ-aGl" id="aoH-oE-sNj"/>
+                <outlet property="getItButton" destination="eRC-jL-IiE" id="hAD-6X-6Xf"/>
+                <outlet property="getItLabel" destination="cAf-Vp-6qV" id="b4x-bw-pfE"/>
+                <outlet property="ntipLabel" destination="4Cg-yt-2ZL" id="TGW-Kj-xDo"/>
+                <outlet property="ntipView" destination="JEQ-wO-L9T" id="kjX-UW-fAg"/>
+                <outlet property="shadowView" destination="e64-iZ-rOR" id="4Sa-NE-Cmf"/>
+                <outlet property="smallCircleView" destination="1h8-bQ-2VN" id="TCT-uR-3U8"/>
+                <outlet property="tipImage" destination="7Iy-Pz-Emb" id="mDY-J4-L2p"/>
+                <outlet property="tipInfoView" destination="M5p-u9-5xx" id="C2C-9c-1hO"/>
+                <outlet property="tipSubTitleLabel" destination="n75-Sj-e7s" id="JCe-DX-zwj"/>
+                <outlet property="tipTitleLabel" destination="gXM-Uj-57G" id="qBA-nu-1A2"/>
+            </connections>
+            <point key="canvasLocation" x="101" y="237.5"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="guideToolbar" width="280" height="160"/>
+    </resources>
+</document>

+ 253 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideMultiController.swift

@@ -0,0 +1,253 @@
+//
+//  KMFunctionGuideMultiController.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/6.
+//
+
+import Cocoa
+
+class KMFunctionGuideMultiController: NSViewController {
+    
+    @IBOutlet weak var contendView: NSView!
+    
+    @IBOutlet weak var titleInfoView: NSView!
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var typeNameView: NSView!
+    @IBOutlet weak var getStartBox: KMBox!
+    @IBOutlet weak var getStartLabel: NSTextField!
+    @IBOutlet weak var getStartButton: KMButton!
+    @IBOutlet weak var learnButton: HyperLinkButton!
+    @IBOutlet weak var nameHeightConst: NSLayoutConstraint!
+    
+    @IBOutlet weak var descriptionBGView: NSView!
+    @IBOutlet weak var iconImage: NSImageView!
+    @IBOutlet weak var previousButton: KMButton!
+    @IBOutlet weak var nextButton: KMButton!
+    @IBOutlet weak var desLabel: NSTextField!
+    @IBOutlet weak var desSubLabel: NSTextField!
+    
+    let DigitalSignatureKey = "DigitalSignatureKey"
+    let ComparePDFsKey = "ComparePDFsKey"
+    var namesArr = Array<Any>()
+    var currentNameKEY = String()
+    
+    var clickHandle: ((_ controller: KMFunctionGuideMultiController)->Void)?
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+        
+        self.namesArr = [["name":"Digital Signature","key":DigitalSignatureKey,"imageName":"whatNew_Digital","description":"Digital signature verify the authenticity and integrity of documents, agreements, or contract, ensuring that the signature cannot be tampered with and provides a higher level of security."]]
+        let dict = self.namesArr.first as! NSDictionary
+        self.currentNameKEY = dict["key"] as! String
+        
+        self.loadTypeNameView()
+        self.reloadNameViewInfo()
+        self.reloadDescriptionInfo()
+        
+        self.descriptionBGView.wantsLayer = true
+        
+        self.titleInfoView.wantsLayer = true
+        self.getStartBox.wantsLayer = true
+        self.getStartBox.layer?.cornerRadius = 4
+        self.getStartBox.layer?.masksToBounds = true
+        
+        self.titleLabel.stringValue = NSLocalizedString("What‘s New", comment: "")
+        self.getStartLabel.stringValue = NSLocalizedString("Got it", comment: "")
+        self.learnButton.title = NSLocalizedString("Learn More", comment: "")
+        self.learnButton.toolTip = NSLocalizedString("Learn More", comment: "")
+        
+        self.titleLabel.font = NSFont.SFProTextHeavyFont(20)
+        self.getStartLabel.font = NSFont.SFProTextSemiboldFont(14)
+        self.learnButton.font = NSFont.SFProTextSemiboldFont(14)
+        self.desLabel.font = NSFont.SFProTextSemiboldFont(14)
+        self.desSubLabel.font = NSFont.SFProTextRegularFont(14)
+        
+        self.getStartButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.getStartBox.fillColor = NSColor(red: 23/255, green: 85/255, blue: 178/255, alpha: 1)
+                } else {
+                    self?.getStartBox.fillColor = KMAppearance.KMColor_Interactive_A0()
+                }
+            } else {
+                if mouseEntered {
+                    self?.getStartBox.fillColor = NSColor(red: 56/255, green: 100/255, blue: 176/255, alpha: 1)
+                } else {
+                    self?.getStartBox.fillColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1)
+                }
+            }
+        }
+        
+        self.learnButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if mouseEntered {
+                self?.learnButton.setTitleColor(KMAppearance.KMColor_Interactive_M1())
+            } else {
+                self?.learnButton.setTitleColor(KMAppearance.KMColor_Interactive_M0())
+            }
+        }
+    
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+    }
+    
+    func loadTypeNameView() {
+        
+//        self.typeNameView.wantsLayer = true
+//        self.typeNameView.layer?.backgroundColor = NSColor.red.cgColor
+        
+        var offsetY: CGFloat = 0
+        let itemHeight: CGFloat = 32
+        
+        let viewHeight: CGFloat = itemHeight * CGFloat(self.namesArr.count)
+        self.nameHeightConst.constant = viewHeight
+        
+        for i in 0...self.namesArr.count - 1 {
+            let dict = self.namesArr[i]
+            let nameItem: KMFunctionGuideNameItemView = KMFunctionGuideNameItemView.createFromNib()!
+            nameItem.frame = CGRectMake(0, viewHeight - offsetY - itemHeight, CGRectGetWidth(self.typeNameView.frame), itemHeight)
+            nameItem.infoDict = dict as! NSDictionary
+            nameItem.clickHandle = { view in
+                self.currentNameKEY = view.infoDict["key"] as! String
+                self.reloadNameViewInfo()
+                self.reloadDescriptionInfo()
+            }
+            nameItem.autoresizingMask = [.width, .maxYMargin]
+            self.typeNameView.addSubview(nameItem)
+            offsetY += itemHeight
+        }
+        
+        if self.namesArr.count > 1 {
+            self.previousButton.isHidden = false
+            self.nextButton.isHidden = false
+        } else {
+            self.previousButton.isHidden = true
+            self.nextButton.isHidden = true
+        }
+    }
+    
+    func reloadNameViewInfo() {
+        for view in self.typeNameView.subviews {
+            if view is KMFunctionGuideNameItemView {
+                let itemView = view as! KMFunctionGuideNameItemView
+                if itemView.infoDict["key"] as! String == self.currentNameKEY {
+                    itemView.isSelected = true
+                } else {
+                    itemView.isSelected = false
+                }
+            }
+        }
+    }
+    
+    func reloadDescriptionInfo() {
+        
+        self.previousButton.isEnabled = true
+        self.nextButton.isEnabled = true
+        
+        for i in 0...self.namesArr.count - 1 {
+            let dict = self.namesArr[i] as! NSDictionary
+            if dict["key"] as! String == self.currentNameKEY {
+                self.desLabel.stringValue = NSLocalizedString(dict["name"] as! String, comment: "")
+                self.desSubLabel.stringValue = NSLocalizedString(dict["description"] as! String, comment: "")
+                self.iconImage.image = NSImage(named: dict["imageName"] as! String)
+            }
+            
+            let keyValue = dict["key"] as! String
+            if i == 0 && keyValue == self.currentNameKEY {
+                self.previousButton.isEnabled = false
+            } else if i == self.namesArr.count - 1 && keyValue == self.currentNameKEY {
+                self.nextButton.isEnabled = false
+            }
+            
+        }
+    }
+    
+    func updateViewColor() {
+        self.getStartBox.fillColor = KMAppearance.KMColor_Interactive_A0()
+        self.getStartLabel.textColor = KMAppearance.KMColor_Layout_W0()
+        self.learnButton.setTitleColor(KMAppearance.KMColor_Interactive_M0())
+        
+        if KMAppearance.isDarkMode() {
+            self.titleInfoView.layer?.backgroundColor = NSColor(red: 40/255.0, green: 40/255, blue: 40/255, alpha: 1).cgColor
+            self.descriptionBGView.layer?.backgroundColor = NSColor(red: 14/255.0, green: 17/255, blue: 20/255, alpha: 1).cgColor
+            self.titleLabel.textColor = NSColor.white
+            self.desLabel.textColor = NSColor.white
+            self.desSubLabel.textColor = NSColor(red: 200/255, green: 201/255, blue: 204/255, alpha: 1)
+            self.getStartBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+        } else {
+            self.titleInfoView.layer?.backgroundColor = NSColor.white.cgColor
+            self.descriptionBGView.layer?.backgroundColor = NSColor(red: 235/255.0, green: 236/255, blue: 240/255, alpha: 1).cgColor
+            self.titleLabel.textColor = NSColor(red: 0, green: 33/255, blue: 67/255, alpha: 1)
+            self.desLabel.textColor = NSColor(red: 14/255, green: 17/255, blue: 20/255, alpha: 1)
+            self.desSubLabel.textColor = NSColor(red: 14/255, green: 17/255, blue: 20/255, alpha: 1)
+            self.getStartBox.fillColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1)
+        }
+        
+        for view in self.typeNameView.subviews {
+            if view is KMFunctionGuideNameItemView {
+                let itemView = view as! KMFunctionGuideNameItemView
+                itemView.updateViewColor()
+            }
+        }
+    }
+    
+    //MARK: IBAction
+    @IBAction func getStartAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self)
+    }
+    
+    @IBAction func learnMoreAction(_ sender: Any) {
+#if VERSION_DMG
+        var url = URL(string:"https://www.pdfreaderpro.com/blog/digital-signature-update-mac-and-windows?utm_source=app_dmg&utm_medium=whatsnew_digitalsign_blog")!
+        NSWorkspace.shared.open(url)
+#else
+        var url = URL(string:"https://www.pdfreaderpro.com/blog/digital-signature-update-mac-and-windows?utm_source=app_mac&utm_medium=whatsnew_digitalsign_blog")!
+        NSWorkspace.shared.open(url)
+#endif
+    }
+    
+    @IBAction func previousAction(_ sender: Any) {
+        for i in 0...self.namesArr.count - 1 {
+            let dict = self.namesArr[i] as! NSDictionary
+            if dict["key"] as! String == self.currentNameKEY {
+                if i > 0 {
+                    let preDic = self.namesArr[i-1] as! NSDictionary
+                    self.currentNameKEY = preDic["key"] as! String
+                    break
+                }
+            }
+        }
+        self.reloadNameViewInfo()
+        self.reloadDescriptionInfo()
+    }
+    
+    @IBAction func nextAction(_ sender: Any) {
+        for i in 0...self.namesArr.count - 1 {
+            let dict = self.namesArr[i] as! NSDictionary
+            if dict["key"] as! String == self.currentNameKEY {
+                if i < self.namesArr.count {
+                    let nextDic = self.namesArr[i+1] as! NSDictionary
+                    self.currentNameKEY = nextDic["key"] as! String
+                    break
+                }
+            }
+        }
+        self.reloadNameViewInfo()
+        self.reloadDescriptionInfo()
+    }
+    
+    @objc func themeChange() {
+        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+            self.updateViewColor()
+        }
+    }
+}

+ 242 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideMultiController.xib

@@ -0,0 +1,242 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMFunctionGuideMultiController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="contendView" destination="TY5-yF-SZr" id="sih-Zb-vDg"/>
+                <outlet property="desLabel" destination="h9u-pa-nqn" id="dwU-eM-iM0"/>
+                <outlet property="desSubLabel" destination="Pne-a2-Dn9" id="N6z-R2-kB1"/>
+                <outlet property="descriptionBGView" destination="x6Z-7B-NEU" id="eva-AW-ICb"/>
+                <outlet property="getStartBox" destination="dpK-3d-u89" id="kgX-lR-XJm"/>
+                <outlet property="getStartButton" destination="bNV-bb-hUn" id="rpB-a2-KHp"/>
+                <outlet property="getStartLabel" destination="yRK-B3-klu" id="WbX-KQ-FFC"/>
+                <outlet property="iconImage" destination="xO8-Ah-ElR" id="q9g-Pb-Hup"/>
+                <outlet property="learnButton" destination="BLI-t8-GUb" id="ooL-9v-Cjb"/>
+                <outlet property="nameHeightConst" destination="gsi-Qm-oER" id="K1y-Wg-Fvg"/>
+                <outlet property="nextButton" destination="g30-Mi-n9I" id="yPe-1z-Kbo"/>
+                <outlet property="previousButton" destination="WXK-no-Mi5" id="7I2-DU-gbT"/>
+                <outlet property="titleInfoView" destination="Mam-Rg-lyk" id="Lcd-tg-ZFO"/>
+                <outlet property="titleLabel" destination="xjo-FI-pJ7" id="6GK-Zu-Cz1"/>
+                <outlet property="typeNameView" destination="W21-A6-OgQ" id="aUT-OE-Iad"/>
+                <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="744" height="460"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="TY5-yF-SZr">
+                    <rect key="frame" x="0.0" y="0.0" width="744" height="460"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Mam-Rg-lyk">
+                            <rect key="frame" x="0.0" y="0.0" width="304" height="460"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="D5c-c1-cPI">
+                                    <rect key="frame" x="32" y="40" width="240" height="380"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xjo-FI-pJ7">
+                                            <rect key="frame" x="-2" y="348" width="244" height="24"/>
+                                            <textFieldCell key="cell" alignment="left" title="PDF to Office" id="d7J-z9-bfT">
+                                                <font key="font" metaFont="systemBold" size="20"/>
+                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                        </textField>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="W21-A6-OgQ">
+                                            <rect key="frame" x="0.0" y="264" width="240" height="64"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="64" id="gsi-Qm-oER"/>
+                                            </constraints>
+                                        </customView>
+                                        <box boxType="custom" borderType="none" borderWidth="0.0" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="dpK-3d-u89" customClass="KMBox">
+                                            <rect key="frame" x="0.0" y="0.0" width="120" height="32"/>
+                                            <view key="contentView" id="7uc-5r-uuj">
+                                                <rect key="frame" x="0.0" y="0.0" width="120" height="32"/>
+                                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                <subviews>
+                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yRK-B3-klu">
+                                                        <rect key="frame" x="27" y="10" width="67" height="16"/>
+                                                        <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Get Start" id="EQ3-hW-Ubb">
+                                                            <font key="font" metaFont="systemBold"/>
+                                                            <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                        </textFieldCell>
+                                                    </textField>
+                                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bNV-bb-hUn" customClass="KMButton">
+                                                        <rect key="frame" x="0.0" y="0.0" width="120" height="32"/>
+                                                        <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="G0x-Qt-ZVB">
+                                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                            <font key="font" metaFont="system"/>
+                                                        </buttonCell>
+                                                        <connections>
+                                                            <action selector="getStartAction:" target="-2" id="a4u-M1-tsa"/>
+                                                        </connections>
+                                                    </button>
+                                                </subviews>
+                                                <constraints>
+                                                    <constraint firstItem="bNV-bb-hUn" firstAttribute="top" secondItem="7uc-5r-uuj" secondAttribute="top" id="0e4-EV-gi5"/>
+                                                    <constraint firstItem="bNV-bb-hUn" firstAttribute="leading" secondItem="7uc-5r-uuj" secondAttribute="leading" id="78Z-7n-pKU"/>
+                                                    <constraint firstItem="yRK-B3-klu" firstAttribute="centerX" secondItem="7uc-5r-uuj" secondAttribute="centerX" id="95s-Jg-fxv"/>
+                                                    <constraint firstAttribute="trailing" secondItem="bNV-bb-hUn" secondAttribute="trailing" id="H2d-1L-I51"/>
+                                                    <constraint firstAttribute="bottom" secondItem="bNV-bb-hUn" secondAttribute="bottom" id="K7v-p9-quN"/>
+                                                    <constraint firstItem="yRK-B3-klu" firstAttribute="centerY" secondItem="7uc-5r-uuj" secondAttribute="centerY" constant="-2" id="MBt-PX-ML6"/>
+                                                </constraints>
+                                            </view>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="120" id="A4h-54-MEf"/>
+                                                <constraint firstAttribute="height" constant="32" id="Fjw-vr-z6N"/>
+                                            </constraints>
+                                            <color key="fillColor" red="0.0" green="0.53333333329999999" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </box>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="ZqB-a4-2Kx">
+                                            <rect key="frame" x="120" y="0.0" width="120" height="32"/>
+                                            <subviews>
+                                                <button allowsExpansionToolTips="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BLI-t8-GUb" customClass="HyperLinkButton">
+                                                    <rect key="frame" x="20" y="8" width="73" height="16"/>
+                                                    <buttonCell key="cell" type="bevel" title="Learn More" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" imageScaling="proportionallyDown" inset="2" id="rFj-Aj-3Hq">
+                                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                        <font key="font" metaFont="system"/>
+                                                    </buttonCell>
+                                                    <connections>
+                                                        <action selector="learnMoreAction:" target="-2" id="UFH-UM-jrx"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="BLI-t8-GUb" firstAttribute="centerY" secondItem="ZqB-a4-2Kx" secondAttribute="centerY" id="8cV-LT-4eY"/>
+                                                <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="BLI-t8-GUb" secondAttribute="trailing" id="Lqu-YH-iAI"/>
+                                                <constraint firstAttribute="height" constant="32" id="XN9-KO-E6l"/>
+                                                <constraint firstAttribute="width" constant="120" id="eLp-Yb-RHt"/>
+                                                <constraint firstItem="BLI-t8-GUb" firstAttribute="leading" secondItem="ZqB-a4-2Kx" secondAttribute="leading" constant="20" id="hZT-Cn-7Ro"/>
+                                            </constraints>
+                                        </customView>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstAttribute="bottom" secondItem="ZqB-a4-2Kx" secondAttribute="bottom" id="0fg-12-QD7"/>
+                                        <constraint firstAttribute="trailing" secondItem="ZqB-a4-2Kx" secondAttribute="trailing" id="0pk-cH-27f"/>
+                                        <constraint firstItem="dpK-3d-u89" firstAttribute="leading" secondItem="D5c-c1-cPI" secondAttribute="leading" id="15B-Ap-Z3T"/>
+                                        <constraint firstAttribute="trailing" secondItem="xjo-FI-pJ7" secondAttribute="trailing" id="5Qq-8Y-c9L"/>
+                                        <constraint firstItem="W21-A6-OgQ" firstAttribute="top" secondItem="D5c-c1-cPI" secondAttribute="top" constant="52" id="7cP-3C-GLX"/>
+                                        <constraint firstAttribute="height" constant="380" id="AIg-sx-PnP"/>
+                                        <constraint firstItem="xjo-FI-pJ7" firstAttribute="top" secondItem="D5c-c1-cPI" secondAttribute="top" constant="8" id="bFk-fb-5fj"/>
+                                        <constraint firstItem="xjo-FI-pJ7" firstAttribute="leading" secondItem="D5c-c1-cPI" secondAttribute="leading" id="bqZ-P8-UvN"/>
+                                        <constraint firstAttribute="trailing" secondItem="W21-A6-OgQ" secondAttribute="trailing" id="dQj-bg-i5s"/>
+                                        <constraint firstAttribute="bottom" secondItem="dpK-3d-u89" secondAttribute="bottom" id="k8d-KV-RL8"/>
+                                        <constraint firstAttribute="width" constant="240" id="qlu-K4-OVT"/>
+                                        <constraint firstItem="W21-A6-OgQ" firstAttribute="leading" secondItem="D5c-c1-cPI" secondAttribute="leading" id="qxY-Zm-F7S"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="304" id="7E2-bR-Gdy"/>
+                                <constraint firstItem="D5c-c1-cPI" firstAttribute="centerX" secondItem="Mam-Rg-lyk" secondAttribute="centerX" id="LVh-Gr-oQj"/>
+                                <constraint firstItem="D5c-c1-cPI" firstAttribute="centerY" secondItem="Mam-Rg-lyk" secondAttribute="centerY" id="lwH-q2-tc4"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="x6Z-7B-NEU">
+                            <rect key="frame" x="304" y="0.0" width="440" height="460"/>
+                            <subviews>
+                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="xO8-Ah-ElR">
+                                    <rect key="frame" x="24" y="212" width="392" height="224"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="224" id="Cnu-yH-kK4"/>
+                                        <constraint firstAttribute="width" constant="392" id="lC0-1S-jSV"/>
+                                    </constraints>
+                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="axesIndependently" image="icon_pdfToOffice" id="Lb7-E2-Hao"/>
+                                </imageView>
+                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="WXK-no-Mi5" customClass="KMButton">
+                                    <rect key="frame" x="360" y="168" width="24" height="24"/>
+                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="arrow_down_sel" imagePosition="overlaps" alignment="center" imageScaling="proportionallyDown" inset="2" id="eel-L1-lBe">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="24" id="PI7-n2-d4Y"/>
+                                        <constraint firstAttribute="height" constant="24" id="mjf-2n-qgb"/>
+                                    </constraints>
+                                    <connections>
+                                        <action selector="previousAction:" target="-2" id="waG-00-gZk"/>
+                                    </connections>
+                                </button>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h9u-pa-nqn">
+                                    <rect key="frame" x="22" y="175" width="100" height="17"/>
+                                    <textFieldCell key="cell" alignment="center" title="PDF to Office" id="KeU-j9-76b">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pne-a2-Dn9">
+                                    <rect key="frame" x="22" y="117" width="396" height="48"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="392" id="oeV-C5-fYn"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" id="l7j-3e-CgP">
+                                        <font key="font" metaFont="system"/>
+                                        <string key="title">PDF to Office added to much more precisely and fastly convert PDF to editable Word, Excel, PowerPoint, RTF, HTML and Text. It keeps original layout and contents well.</string>
+                                        <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="g30-Mi-n9I" customClass="KMButton">
+                                    <rect key="frame" x="392" y="168" width="24" height="24"/>
+                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="arrow_right_sel" imagePosition="overlaps" alignment="center" imageScaling="proportionallyDown" inset="2" id="beh-Eg-Ukr">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="24" id="TQc-Fv-ttP"/>
+                                        <constraint firstAttribute="height" constant="24" id="l9g-jD-Afd"/>
+                                    </constraints>
+                                    <connections>
+                                        <action selector="nextAction:" target="-2" id="jpg-NT-7xg"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="g30-Mi-n9I" firstAttribute="top" secondItem="xO8-Ah-ElR" secondAttribute="bottom" constant="20" id="FEU-hV-GTx"/>
+                                <constraint firstItem="h9u-pa-nqn" firstAttribute="top" secondItem="xO8-Ah-ElR" secondAttribute="bottom" constant="20" id="FcF-Ef-b6d"/>
+                                <constraint firstItem="Pne-a2-Dn9" firstAttribute="top" secondItem="h9u-pa-nqn" secondAttribute="bottom" constant="10" id="HLm-w1-isS"/>
+                                <constraint firstItem="Pne-a2-Dn9" firstAttribute="leading" secondItem="x6Z-7B-NEU" secondAttribute="leading" constant="24" id="I7z-pu-1fr"/>
+                                <constraint firstItem="h9u-pa-nqn" firstAttribute="leading" secondItem="x6Z-7B-NEU" secondAttribute="leading" constant="24" id="Ka7-6f-ahk"/>
+                                <constraint firstItem="xO8-Ah-ElR" firstAttribute="centerX" secondItem="x6Z-7B-NEU" secondAttribute="centerX" id="R69-ZS-egX"/>
+                                <constraint firstItem="g30-Mi-n9I" firstAttribute="centerY" secondItem="WXK-no-Mi5" secondAttribute="centerY" id="XyF-1R-3bO"/>
+                                <constraint firstItem="g30-Mi-n9I" firstAttribute="leading" secondItem="WXK-no-Mi5" secondAttribute="trailing" constant="8" id="h56-2W-yP1"/>
+                                <constraint firstItem="xO8-Ah-ElR" firstAttribute="top" secondItem="x6Z-7B-NEU" secondAttribute="top" constant="24" id="qTx-Lb-uSd"/>
+                                <constraint firstAttribute="trailing" secondItem="g30-Mi-n9I" secondAttribute="trailing" constant="24" id="wMW-pB-IQi"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="Mam-Rg-lyk" firstAttribute="top" secondItem="TY5-yF-SZr" secondAttribute="top" id="2aH-lO-mJH"/>
+                        <constraint firstItem="x6Z-7B-NEU" firstAttribute="top" secondItem="TY5-yF-SZr" secondAttribute="top" id="6PB-kp-GCY"/>
+                        <constraint firstAttribute="trailing" secondItem="x6Z-7B-NEU" secondAttribute="trailing" id="8Zq-Xa-OF6"/>
+                        <constraint firstItem="Mam-Rg-lyk" firstAttribute="leading" secondItem="TY5-yF-SZr" secondAttribute="leading" id="LpO-UU-jOj"/>
+                        <constraint firstAttribute="bottom" secondItem="Mam-Rg-lyk" secondAttribute="bottom" id="OiL-7G-Wpm"/>
+                        <constraint firstAttribute="bottom" secondItem="x6Z-7B-NEU" secondAttribute="bottom" id="ZXH-r9-ztm"/>
+                        <constraint firstItem="x6Z-7B-NEU" firstAttribute="leading" secondItem="Mam-Rg-lyk" secondAttribute="trailing" id="yqF-ba-xjq"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="TY5-yF-SZr" secondAttribute="trailing" id="E5h-4B-547"/>
+                <constraint firstAttribute="bottom" secondItem="TY5-yF-SZr" secondAttribute="bottom" id="dkB-0I-fNV"/>
+                <constraint firstItem="TY5-yF-SZr" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="nV8-Tz-UoP"/>
+                <constraint firstItem="TY5-yF-SZr" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="yRv-vR-ljy"/>
+            </constraints>
+            <point key="canvasLocation" x="138" y="207"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="arrow_down_sel" width="16" height="16"/>
+        <image name="arrow_right_sel" width="16" height="16"/>
+        <image name="icon_pdfToOffice" width="1278" height="720"/>
+    </resources>
+</document>

+ 86 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideNameItemView.swift

@@ -0,0 +1,86 @@
+//
+//  KMFunctionGuideNameItemView.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/8.
+//
+
+import Cocoa
+
+class KMFunctionGuideNameItemView: NSView, NibLoadable {
+    
+    @IBOutlet weak var contendView: NSView!
+    @IBOutlet weak var iconImg: NSImageView!
+    @IBOutlet weak var nameLabel: NSTextField!
+    
+    var _infoDict = NSDictionary()
+    var _isSelected = false
+    
+    var clickHandle: ((_ view: KMFunctionGuideNameItemView)->Void)?
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+     
+        self.setUp()
+    }
+    
+    func setUp() {
+        self.contendView.wantsLayer = true
+        self.contendView.layer?.cornerRadius = 4
+        self.contendView.layer?.masksToBounds = true
+        
+        self.nameLabel.font = NSFont.SFProTextSemiboldFont(14)
+        self.updateViewColor()
+    }
+    
+    func updateViewColor() {
+        if KMAppearance.isDarkMode() {
+            self.nameLabel.textColor = NSColor(red: 200/255, green: 201/255, blue: 204/255, alpha: 1)
+            self.contendView.layer?.backgroundColor = NSColor.clear.cgColor
+            self.iconImg.image = NSImage(named: "whatNewItemNormal")
+        } else {
+            self.nameLabel.textColor = NSColor(red: 66/255, green: 70/255, blue: 77/255, alpha: 1)
+            self.contendView.layer?.backgroundColor =  NSColor.clear.cgColor
+            self.iconImg.image = NSImage(named: "whatNewItemNormal")
+        }
+    }
+    
+    
+    //MARK: Setter
+    var infoDict: NSDictionary {
+        set {
+            _infoDict = newValue
+            
+            self.nameLabel.stringValue = NSLocalizedString(self.infoDict["name"] as! String, comment: "")
+        }
+        get {
+            return _infoDict
+        }
+    }
+    
+    var isSelected: Bool {
+        set {
+            _isSelected = newValue
+            
+            self.updateViewColor()
+        }
+        get {
+            return _isSelected
+        }
+    }
+    
+    //MARK: IBAction
+    @IBAction func clickAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self)
+    }
+    
+}

+ 76 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideNameItemView.xib

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMFunctionGuideNameItemView" customModule="PDF_Master" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="240" height="32"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="8fJ-u7-N92">
+                    <rect key="frame" x="0.0" y="0.0" width="240" height="32"/>
+                    <subviews>
+                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ja0-Hq-s7s">
+                            <rect key="frame" x="4" y="10" width="12" height="12"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="12" id="DEp-WD-8eh"/>
+                                <constraint firstAttribute="width" constant="12" id="IKu-Ol-B53"/>
+                            </constraints>
+                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="vip-2" id="wY9-n8-eAc"/>
+                        </imageView>
+                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8s2-V7-Y87">
+                            <rect key="frame" x="18" y="10" width="224" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="7Qg-Iu-Cge">
+                                <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="tUi-Ed-UXT">
+                            <rect key="frame" x="0.0" y="0.0" width="240" height="32"/>
+                            <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="Qla-gw-aLO">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="clickAction:" target="c22-O7-iKe" id="uXV-Rj-Em2"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="tUi-Ed-UXT" secondAttribute="trailing" id="4jX-OV-BfL"/>
+                        <constraint firstAttribute="bottom" secondItem="tUi-Ed-UXT" secondAttribute="bottom" id="62P-nc-BZA"/>
+                        <constraint firstItem="8s2-V7-Y87" firstAttribute="centerY" secondItem="8fJ-u7-N92" secondAttribute="centerY" constant="-2" id="IA5-am-8b0"/>
+                        <constraint firstAttribute="trailing" secondItem="8s2-V7-Y87" secondAttribute="trailing" id="NBx-Ul-nZj"/>
+                        <constraint firstItem="tUi-Ed-UXT" firstAttribute="leading" secondItem="8fJ-u7-N92" secondAttribute="leading" id="Q1M-7F-ls8"/>
+                        <constraint firstItem="ja0-Hq-s7s" firstAttribute="leading" secondItem="8fJ-u7-N92" secondAttribute="leading" constant="4" id="gpD-vf-rRd"/>
+                        <constraint firstItem="ja0-Hq-s7s" firstAttribute="centerY" secondItem="8fJ-u7-N92" secondAttribute="centerY" id="qzV-uw-4X1"/>
+                        <constraint firstItem="tUi-Ed-UXT" firstAttribute="top" secondItem="8fJ-u7-N92" secondAttribute="top" id="tuC-v7-BCC"/>
+                        <constraint firstItem="8s2-V7-Y87" firstAttribute="leading" secondItem="ja0-Hq-s7s" secondAttribute="trailing" constant="4" id="yAk-iJ-oIW"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="8fJ-u7-N92" secondAttribute="trailing" id="S2j-6A-Rdk"/>
+                <constraint firstItem="8fJ-u7-N92" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="SSd-A5-tdw"/>
+                <constraint firstAttribute="bottom" secondItem="8fJ-u7-N92" secondAttribute="bottom" id="ml6-Fw-LyT"/>
+                <constraint firstItem="8fJ-u7-N92" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="nSn-rL-ygo"/>
+            </constraints>
+            <connections>
+                <outlet property="contendView" destination="8fJ-u7-N92" id="4V3-aL-U4S"/>
+                <outlet property="iconImg" destination="ja0-Hq-s7s" id="JPJ-yW-UAq"/>
+                <outlet property="nameLabel" destination="8s2-V7-Y87" id="Q3C-yf-pyL"/>
+            </connections>
+            <point key="canvasLocation" x="136" y="18"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="vip-2" width="12" height="12"/>
+    </resources>
+</document>

+ 17 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideSingleController.swift

@@ -0,0 +1,17 @@
+//
+//  KMFunctionGuideSingleController.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/6.
+//
+
+import Cocoa
+
+class KMFunctionGuideSingleController: NSViewController {
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+    
+}

+ 32 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMFunctionGuideSingleController.xib

@@ -0,0 +1,32 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMFunctionGuideSingleController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <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="540" height="230"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="C0G-oZ-Apm">
+                    <rect key="frame" x="118" y="122" width="58" height="32"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                    <buttonCell key="cell" type="push" title="1111" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Fha-jw-GNc">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                </button>
+            </subviews>
+            <point key="canvasLocation" x="133" y="93"/>
+        </customView>
+    </objects>
+</document>

+ 30 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMGuideCoverView.swift

@@ -0,0 +1,30 @@
+//
+//  KMGuideCoverView.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/8.
+//
+
+import Cocoa
+
+class KMGuideCoverView: NSView, NibLoadable {
+
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+        
+        guard let context = NSGraphicsContext.current?.cgContext else {
+            return
+        }
+        NSColor(red: 1, green: 1, blue: 1, alpha: 0.01).set()
+        context.addRect(dirtyRect)
+        context.fillPath()
+        context.setBlendMode(.clear)
+        context.fillPath()
+    }
+    
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+    }
+}

+ 18 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/KMGuideCoverView.xib

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

+ 176 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.swift

@@ -0,0 +1,176 @@
+//
+//  KMOpenFileGuidePanel.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/8.
+//
+
+import Cocoa
+
+class KMOpenFileGuidePanel: NSView, NibLoadable {
+    
+    @IBOutlet weak var contendView: NSView!
+    
+    @IBOutlet weak var bigCircleView: NSView!
+    @IBOutlet weak var smallCircleView: NSView!
+    
+    @IBOutlet weak var shadowView: NSView!
+    @IBOutlet weak var infoContendView: NSView!
+    @IBOutlet weak var tipTitleLabel: NSTextField!
+    @IBOutlet weak var tipSubTitleLabel: NSTextField!
+    @IBOutlet weak var skipButton: HyperLinkButton!
+    @IBOutlet weak var stepLabel: NSTextField!
+    @IBOutlet weak var nextBox: KMBox!
+    @IBOutlet weak var nextLabel: NSTextField!
+    @IBOutlet weak var nextButton: KMButton!
+    
+    @IBOutlet weak var circleLeftConst: NSLayoutConstraint!
+    
+    @objc var _circleRect: CGRect = .zero
+    var clickHandle: ((_ view: KMOpenFileGuidePanel, _ actionType: KMGuideActionType)->Void)?
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self.bigCircleView.wantsLayer = true
+        self.bigCircleView.layer?.cornerRadius = CGRectGetWidth(self.bigCircleView.frame)/2
+        self.bigCircleView.layer?.borderWidth = 3
+        
+        self.smallCircleView.wantsLayer = true
+        self.smallCircleView.layer?.cornerRadius = CGRectGetWidth(self.smallCircleView.frame)/2
+        self.smallCircleView.layer?.borderWidth = 3
+        
+        self.infoContendView.wantsLayer = true
+        self.infoContendView.layer?.borderWidth = 2
+        self.infoContendView.layer?.cornerRadius = 8
+        self.infoContendView.layer?.masksToBounds = true
+        
+        self.tipTitleLabel.stringValue = NSLocalizedString("Show/Hide Panel", comment: "")
+        self.tipSubTitleLabel.stringValue = NSLocalizedString("Click “Panel” to expand and collapse the left navigation panel.", comment: "")
+        self.skipButton.title = NSLocalizedString("Skip", comment: "")
+        self.stepLabel.stringValue = NSLocalizedString("1/3", comment: "")
+        self.nextLabel.stringValue = NSLocalizedString("Next", comment: "")
+        
+        self.nextBox.borderWidth = 1
+        self.nextBox.cornerRadius = 2
+        
+        self.skipButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H1())
+                } else {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+                }
+            } else {
+                if mouseEntered {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_M())
+                } else {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+                }
+            }
+        }
+        self.nextButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.nextBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.5)
+                } else {
+                    self?.nextBox.borderColor = NSColor.clear
+                }
+            } else {
+                if mouseEntered {
+                    self?.nextBox.borderColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 1)
+                } else {
+                    self?.nextBox.borderColor = NSColor.clear
+                }
+            }
+        }
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+        
+        self.shadowView.wantsLayer = true
+        self.shadowView.layer?.borderWidth = 0
+        self.shadowView.layer?.shadowColor = NSColor.black.withAlphaComponent(0.55).cgColor
+        self.shadowView.layer?.shadowOpacity = 0.1
+        self.shadowView.layer?.shadowRadius = 3.0
+        let shadowPath = NSBezierPath(rect: self.shadowView.bounds)
+        if #available(macOS 14.0, *) {
+            self.shadowView.layer?.shadowPath = shadowPath.cgPath
+        }
+    }
+    
+    @objc var circleRect: CGRect {
+        set {
+            _circleRect = newValue;
+        }
+        get {
+            return _circleRect;
+        }
+    }
+    
+    func updateViewColor() {
+        
+        self.circleLeftConst.constant = CGRectGetMinX(self.circleRect) - CGRectGetWidth(self.bigCircleView.frame)/2 + CGRectGetWidth(self.circleRect)/2
+
+        if KMAppearance.isDarkMode() {
+            self.infoContendView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1).cgColor
+            self.infoContendView.layer?.backgroundColor = NSColor.black.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+            self.stepLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.nextLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.nextBox.borderColor = NSColor.clear
+            self.nextBox.fillColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+            self.bigCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            
+        } else {
+            self.infoContendView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1).cgColor
+            self.infoContendView.layer?.backgroundColor = NSColor.white.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H0()
+            self.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+            self.stepLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.nextBox.borderColor = NSColor.clear
+            self.nextBox.fillColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 0.1)
+            self.nextLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.bigCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            
+        }
+        
+    }
+    
+    //MARK: IBAction
+    @IBAction func nextAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .next)
+    }
+    
+    @IBAction func skipAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .skip)
+    }
+    
+    @objc func themeChange() {
+        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+            self.updateViewColor()
+        }
+    }
+    
+}

+ 173 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuidePanel.xib

@@ -0,0 +1,173 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMOpenFileGuidePanel" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="542" height="333"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="J1s-e6-GWs">
+                    <rect key="frame" x="0.0" y="0.0" width="542" height="333"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="pdf-Yo-pxP">
+                            <rect key="frame" x="100" y="283" width="50" height="50"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="L50-i6-Z80">
+                                    <rect key="frame" x="5" y="5" width="40" height="40"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="EbD-5M-Vpf"/>
+                                        <constraint firstAttribute="width" constant="40" id="rua-BZ-UPL"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="50" id="RVg-X8-DIX"/>
+                                <constraint firstItem="L50-i6-Z80" firstAttribute="centerX" secondItem="pdf-Yo-pxP" secondAttribute="centerX" id="S9n-27-Se3"/>
+                                <constraint firstItem="L50-i6-Z80" firstAttribute="centerY" secondItem="pdf-Yo-pxP" secondAttribute="centerY" id="YcU-Wm-EKV"/>
+                                <constraint firstAttribute="height" constant="50" id="ghR-bs-wzD"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="jpN-zk-9b9">
+                            <rect key="frame" x="160" y="167" width="300" height="126"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="BGa-9j-knl">
+                            <rect key="frame" x="160" y="167" width="300" height="126"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XuT-rk-OKd">
+                                    <rect key="frame" x="18" y="89" width="96" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="bQD-mi-PfW">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hq2-Z8-o0q">
+                                    <rect key="frame" x="18" y="64" width="264" height="17"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="260" id="API-DT-rIn"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="aKE-EE-gbo">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <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="1Vr-wV-SBn" customClass="HyperLinkButton">
+                                    <rect key="frame" x="20" y="24" width="31" height="16"/>
+                                    <buttonCell key="cell" type="bevel" title="Skip" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="pZd-Hn-tkd">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <connections>
+                                        <action selector="skipAction:" target="c22-O7-iKe" id="Rxg-Or-Stv"/>
+                                    </connections>
+                                </button>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ahi-EE-anV">
+                                    <rect key="frame" x="197" y="24" width="23" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="1/2" id="Gfa-94-JPZ">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <box boxType="custom" borderType="line" cornerRadius="2" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="IbE-FE-DVm" customClass="KMBox">
+                                    <rect key="frame" x="226" y="20" width="54" height="24"/>
+                                    <view key="contentView" id="hkS-QN-7FN">
+                                        <rect key="frame" x="1" y="1" width="52" height="22"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dS4-QB-AVz">
+                                                <rect key="frame" x="7" y="3" width="39" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Next" id="0kS-UO-rTq">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Rcg-Wi-UML" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="52" height="22"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="Wdi-PP-b3A">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="nextAction:" target="c22-O7-iKe" id="nbq-Rs-ckv"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="dS4-QB-AVz" firstAttribute="centerX" secondItem="hkS-QN-7FN" secondAttribute="centerX" id="Ax8-3G-yuF"/>
+                                            <constraint firstAttribute="bottom" secondItem="Rcg-Wi-UML" secondAttribute="bottom" id="Cx3-1F-GsA"/>
+                                            <constraint firstAttribute="trailing" secondItem="Rcg-Wi-UML" secondAttribute="trailing" id="HqZ-d4-SHe"/>
+                                            <constraint firstItem="Rcg-Wi-UML" firstAttribute="leading" secondItem="hkS-QN-7FN" secondAttribute="leading" id="MNY-iQ-G8z"/>
+                                            <constraint firstItem="Rcg-Wi-UML" firstAttribute="top" secondItem="hkS-QN-7FN" secondAttribute="top" id="MVE-Kq-KzI"/>
+                                            <constraint firstItem="dS4-QB-AVz" firstAttribute="centerY" secondItem="hkS-QN-7FN" secondAttribute="centerY" id="mnH-OO-Q8j"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="9bR-L0-BhX"/>
+                                        <constraint firstAttribute="width" constant="54" id="co4-Mu-cbc"/>
+                                    </constraints>
+                                    <font key="titleFont" metaFont="smallSystem"/>
+                                </box>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="trailing" secondItem="IbE-FE-DVm" secondAttribute="trailing" constant="20" id="2Hv-5b-Oh5"/>
+                                <constraint firstAttribute="bottom" secondItem="IbE-FE-DVm" secondAttribute="bottom" constant="20" id="7Dc-cf-D3k"/>
+                                <constraint firstAttribute="width" constant="300" id="Jtp-Hj-hbh"/>
+                                <constraint firstItem="IbE-FE-DVm" firstAttribute="centerY" secondItem="Ahi-EE-anV" secondAttribute="centerY" id="Lla-zK-l9P"/>
+                                <constraint firstItem="1Vr-wV-SBn" firstAttribute="leading" secondItem="BGa-9j-knl" secondAttribute="leading" constant="20" id="bHy-pu-zBA"/>
+                                <constraint firstItem="hq2-Z8-o0q" firstAttribute="top" secondItem="XuT-rk-OKd" secondAttribute="bottom" constant="8" id="eMl-Dg-MkC"/>
+                                <constraint firstItem="XuT-rk-OKd" firstAttribute="leading" secondItem="BGa-9j-knl" secondAttribute="leading" constant="20" id="gg0-uO-GDc"/>
+                                <constraint firstItem="IbE-FE-DVm" firstAttribute="leading" secondItem="Ahi-EE-anV" secondAttribute="trailing" constant="8" id="gmE-sk-xUi"/>
+                                <constraint firstItem="IbE-FE-DVm" firstAttribute="top" secondItem="hq2-Z8-o0q" secondAttribute="bottom" constant="20" id="n8w-5I-kN2"/>
+                                <constraint firstItem="Ahi-EE-anV" firstAttribute="centerY" secondItem="1Vr-wV-SBn" secondAttribute="centerY" id="oWE-c2-ulj"/>
+                                <constraint firstItem="XuT-rk-OKd" firstAttribute="top" secondItem="BGa-9j-knl" secondAttribute="top" constant="20" id="oWN-fi-xCw"/>
+                                <constraint firstItem="hq2-Z8-o0q" firstAttribute="leading" secondItem="BGa-9j-knl" secondAttribute="leading" constant="20" id="u9E-ir-MFW"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="jpN-zk-9b9" firstAttribute="trailing" secondItem="BGa-9j-knl" secondAttribute="trailing" id="24f-4v-Liu"/>
+                        <constraint firstItem="jpN-zk-9b9" firstAttribute="top" secondItem="BGa-9j-knl" secondAttribute="top" id="Fpj-3k-q9J"/>
+                        <constraint firstItem="pdf-Yo-pxP" firstAttribute="top" secondItem="J1s-e6-GWs" secondAttribute="top" id="KVy-Lq-MgU"/>
+                        <constraint firstItem="BGa-9j-knl" firstAttribute="top" secondItem="J1s-e6-GWs" secondAttribute="top" constant="40" id="Qt5-3g-IN8"/>
+                        <constraint firstItem="BGa-9j-knl" firstAttribute="leading" secondItem="pdf-Yo-pxP" secondAttribute="trailing" constant="10" id="TMg-PA-ii5"/>
+                        <constraint firstItem="jpN-zk-9b9" firstAttribute="leading" secondItem="BGa-9j-knl" secondAttribute="leading" id="iNe-Mb-sY5"/>
+                        <constraint firstItem="jpN-zk-9b9" firstAttribute="bottom" secondItem="BGa-9j-knl" secondAttribute="bottom" id="kCy-bV-f2c"/>
+                        <constraint firstItem="pdf-Yo-pxP" firstAttribute="leading" secondItem="J1s-e6-GWs" secondAttribute="leading" constant="100" id="qFO-ME-JoK"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="J1s-e6-GWs" secondAttribute="bottom" id="67p-Hu-hJm"/>
+                <constraint firstItem="J1s-e6-GWs" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="9lK-JA-8cn"/>
+                <constraint firstAttribute="trailing" secondItem="J1s-e6-GWs" secondAttribute="trailing" id="HxV-zh-40s"/>
+                <constraint firstItem="J1s-e6-GWs" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="jtL-2F-f2Y"/>
+            </constraints>
+            <connections>
+                <outlet property="bigCircleView" destination="pdf-Yo-pxP" id="rZQ-h3-C0M"/>
+                <outlet property="circleLeftConst" destination="qFO-ME-JoK" id="L4q-0H-NSU"/>
+                <outlet property="contendView" destination="J1s-e6-GWs" id="m6G-MW-W9O"/>
+                <outlet property="infoContendView" destination="BGa-9j-knl" id="mJ1-Lu-Lrx"/>
+                <outlet property="nextBox" destination="IbE-FE-DVm" id="liu-gQ-ZQX"/>
+                <outlet property="nextButton" destination="Rcg-Wi-UML" id="sj8-F9-mkE"/>
+                <outlet property="nextLabel" destination="dS4-QB-AVz" id="3vH-90-QIy"/>
+                <outlet property="shadowView" destination="jpN-zk-9b9" id="2cy-Z1-BFZ"/>
+                <outlet property="skipButton" destination="1Vr-wV-SBn" id="v4P-9V-GfJ"/>
+                <outlet property="smallCircleView" destination="L50-i6-Z80" id="JvL-G7-Lla"/>
+                <outlet property="stepLabel" destination="Ahi-EE-anV" id="pal-WD-0nJ"/>
+                <outlet property="tipSubTitleLabel" destination="hq2-Z8-o0q" id="y6b-A6-5Oz"/>
+                <outlet property="tipTitleLabel" destination="XuT-rk-OKd" id="pDY-XC-Xoe"/>
+            </connections>
+            <point key="canvasLocation" x="146" y="144.5"/>
+        </customView>
+    </objects>
+</document>

+ 215 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideProperty.swift

@@ -0,0 +1,215 @@
+//
+//  KMOpenFileGuideProperty.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/8.
+//
+
+import Cocoa
+
+class KMOpenFileGuideProperty: NSView, NibLoadable {
+
+    @IBOutlet weak var contendView: NSView!
+    @IBOutlet weak var shadowView: NSView!
+    
+    @IBOutlet weak var bigCircleView: NSView!
+    @IBOutlet weak var smallCircleView: NSView!
+    @IBOutlet weak var circleLeftConst: NSLayoutConstraint!
+    
+    @IBOutlet weak var tipInfoView: NSView!
+    @IBOutlet weak var tipTitleLabel: NSTextField!
+    @IBOutlet weak var tipSubTitleLabel: NSTextField!
+    @IBOutlet weak var skipButton: HyperLinkButton!
+    @IBOutlet weak var stepLabel: NSTextField!
+    @IBOutlet weak var previousBox: KMBox!
+    @IBOutlet weak var previouseLabel: NSTextField!
+    @IBOutlet weak var previousButton: KMButton!
+    @IBOutlet weak var nextBox: KMBox!
+    @IBOutlet weak var nextLabel: NSTextField!
+    @IBOutlet weak var nextButton: KMButton!
+    
+    var circleRect: CGRect = .zero
+    var clickHandle: ((_ view: KMOpenFileGuideProperty, _ actionType: KMGuideActionType)->Void)?
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        
+        self.bigCircleView.wantsLayer = true
+        self.bigCircleView.layer?.cornerRadius = CGRectGetWidth(self.bigCircleView.frame)/2
+        self.bigCircleView.layer?.borderWidth = 3
+        
+        self.smallCircleView.wantsLayer = true
+        self.smallCircleView.layer?.cornerRadius = CGRectGetWidth(self.smallCircleView.frame)/2
+        self.smallCircleView.layer?.borderWidth = 3
+        
+        self.tipInfoView.wantsLayer = true
+        self.tipInfoView.layer?.borderWidth = 2
+        self.tipInfoView.layer?.cornerRadius = 8
+        self.tipInfoView.layer?.masksToBounds = true
+        
+        self.tipTitleLabel.stringValue = NSLocalizedString("Show/Hide Properties", comment: "")
+        self.tipSubTitleLabel.stringValue = NSLocalizedString("Click “Properties” to expand and collapse the right properties panel.", comment: "")
+        self.skipButton.title = NSLocalizedString("Skip", comment: "")
+        self.previouseLabel.stringValue = NSLocalizedString("Previous", comment: "")
+        self.stepLabel.stringValue = NSLocalizedString("2/3", comment: "")
+        self.nextLabel.stringValue = NSLocalizedString("Next", comment: "")
+        
+        self.previousBox.borderWidth = 1
+        self.previousBox.cornerRadius = 2
+        self.previousBox.fillColor = NSColor.clear
+        
+        self.nextBox.borderWidth = 1
+        self.nextBox.cornerRadius = 2
+        self.nextBox.fillColor = NSColor.clear
+        
+        
+        self.skipButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H1())
+                } else {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+                }
+            } else {
+                if mouseEntered {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_M())
+                } else {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+                }
+            }
+        }
+        
+        self.previousButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.previousBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.5)
+                } else {
+                    self?.previousBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+                }
+            } else {
+                if mouseEntered {
+                    self?.previousBox.borderColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 1)
+                } else {
+                    self?.previousBox.borderColor = NSColor(red: 0, green: 0, blue: 0, alpha: 0.15)
+                }
+            }
+        }
+        
+        self.nextButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.nextBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.5)
+                } else {
+                    self?.nextBox.borderColor = NSColor.clear
+                }
+            } else {
+                if mouseEntered {
+                    self?.nextBox.borderColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 1)
+                } else {
+                    self?.nextBox.borderColor = NSColor.clear
+                }
+            }
+        }
+        
+        self.shadowView.wantsLayer = true
+        self.shadowView.layer?.borderWidth = 0
+        self.shadowView.layer?.shadowColor = NSColor.black.withAlphaComponent(0.55).cgColor
+        self.shadowView.layer?.shadowOpacity = 0.1
+        self.shadowView.layer?.shadowRadius = 3.0
+        let shadowPath = NSBezierPath(rect: self.shadowView.bounds)
+        if #available(macOS 14.0, *) {
+            self.shadowView.layer?.shadowPath = shadowPath.cgPath
+        }
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+    }
+    
+    func updateViewColor() {
+        if self.circleRect.origin.x > 500 {
+            self.circleLeftConst.constant = CGRectGetMinX(self.circleRect) - CGRectGetWidth(self.bigCircleView.frame)/2 + CGRectGetWidth(self.circleRect)/2
+        } else {
+            if self.window != nil {
+                self.circleLeftConst.constant = CGRectGetWidth(self.window!.frame) - 50
+            }
+        }
+
+        if KMAppearance.isDarkMode() {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.black.cgColor
+            
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+            self.stepLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.previouseLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.nextLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            
+            self.previousBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+            self.previousBox.fillColor = NSColor.clear
+            self.nextBox.borderColor = NSColor.clear
+            self.nextBox.fillColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+
+            self.bigCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            
+        } else {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.white.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H0()
+            self.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+            self.stepLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.previouseLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.nextLabel.textColor = KMAppearance.KMColor_Layout_M()
+            
+            self.previousBox.borderColor = NSColor(red: 0, green: 0, blue: 0, alpha: 0.15)
+            self.previousBox.fillColor = NSColor.clear
+            self.nextBox.borderColor = NSColor.clear
+            self.nextBox.fillColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 0.1)
+            
+            self.smallCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            self.bigCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+        }
+    }
+    
+    //MARK: IBAction
+    @IBAction func skipAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .skip)
+    }
+    
+    @IBAction func previouseAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .previous)
+    }
+    
+    @IBAction func nextAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .next)
+    }
+    
+    @objc func themeChange() {
+       DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+           self.updateViewColor()
+       }
+   }
+    
+}

+ 216 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideProperty.xib

@@ -0,0 +1,216 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMOpenFileGuideProperty" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="585" height="366"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="9Rh-1h-Oif">
+                    <rect key="frame" x="0.0" y="0.0" width="585" height="366"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="eRC-CW-Z7U">
+                            <rect key="frame" x="535" y="316" width="50" height="50"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="7BU-0Y-uxe">
+                                    <rect key="frame" x="5" y="5" width="40" height="40"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="40" id="PZ7-DK-xlB"/>
+                                        <constraint firstAttribute="height" constant="40" id="Wac-i2-RKa"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="7BU-0Y-uxe" firstAttribute="centerX" secondItem="eRC-CW-Z7U" secondAttribute="centerX" id="2a8-zN-437"/>
+                                <constraint firstAttribute="width" constant="50" id="3gh-81-hiS"/>
+                                <constraint firstItem="7BU-0Y-uxe" firstAttribute="centerY" secondItem="eRC-CW-Z7U" secondAttribute="centerY" id="CeL-MZ-tEC"/>
+                                <constraint firstAttribute="height" constant="50" id="DJC-Zp-hMr"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="PYv-yj-Jk2">
+                            <rect key="frame" x="230" y="200" width="300" height="126"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="G9k-gU-ce4">
+                            <rect key="frame" x="230" y="200" width="300" height="126"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GUf-lx-Ty8">
+                                    <rect key="frame" x="18" y="89" width="96" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="nyk-cb-tPT">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="O9S-9u-GZn">
+                                    <rect key="frame" x="18" y="64" width="264" height="17"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="260" id="W1S-I5-DiD"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="lww-1f-FTS">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <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="46r-va-mAx" customClass="HyperLinkButton">
+                                    <rect key="frame" x="20" y="24" width="31" height="16"/>
+                                    <buttonCell key="cell" type="bevel" title="Skip" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="YCH-1c-XwV">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <connections>
+                                        <action selector="skipAction:" target="c22-O7-iKe" id="9Qo-Mb-dNH"/>
+                                    </connections>
+                                </button>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DIY-5j-4dH">
+                                    <rect key="frame" x="197" y="24" width="23" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="1/2" id="Cy3-Wf-WZh">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <box boxType="custom" borderType="line" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="YQ0-n2-Zra" customClass="KMBox">
+                                    <rect key="frame" x="117" y="20" width="74" height="24"/>
+                                    <view key="contentView" id="9lN-rw-8FM">
+                                        <rect key="frame" x="1" y="1" width="72" height="22"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dnE-ZA-fh9">
+                                                <rect key="frame" x="4" y="3" width="65" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Previous" id="se1-1P-MCA">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="E20-c9-JNo" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="72" height="22"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="y1b-Mz-GlH">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="previouseAction:" target="c22-O7-iKe" id="GrJ-9D-PPy"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstAttribute="bottom" secondItem="E20-c9-JNo" secondAttribute="bottom" id="Bpy-Cv-V8b"/>
+                                            <constraint firstItem="E20-c9-JNo" firstAttribute="top" secondItem="9lN-rw-8FM" secondAttribute="top" id="RnW-qU-ubC"/>
+                                            <constraint firstItem="dnE-ZA-fh9" firstAttribute="centerY" secondItem="9lN-rw-8FM" secondAttribute="centerY" id="eOP-vz-7yS"/>
+                                            <constraint firstItem="E20-c9-JNo" firstAttribute="leading" secondItem="9lN-rw-8FM" secondAttribute="leading" id="oIG-tD-fuw"/>
+                                            <constraint firstAttribute="trailing" secondItem="E20-c9-JNo" secondAttribute="trailing" id="peT-yy-dFe"/>
+                                            <constraint firstItem="dnE-ZA-fh9" firstAttribute="centerX" secondItem="9lN-rw-8FM" secondAttribute="centerX" id="tIL-I1-W4F"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="ari-AZ-ZZ8"/>
+                                        <constraint firstAttribute="width" constant="74" id="dLd-dV-ZBI"/>
+                                    </constraints>
+                                </box>
+                                <box boxType="custom" borderType="line" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="PQF-KT-kWh" customClass="KMBox">
+                                    <rect key="frame" x="226" y="20" width="54" height="24"/>
+                                    <view key="contentView" id="OXW-b3-sa7">
+                                        <rect key="frame" x="1" y="1" width="52" height="22"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NtF-H4-qAB">
+                                                <rect key="frame" x="7" y="3" width="39" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Next" id="rnr-FO-ukU">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9zr-OX-UJ0" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="52" height="22"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="25f-OL-Gbl">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="nextAction:" target="c22-O7-iKe" id="FQh-KO-LKa"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="9zr-OX-UJ0" firstAttribute="leading" secondItem="OXW-b3-sa7" secondAttribute="leading" id="BKi-UD-KSI"/>
+                                            <constraint firstAttribute="trailing" secondItem="9zr-OX-UJ0" secondAttribute="trailing" id="EHW-7J-wD5"/>
+                                            <constraint firstItem="NtF-H4-qAB" firstAttribute="centerY" secondItem="OXW-b3-sa7" secondAttribute="centerY" id="QTV-zo-bnw"/>
+                                            <constraint firstItem="NtF-H4-qAB" firstAttribute="centerX" secondItem="OXW-b3-sa7" secondAttribute="centerX" id="nxt-VH-bWB"/>
+                                            <constraint firstItem="9zr-OX-UJ0" firstAttribute="top" secondItem="OXW-b3-sa7" secondAttribute="top" id="rD0-5T-Rjf"/>
+                                            <constraint firstAttribute="bottom" secondItem="9zr-OX-UJ0" secondAttribute="bottom" id="vAc-In-UNa"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="MSx-3z-e6j"/>
+                                        <constraint firstAttribute="width" constant="54" id="n87-Dv-RwE"/>
+                                    </constraints>
+                                </box>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="YQ0-n2-Zra" firstAttribute="centerY" secondItem="46r-va-mAx" secondAttribute="centerY" id="GNJ-y4-5iW"/>
+                                <constraint firstItem="DIY-5j-4dH" firstAttribute="leading" secondItem="YQ0-n2-Zra" secondAttribute="trailing" constant="8" id="K2c-fc-7Qb"/>
+                                <constraint firstItem="O9S-9u-GZn" firstAttribute="leading" secondItem="G9k-gU-ce4" secondAttribute="leading" constant="20" id="KvQ-8I-Lal"/>
+                                <constraint firstItem="O9S-9u-GZn" firstAttribute="top" secondItem="GUf-lx-Ty8" secondAttribute="bottom" constant="8" id="NJJ-UA-8Ep"/>
+                                <constraint firstItem="PQF-KT-kWh" firstAttribute="centerY" secondItem="YQ0-n2-Zra" secondAttribute="centerY" id="Nv8-t1-cI2"/>
+                                <constraint firstItem="GUf-lx-Ty8" firstAttribute="top" secondItem="G9k-gU-ce4" secondAttribute="top" constant="20" id="Qsl-NY-esd"/>
+                                <constraint firstAttribute="bottom" secondItem="PQF-KT-kWh" secondAttribute="bottom" constant="20" id="QuP-zy-cbp"/>
+                                <constraint firstAttribute="width" constant="300" id="VRI-At-Vz9"/>
+                                <constraint firstAttribute="trailing" secondItem="PQF-KT-kWh" secondAttribute="trailing" constant="20" id="Wl8-F5-Omp"/>
+                                <constraint firstItem="GUf-lx-Ty8" firstAttribute="leading" secondItem="G9k-gU-ce4" secondAttribute="leading" constant="20" id="deG-X8-3S3"/>
+                                <constraint firstItem="PQF-KT-kWh" firstAttribute="centerY" secondItem="DIY-5j-4dH" secondAttribute="centerY" id="e4k-mL-Wcj"/>
+                                <constraint firstItem="PQF-KT-kWh" firstAttribute="top" secondItem="O9S-9u-GZn" secondAttribute="bottom" constant="20" id="fFg-u9-lg0"/>
+                                <constraint firstItem="46r-va-mAx" firstAttribute="leading" secondItem="G9k-gU-ce4" secondAttribute="leading" constant="20" id="gy7-me-0F5"/>
+                                <constraint firstItem="PQF-KT-kWh" firstAttribute="leading" secondItem="DIY-5j-4dH" secondAttribute="trailing" constant="8" id="ifv-3o-xne"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="G9k-gU-ce4" firstAttribute="top" secondItem="9Rh-1h-Oif" secondAttribute="top" constant="40" id="1B5-S1-w2i"/>
+                        <constraint firstItem="G9k-gU-ce4" firstAttribute="leading" secondItem="PYv-yj-Jk2" secondAttribute="leading" id="KcS-mL-hBZ"/>
+                        <constraint firstItem="G9k-gU-ce4" firstAttribute="top" secondItem="PYv-yj-Jk2" secondAttribute="top" id="aXD-Ld-W5b"/>
+                        <constraint firstItem="eRC-CW-Z7U" firstAttribute="top" secondItem="9Rh-1h-Oif" secondAttribute="top" id="gdo-fo-JWA"/>
+                        <constraint firstItem="G9k-gU-ce4" firstAttribute="trailing" secondItem="PYv-yj-Jk2" secondAttribute="trailing" id="hKP-SQ-fZO"/>
+                        <constraint firstItem="G9k-gU-ce4" firstAttribute="bottom" secondItem="PYv-yj-Jk2" secondAttribute="bottom" id="i2o-bZ-VXh"/>
+                        <constraint firstItem="eRC-CW-Z7U" firstAttribute="leading" secondItem="G9k-gU-ce4" secondAttribute="trailing" constant="5" id="mW3-JD-bO6"/>
+                        <constraint firstItem="eRC-CW-Z7U" firstAttribute="leading" secondItem="9Rh-1h-Oif" secondAttribute="leading" constant="535" id="xOD-Ss-DzL"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="9Rh-1h-Oif" secondAttribute="bottom" id="HFf-ND-nQr"/>
+                <constraint firstAttribute="trailing" secondItem="9Rh-1h-Oif" secondAttribute="trailing" id="QAc-bm-gu4"/>
+                <constraint firstItem="9Rh-1h-Oif" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="nk7-Dm-Zu3"/>
+                <constraint firstItem="9Rh-1h-Oif" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="zMk-Vv-n7X"/>
+            </constraints>
+            <connections>
+                <outlet property="bigCircleView" destination="eRC-CW-Z7U" id="IRL-N9-F1B"/>
+                <outlet property="circleLeftConst" destination="xOD-Ss-DzL" id="78Y-Wc-uOv"/>
+                <outlet property="contendView" destination="9Rh-1h-Oif" id="u2Z-ZE-JR0"/>
+                <outlet property="nextBox" destination="PQF-KT-kWh" id="FJA-UL-9CU"/>
+                <outlet property="nextButton" destination="9zr-OX-UJ0" id="awe-hE-dTW"/>
+                <outlet property="nextLabel" destination="NtF-H4-qAB" id="otc-pR-cL4"/>
+                <outlet property="previousBox" destination="YQ0-n2-Zra" id="gPj-dO-F3H"/>
+                <outlet property="previousButton" destination="E20-c9-JNo" id="ylJ-PB-OaB"/>
+                <outlet property="previouseLabel" destination="dnE-ZA-fh9" id="9JS-yH-KWc"/>
+                <outlet property="shadowView" destination="PYv-yj-Jk2" id="FnN-di-jmk"/>
+                <outlet property="skipButton" destination="46r-va-mAx" id="e2g-iw-Mqh"/>
+                <outlet property="smallCircleView" destination="7BU-0Y-uxe" id="Efu-ST-P7i"/>
+                <outlet property="stepLabel" destination="DIY-5j-4dH" id="bQR-Oe-eIj"/>
+                <outlet property="tipInfoView" destination="G9k-gU-ce4" id="GHm-Nv-LJk"/>
+                <outlet property="tipSubTitleLabel" destination="O9S-9u-GZn" id="rdQ-dw-Yfy"/>
+                <outlet property="tipTitleLabel" destination="GUf-lx-Ty8" id="3ka-ne-CXv"/>
+            </connections>
+            <point key="canvasLocation" x="82.5" y="187"/>
+        </customView>
+    </objects>
+</document>

+ 208 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideToolbar.swift

@@ -0,0 +1,208 @@
+//
+//  KMOpenFileGuideToolbar.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/8.
+//
+
+import Cocoa
+
+class KMOpenFileGuideToolbar: NSView, NibLoadable {
+
+    @IBOutlet weak var contendView: NSView!
+    @IBOutlet weak var shadowView: NSView!
+    
+    @IBOutlet weak var bigCircleView: NSView!
+    @IBOutlet weak var smallCircleView: NSView!
+    
+    @IBOutlet weak var tipInfoView: NSView!
+    @IBOutlet weak var tipTitleLabel: NSTextField!
+    @IBOutlet weak var tipSubTitleLabel: NSTextField!
+    @IBOutlet weak var tipImageView: NSImageView!
+    @IBOutlet weak var skipButton: HyperLinkButton!
+    @IBOutlet weak var stepLabel: NSTextField!
+    @IBOutlet weak var previousBox: KMBox!
+    @IBOutlet weak var previousLabel: NSTextField!
+    @IBOutlet weak var previousButton: KMButton!
+    @IBOutlet weak var finishBox: KMBox!
+    @IBOutlet weak var finishLabel: NSTextField!
+    @IBOutlet weak var finishButton: KMButton!
+    
+    
+    
+    
+    var clickHandle: ((_ view: KMOpenFileGuideToolbar, _ actionType: KMGuideActionType)->Void)?
+    
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    deinit {
+        DistributedNotificationCenter.default.removeObserver(self)
+    }
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+        
+        self.bigCircleView.wantsLayer = true
+        self.bigCircleView.layer?.cornerRadius = CGRectGetHeight(self.bigCircleView.frame)/2
+        self.bigCircleView.layer?.borderWidth = 3
+        
+        self.smallCircleView.wantsLayer = true
+        self.smallCircleView.layer?.cornerRadius = CGRectGetHeight(self.smallCircleView.frame)/2
+        self.smallCircleView.layer?.borderWidth = 3
+        
+        self.tipInfoView.wantsLayer = true
+        self.tipInfoView.layer?.borderWidth = 2
+        self.tipInfoView.layer?.cornerRadius = 8
+        self.tipInfoView.layer?.masksToBounds = true
+        
+        self.tipTitleLabel.stringValue = NSLocalizedString("Customize Toolbar", comment: "")
+        self.tipSubTitleLabel.stringValue = NSLocalizedString("Right-click on the toolbar, select “Customize Toolbar“ in drop-down bar. Then reorder, add or remove tools displayed in the toolbar by simple drag and drop.", comment: "")
+        self.skipButton.title = NSLocalizedString("Skip", comment: "")
+        self.previousLabel.stringValue = NSLocalizedString("Previous", comment: "")
+        self.stepLabel.stringValue = NSLocalizedString("3/3", comment: "")
+        self.finishLabel.stringValue = NSLocalizedString("Finish", comment: "")
+        
+        self.previousBox.borderWidth = 1
+        self.previousBox.cornerRadius = 2
+        self.previousBox.fillColor = NSColor.clear
+        
+        self.finishBox.borderWidth = 1
+        self.finishBox.cornerRadius = 2
+        self.finishBox.fillColor = NSColor.clear
+        self.finishBox.borderColor = NSColor.clear
+
+        self.skipButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H1())
+                } else {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+                }
+            } else {
+                if mouseEntered {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_M())
+                } else {
+                    self?.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+                }
+            }
+        }
+        
+        self.previousButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.previousBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.5)
+                } else {
+                    self?.previousBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+                }
+            } else {
+                if mouseEntered {
+                    self?.previousBox.borderColor = NSColor(red: 39/255, green: 60/255, blue: 98/255, alpha: 1)
+                } else {
+                    self?.previousBox.borderColor = NSColor(red: 0, green: 0, blue: 0, alpha: 0.15)
+                }
+            }
+        }
+        
+        self.finishButton.mouseMoveCallback = { [weak self] mouseEntered in
+            if KMAppearance.isDarkMode() {
+                if mouseEntered {
+                    self?.finishBox.fillColor = NSColor(red: 23/255, green: 85/255, blue: 178/255, alpha: 1)
+                } else {
+                    self?.finishBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+                }
+            } else {
+                if mouseEntered {
+                    self?.finishBox.fillColor = NSColor(red: 56/255, green: 100/255, blue: 176/255, alpha: 1)
+                } else {
+                    self?.finishBox.fillColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1)
+                }
+            }
+        }
+        
+        self.shadowView.wantsLayer = true
+        self.shadowView.layer?.borderWidth = 0
+        self.shadowView.layer?.shadowColor = NSColor.black.withAlphaComponent(0.55).cgColor
+        self.shadowView.layer?.shadowOpacity = 0.1
+        self.shadowView.layer?.shadowRadius = 3.0
+        let shadowPath = NSBezierPath(rect: self.shadowView.bounds)
+        if #available(macOS 14.0, *) {
+            self.shadowView.layer?.shadowPath = shadowPath.cgPath
+        }
+        
+        DistributedNotificationCenter.default().addObserver(self, selector: #selector(themeChange), name: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil)
+        self.updateViewColor()
+    }
+    
+    func updateViewColor() {
+        if KMAppearance.isDarkMode() {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.black.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_W0()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+            self.stepLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.previousLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.finishLabel.textColor = NSColor.white
+            self.previousBox.borderColor = NSColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.3)
+            self.previousBox.fillColor = NSColor.clear
+            self.finishBox.fillColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 1)
+            
+            self.bigCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            self.smallCircleView.layer?.borderColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7).cgColor
+            
+        } else {
+            self.tipInfoView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1).cgColor
+            self.tipInfoView.layer?.backgroundColor = NSColor.white.cgColor
+            self.tipTitleLabel.textColor = KMAppearance.KMColor_Layout_M()
+            self.tipSubTitleLabel.textColor = KMAppearance.KMColor_Layout_H0()
+            self.skipButton.setTitleColor(KMAppearance.KMColor_Layout_H0())
+            self.stepLabel.textColor = KMAppearance.KMColor_Layout_H1()
+            self.previousLabel.textColor = KMAppearance.KMColor_Layout_H2()
+            self.previousBox.borderColor = NSColor(red: 0, green: 0, blue: 0, alpha: 0.15)
+            self.previousBox.fillColor = NSColor.clear
+            self.finishBox.fillColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 1)
+            self.finishLabel.textColor = NSColor.white
+            
+            self.smallCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+            self.bigCircleView.layer?.borderColor = NSColor(red: 73/255, green: 130/255, blue: 230/255, alpha: 0.4).cgColor
+        }
+    }
+    
+    //IBAction
+    @IBAction func skipAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .skip)
+        
+    }
+    
+    @IBAction func previousAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .previous)
+        
+    }
+    
+    @IBAction func finishAction(_ sender: Any) {
+        guard let callBack = self.clickHandle else {
+            return
+        }
+        callBack(self, .finish)
+        
+    }
+    
+    @objc func themeChange() {
+       DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.3) {
+           self.updateViewColor()
+       }
+   }
+    
+    
+}

+ 232 - 0
PDF Office/PDF Master/Class/GuideInfo/Controllers/OpenFileGuide/KMOpenFileGuideToolbar.xib

@@ -0,0 +1,232 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe" customClass="KMOpenFileGuideToolbar" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <rect key="frame" x="0.0" y="0.0" width="834" height="600"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="kwO-8y-G0h">
+                    <rect key="frame" x="0.0" y="0.0" width="834" height="600"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="77Z-n0-hji">
+                            <rect key="frame" x="10" y="548" width="814" height="50"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="VzT-Da-qac">
+                                    <rect key="frame" x="6" y="6" width="802" height="38"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="38" id="YH0-RS-YaX"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="50" id="C0X-HF-Ka7"/>
+                                <constraint firstItem="VzT-Da-qac" firstAttribute="centerY" secondItem="77Z-n0-hji" secondAttribute="centerY" id="WCE-zH-0fi"/>
+                                <constraint firstItem="VzT-Da-qac" firstAttribute="centerX" secondItem="77Z-n0-hji" secondAttribute="centerX" id="nnd-uC-hye"/>
+                                <constraint firstAttribute="trailing" secondItem="VzT-Da-qac" secondAttribute="trailing" constant="6" id="pxI-vt-wtv"/>
+                                <constraint firstItem="VzT-Da-qac" firstAttribute="leading" secondItem="77Z-n0-hji" secondAttribute="leading" constant="6" id="z5z-Q3-dx8"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="HaS-YF-x3q">
+                            <rect key="frame" x="427" y="247" width="320" height="298"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="HeV-5t-Crd">
+                            <rect key="frame" x="427" y="247" width="320" height="298"/>
+                            <subviews>
+                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="oBS-CV-N71">
+                                    <rect key="frame" x="20" y="118" width="280" height="160"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="A44-YE-0a0"/>
+                                        <constraint firstAttribute="height" constant="160" id="rf3-Ph-FVY"/>
+                                    </constraints>
+                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="guideToolbar" id="XCh-ul-cRx"/>
+                                </imageView>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="H4g-ay-qCU">
+                                    <rect key="frame" x="18" y="89" width="96" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="IKp-NK-mJG">
+                                        <font key="font" metaFont="systemBold" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mOe-Zu-QFk">
+                                    <rect key="frame" x="18" y="64" width="284" height="17"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="280" id="4x0-Bs-arm"/>
+                                    </constraints>
+                                    <textFieldCell key="cell" alignment="left" title="PDF to Office" id="gir-vx-Yem">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <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="IcK-uc-vJ1" customClass="HyperLinkButton">
+                                    <rect key="frame" x="20" y="24" width="31" height="16"/>
+                                    <buttonCell key="cell" type="bevel" title="Skip" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="LDh-Vl-Io3">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <connections>
+                                        <action selector="skipAction:" target="c22-O7-iKe" id="UD7-zt-foX"/>
+                                    </connections>
+                                </button>
+                                <box boxType="custom" borderType="line" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="OZ9-Yi-MBb" customClass="KMBox">
+                                    <rect key="frame" x="109" y="20" width="87" height="24"/>
+                                    <view key="contentView" id="0c0-H4-6sb">
+                                        <rect key="frame" x="1" y="1" width="85" height="22"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5Sc-MD-0sU">
+                                                <rect key="frame" x="10" y="3" width="65" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Previous" id="0GK-t8-Aaq">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="58D-bW-g7B" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="85" height="22"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="BFx-9S-vka">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="previousAction:" target="c22-O7-iKe" id="ah8-gq-v6H"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="58D-bW-g7B" firstAttribute="leading" secondItem="0c0-H4-6sb" secondAttribute="leading" id="31z-lj-rtg"/>
+                                            <constraint firstItem="5Sc-MD-0sU" firstAttribute="centerY" secondItem="0c0-H4-6sb" secondAttribute="centerY" id="8Sb-Wl-Ttn"/>
+                                            <constraint firstAttribute="trailing" secondItem="58D-bW-g7B" secondAttribute="trailing" id="Pbo-f3-0Kq"/>
+                                            <constraint firstAttribute="trailing" secondItem="5Sc-MD-0sU" secondAttribute="trailing" constant="12" id="nMg-vz-FjZ"/>
+                                            <constraint firstItem="58D-bW-g7B" firstAttribute="top" secondItem="0c0-H4-6sb" secondAttribute="top" id="tAD-Zr-ayd"/>
+                                            <constraint firstItem="5Sc-MD-0sU" firstAttribute="centerX" secondItem="0c0-H4-6sb" secondAttribute="centerX" id="u24-03-Cpt"/>
+                                            <constraint firstAttribute="bottom" secondItem="58D-bW-g7B" secondAttribute="bottom" id="y18-GZ-NXC"/>
+                                            <constraint firstItem="5Sc-MD-0sU" firstAttribute="leading" secondItem="0c0-H4-6sb" secondAttribute="leading" constant="12" id="yXM-ou-Eiv"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="I4A-Uw-uL1"/>
+                                    </constraints>
+                                </box>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="x7e-KL-voi">
+                                    <rect key="frame" x="202" y="24" width="23" height="17"/>
+                                    <textFieldCell key="cell" alignment="left" title="1/2" id="gaQ-IE-xCU">
+                                        <font key="font" metaFont="system" size="14"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <box boxType="custom" borderType="line" cornerRadius="5" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="f75-J4-JwF" customClass="KMBox">
+                                    <rect key="frame" x="231" y="20" width="69" height="24"/>
+                                    <view key="contentView" id="Kan-u9-G9J">
+                                        <rect key="frame" x="1" y="1" width="67" height="22"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <subviews>
+                                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hir-LW-08s">
+                                                <rect key="frame" x="10" y="3" width="47" height="16"/>
+                                                <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Finish" id="aHr-aq-kqZ">
+                                                    <font key="font" metaFont="systemBold"/>
+                                                    <color key="textColor" red="0.99999600649999998" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                </textFieldCell>
+                                            </textField>
+                                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="esa-bm-Tgn" customClass="KMButton">
+                                                <rect key="frame" x="0.0" y="0.0" width="67" height="22"/>
+                                                <buttonCell key="cell" type="bevel" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="bZf-5y-kyg">
+                                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                    <font key="font" metaFont="system"/>
+                                                </buttonCell>
+                                                <connections>
+                                                    <action selector="finishAction:" target="c22-O7-iKe" id="34h-EK-fg5"/>
+                                                </connections>
+                                            </button>
+                                        </subviews>
+                                        <constraints>
+                                            <constraint firstItem="hir-LW-08s" firstAttribute="centerX" secondItem="Kan-u9-G9J" secondAttribute="centerX" id="5Co-dj-7ih"/>
+                                            <constraint firstItem="esa-bm-Tgn" firstAttribute="top" secondItem="Kan-u9-G9J" secondAttribute="top" id="dW8-Sx-u6b"/>
+                                            <constraint firstItem="hir-LW-08s" firstAttribute="centerY" secondItem="Kan-u9-G9J" secondAttribute="centerY" id="mxx-kU-5pI"/>
+                                            <constraint firstItem="hir-LW-08s" firstAttribute="leading" secondItem="Kan-u9-G9J" secondAttribute="leading" constant="12" id="nfI-ES-ssd"/>
+                                            <constraint firstAttribute="trailing" secondItem="hir-LW-08s" secondAttribute="trailing" constant="12" id="s7Z-17-hvB"/>
+                                            <constraint firstAttribute="bottom" secondItem="esa-bm-Tgn" secondAttribute="bottom" id="x29-BP-yh1"/>
+                                            <constraint firstAttribute="trailing" secondItem="esa-bm-Tgn" secondAttribute="trailing" id="xil-O1-vOA"/>
+                                            <constraint firstItem="esa-bm-Tgn" firstAttribute="leading" secondItem="Kan-u9-G9J" secondAttribute="leading" id="zxl-1b-lgQ"/>
+                                        </constraints>
+                                    </view>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="24" id="NjQ-ri-8ll"/>
+                                    </constraints>
+                                </box>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="f75-J4-JwF" firstAttribute="leading" secondItem="x7e-KL-voi" secondAttribute="trailing" constant="8" id="1Mi-cp-Ujc"/>
+                                <constraint firstAttribute="trailing" secondItem="f75-J4-JwF" secondAttribute="trailing" constant="20" id="4AO-zA-QwD"/>
+                                <constraint firstAttribute="bottom" secondItem="f75-J4-JwF" secondAttribute="bottom" constant="20" id="5Ng-wr-9u0"/>
+                                <constraint firstAttribute="width" constant="320" id="5Uf-3N-ec1"/>
+                                <constraint firstItem="x7e-KL-voi" firstAttribute="leading" secondItem="OZ9-Yi-MBb" secondAttribute="trailing" constant="8" id="5hS-B0-VsP"/>
+                                <constraint firstItem="H4g-ay-qCU" firstAttribute="top" secondItem="oBS-CV-N71" secondAttribute="bottom" constant="12" id="9Yj-4T-nHX"/>
+                                <constraint firstItem="IcK-uc-vJ1" firstAttribute="leading" secondItem="HeV-5t-Crd" secondAttribute="leading" constant="20" id="Afp-hs-HRX"/>
+                                <constraint firstItem="f75-J4-JwF" firstAttribute="centerY" secondItem="OZ9-Yi-MBb" secondAttribute="centerY" id="Czs-lu-vsJ"/>
+                                <constraint firstItem="OZ9-Yi-MBb" firstAttribute="centerY" secondItem="IcK-uc-vJ1" secondAttribute="centerY" id="SCm-Ve-lhJ"/>
+                                <constraint firstItem="f75-J4-JwF" firstAttribute="top" secondItem="mOe-Zu-QFk" secondAttribute="bottom" constant="20" id="Smi-fL-ZAK"/>
+                                <constraint firstItem="oBS-CV-N71" firstAttribute="top" secondItem="HeV-5t-Crd" secondAttribute="top" constant="20" id="Usd-yN-rhH"/>
+                                <constraint firstItem="oBS-CV-N71" firstAttribute="centerX" secondItem="HeV-5t-Crd" secondAttribute="centerX" id="Vjz-Q0-Grp"/>
+                                <constraint firstItem="mOe-Zu-QFk" firstAttribute="leading" secondItem="HeV-5t-Crd" secondAttribute="leading" constant="20" id="kBH-PK-Qfh"/>
+                                <constraint firstItem="f75-J4-JwF" firstAttribute="centerY" secondItem="x7e-KL-voi" secondAttribute="centerY" id="qJ4-0D-8bn"/>
+                                <constraint firstItem="mOe-Zu-QFk" firstAttribute="top" secondItem="H4g-ay-qCU" secondAttribute="bottom" constant="8" id="sKO-ZI-FrI"/>
+                                <constraint firstItem="H4g-ay-qCU" firstAttribute="leading" secondItem="HeV-5t-Crd" secondAttribute="leading" constant="20" id="wti-hn-fYD"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="77Z-n0-hji" firstAttribute="leading" secondItem="kwO-8y-G0h" secondAttribute="leading" constant="10" id="Boj-oM-yOb"/>
+                        <constraint firstItem="77Z-n0-hji" firstAttribute="top" secondItem="kwO-8y-G0h" secondAttribute="top" constant="2" id="DeB-x1-feP"/>
+                        <constraint firstItem="HeV-5t-Crd" firstAttribute="centerX" secondItem="kwO-8y-G0h" secondAttribute="centerX" constant="170" id="Itb-Oj-0dr"/>
+                        <constraint firstItem="HeV-5t-Crd" firstAttribute="bottom" secondItem="HaS-YF-x3q" secondAttribute="bottom" id="KuY-gr-Nd3"/>
+                        <constraint firstItem="HeV-5t-Crd" firstAttribute="top" secondItem="HaS-YF-x3q" secondAttribute="top" id="QCT-el-Rpm"/>
+                        <constraint firstAttribute="trailing" secondItem="77Z-n0-hji" secondAttribute="trailing" constant="10" id="dnr-gT-jRG"/>
+                        <constraint firstItem="HeV-5t-Crd" firstAttribute="top" secondItem="kwO-8y-G0h" secondAttribute="top" constant="55" id="fIc-Ni-bSi"/>
+                        <constraint firstItem="HeV-5t-Crd" firstAttribute="leading" secondItem="HaS-YF-x3q" secondAttribute="leading" id="jnN-Y2-7E6"/>
+                        <constraint firstItem="HeV-5t-Crd" firstAttribute="trailing" secondItem="HaS-YF-x3q" secondAttribute="trailing" id="li3-76-xrF"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="kwO-8y-G0h" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="MEh-sd-DAk"/>
+                <constraint firstAttribute="bottom" secondItem="kwO-8y-G0h" secondAttribute="bottom" id="NdU-Gm-U4j"/>
+                <constraint firstItem="kwO-8y-G0h" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="QIi-tK-FAm"/>
+                <constraint firstAttribute="trailing" secondItem="kwO-8y-G0h" secondAttribute="trailing" id="nIA-kU-HFx"/>
+            </constraints>
+            <connections>
+                <outlet property="bigCircleView" destination="77Z-n0-hji" id="Lb8-L8-yRy"/>
+                <outlet property="contendView" destination="kwO-8y-G0h" id="gfs-jn-256"/>
+                <outlet property="finishBox" destination="f75-J4-JwF" id="MPF-Og-gy5"/>
+                <outlet property="finishButton" destination="esa-bm-Tgn" id="2u1-9e-EmU"/>
+                <outlet property="finishLabel" destination="hir-LW-08s" id="1it-Uf-GU6"/>
+                <outlet property="previousBox" destination="OZ9-Yi-MBb" id="ta1-PX-5a5"/>
+                <outlet property="previousButton" destination="58D-bW-g7B" id="42O-b8-DvZ"/>
+                <outlet property="previousLabel" destination="5Sc-MD-0sU" id="XxZ-0W-7rJ"/>
+                <outlet property="shadowView" destination="HaS-YF-x3q" id="R3H-T9-nAX"/>
+                <outlet property="skipButton" destination="IcK-uc-vJ1" id="YA4-IT-DY9"/>
+                <outlet property="smallCircleView" destination="VzT-Da-qac" id="2Ef-3O-Mmc"/>
+                <outlet property="stepLabel" destination="x7e-KL-voi" id="F78-sa-6nM"/>
+                <outlet property="tipImageView" destination="oBS-CV-N71" id="YMc-ca-MRg"/>
+                <outlet property="tipInfoView" destination="HeV-5t-Crd" id="eiP-Gs-blu"/>
+                <outlet property="tipSubTitleLabel" destination="mOe-Zu-QFk" id="yuk-q9-67p"/>
+                <outlet property="tipTitleLabel" destination="H4g-ay-qCU" id="hDM-t1-sZB"/>
+            </connections>
+            <point key="canvasLocation" x="292" y="293"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="guideToolbar" width="280" height="160"/>
+    </resources>
+</document>

+ 92 - 0
PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.swift

@@ -0,0 +1,92 @@
+//
+//  KMFunctionGuideWindowController.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/6.
+//
+
+import Cocoa
+
+class KMFunctionGuideWindowController: NSWindowController {
+
+    @IBOutlet weak var contendBox: NSBox!
+    
+    var singleController: KMFunctionGuideSingleController!
+    var multiController: KMFunctionGuideMultiController!
+    
+   @objc var _type: KMGuideInfoType = .none
+    
+    //MARK: Static
+    @objc static func availableShow(_ type: KMGuideInfoType) -> Bool {
+        if type == .functionMulitDidital {
+            if (UserDefaults.standard.object(forKey: kKMGuideInfoMultiDigitalKey) == nil) {
+                return true
+            }
+        }
+        return false
+    }
+    
+    @objc static func setDidShowFor(_ type: KMGuideInfoType) -> Void {
+        if type == .functionMulitDidital {
+            //V3.2.0添加数字签名引导
+            UserDefaults.standard.setValue("Show", forKey: kKMGuideInfoMultiDigitalKey)
+            UserDefaults.standard.synchronize()
+        }
+    }
+    
+    
+    //MARK: SystemAction
+    override func windowDidLoad() {
+        super.windowDidLoad()
+
+        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+        
+        
+    }
+    
+    func setContendView(_ view: NSView) {
+        var frame: CGRect = self.window!.frame
+        frame.origin.y -= view.frame.size.height-frame.size.height
+        frame.origin.x -= (view.frame.size.width-frame.size.width)/2.0
+        frame.size.width = view.frame.size.width
+        frame.size.height = view.frame.size.height
+        self.window?.setFrame(frame, display: true, animate: true)
+        self.contendBox.contentView = view
+    }
+    
+    override func showWindow(_ sender: Any?) {
+        super.showWindow(sender)
+        
+        DispatchQueue.main.async {
+            if self.type == .functionSingle {
+                self.setContendView(self.singleController.view)
+            } else if self.type == .functionMulti {
+                self.setContendView(self.multiController.view)
+            }
+        }
+    }
+    
+    //MARK: Setter
+    @objc var type: KMGuideInfoType {
+        set {
+            _type = newValue;
+             
+            if _type == .functionSingle {
+                self.singleController = KMFunctionGuideSingleController.init()
+            } else if _type == .functionMulti {
+                self.multiController = KMFunctionGuideMultiController.init()
+                self.multiController.clickHandle = { controller in
+                    self.closeAction()
+                }
+            }
+        }
+        
+        get {
+            return _type;
+        }
+    }
+    
+    func closeAction() {
+        self.close()
+    }
+}

+ 42 - 0
PDF Office/PDF Master/Class/GuideInfo/KMFunctionGuideWindowController.xib

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMFunctionGuideWindowController" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="contendBox" destination="tEL-IL-6d8" id="Fpa-IE-FOD"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="574" height="387"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+            <view key="contentView" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="574" height="387"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <box fixedFrame="YES" boxType="custom" borderType="none" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="tEL-IL-6d8">
+                        <rect key="frame" x="0.0" y="0.0" width="574" height="387"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <view key="contentView" id="5pG-oe-tB0">
+                            <rect key="frame" x="0.0" y="0.0" width="574" height="387"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        </view>
+                    </box>
+                </subviews>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="150" y="162.5"/>
+        </window>
+    </objects>
+</document>

+ 46 - 0
PDF Office/PDF Master/Class/GuideInfo/KMGuideConfig.swift

@@ -0,0 +1,46 @@
+//
+//  KMGuideConfig.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/5.
+//
+
+import Foundation
+
+
+let kKMGuideInfoOpenFileNormalKey = "kKMGuideInfoOpenFileNormalKey"
+let kKMGuideInfoPDFCompareKey     = "kKMGuideInfoPDFCompareKey"
+let kKMGuideInfoDigitalSignKey    = "kKMGuideInfoDigitalSignKey"
+let kKMGuideInfoMultiDigitalKey   = "kKMGuideInfoMultiDigitalKey"
+let kKMGuideInfoFileConvertKey   = "kKMGuideInfoFileConvertKey"
+let kKMGuideInfoCustomColorKey   = "kKMGuideInfoCustomColorKey"
+
+@objc public enum KMGuideInfoType: NSInteger {
+    case none = 0
+    case digitalSignGuide       = 1//数字签名
+    case pdfCompareGuide        = 2//文件对比
+    case functionSingle         = 3//单个重大功能介绍
+    case functionMulti          = 4//多个重大功能介绍
+    case functionMulitDidital   = 5
+    case openFileNormal         = 6//打开文档介绍
+    case openFileNormalPanel    = 7
+    case openFileNormalProperty = 8
+    case openFileNormalToolbar  = 9
+    case convertGuide           = 10//转档功能
+    case customColor            = 11//自定义颜色
+    
+    
+}
+
+@objc public enum KMGuideActionType: NSInteger {
+    case none     = 0
+    case skip     = 1//
+    case next     = 2
+    case previous = 3
+    case finish   = 4
+    case getIt    = 5
+    case purchase = 6
+    case windowNewFinish = 7 //布局介绍关闭类型
+    case windowDigitalFinish = 8//数字签名关闭类型
+    
+}

+ 40 - 0
PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindow.swift

@@ -0,0 +1,40 @@
+//
+//  KMGuideInfoWindow.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/8.
+//
+
+import Cocoa
+
+class KMGuideInfoWindow: NSWindow {
+
+    static var currentWindow: KMGuideInfoWindow!
+    
+    @objc static func currentWC() -> KMGuideInfoWindow {
+        let nib = NSNib(nibNamed: NSNib.Name("KMGuideInfoWindow"), bundle: Bundle.main)
+        var topLevelObjects: NSArray?
+        if nib?.instantiate(withOwner: nil, topLevelObjects: &topLevelObjects) ?? false {
+            for object in topLevelObjects ?? [] {
+                if let window = object as? NSWindow {
+                    self.currentWindow = window as? KMGuideInfoWindow
+                    break
+                }
+            }
+        }
+        return currentWindow
+    }
+    
+    
+    override func awakeFromNib() {
+        super.awakeFromNib()
+         
+        self.backgroundColor = NSColor.clear
+        self.contentView?.wantsLayer = true
+        self.contentView?.layer?.backgroundColor = NSColor.red.cgColor;
+        self.isOpaque = false
+       
+    }
+    
+    
+}

+ 34 - 0
PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindow.xib

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner"/>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="KMGuideInfoWindow" customModule="PDF_Master" customModuleProvider="target">
+            <windowStyleMask key="styleMask" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="480" height="270"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+            <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
+                <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YRY-Df-eEF">
+                        <rect key="frame" x="130" y="93" width="75" height="32"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                        <buttonCell key="cell" type="push" title="Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="zOK-uc-D7I">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                </subviews>
+            </view>
+            <point key="canvasLocation" x="131" y="-82"/>
+        </window>
+    </objects>
+</document>

+ 414 - 0
PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindowController.swift

@@ -0,0 +1,414 @@
+//
+//  KMGuideInfoWindowController.swift
+//  PDF Reader Pro Edition
+//
+//  Created by Niehaoyu on 2023/12/5.
+//
+
+import Cocoa
+
+class KMGuideInfoWindowController: NSWindowController {
+
+    @IBOutlet weak var contendBox: NSBox!
+    
+    @objc var coverView: KMGuideCoverView!
+    @objc var openFileGuidePanel: KMOpenFileGuidePanel!
+    @objc var openFileGuideProperty: KMOpenFileGuideProperty!
+    @objc var openFileGuideToolbar: KMOpenFileGuideToolbar!
+    @objc var openFileFunctionView: KMOpenFileFunctionView!
+    @objc var convertGuideView: KMConvertGuideView!
+    @objc var customColorGuideView: KMCustomColorGuideView!
+    
+    
+    @objc var _type: KMGuideInfoType = .none
+    @objc var openPanelRect: CGRect = .zero
+    @objc var rightPanelRect: CGRect = .zero
+    @objc var _digitalBoxRect: CGRect = .zero
+    @objc var compareItemRect: CGRect = .zero
+    
+    @objc var purchaseHandle: ((_ view: KMGuideInfoWindowController)->Void)?
+    @objc var normalGuideFinishHandle: ((_ view: KMGuideInfoWindowController)->Void)?
+    @objc var finishHandle: ((_ view: KMGuideInfoWindowController, _ actionType: KMGuideActionType)->Void)?
+    
+    @objc var openFileToggleHandle: ((_ view: KMGuideInfoWindowController, _ infoType: KMGuideInfoType)->Void)?
+
+    //MARK: Static Method
+    @objc static func availableShow(_ type: KMGuideInfoType) -> Bool {
+        if type == .openFileNormal {
+            if (UserDefaults.standard.object(forKey: kKMGuideInfoOpenFileNormalKey) == nil) {
+                return true
+            }
+        } else if type == .digitalSignGuide {
+            if (UserDefaults.standard.object(forKey: kKMGuideInfoDigitalSignKey) == nil) {
+                return true
+            }
+        } else if type == .pdfCompareGuide {
+            if (UserDefaults.standard.object(forKey: kKMGuideInfoPDFCompareKey) == nil) {
+                return true
+            }
+        } else if type == .convertGuide {
+            if (UserDefaults.standard.object(forKey: kKMGuideInfoFileConvertKey) == nil) {
+                return true
+            }
+        } else if type == .customColor {
+            if (UserDefaults.standard.object(forKey: kKMGuideInfoCustomColorKey) == nil) {
+                return true
+            }
+        }
+        return false
+    }
+    
+    static func setDidShowFor(_ type: KMGuideInfoType) -> Void {
+        if type == .openFileNormal {
+            UserDefaults.standard.setValue("Show", forKey: kKMGuideInfoOpenFileNormalKey)
+            UserDefaults.standard.synchronize()
+        } else if type == .digitalSignGuide {
+            UserDefaults.standard.setValue("Show", forKey: kKMGuideInfoDigitalSignKey)
+            UserDefaults.standard.synchronize()
+        } else if type == .pdfCompareGuide {
+            UserDefaults.standard.setValue("Show", forKey: kKMGuideInfoPDFCompareKey)
+            UserDefaults.standard.synchronize()
+        } else if type == .convertGuide {
+            UserDefaults.standard.setValue("Show", forKey: kKMGuideInfoFileConvertKey)
+            UserDefaults.standard.synchronize()
+        } else if type == .customColor {
+            UserDefaults.standard.setValue("Show", forKey: kKMGuideInfoCustomColorKey)
+            UserDefaults.standard.synchronize()
+        }
+    }
+    
+    @objc static func currentWC() -> KMGuideInfoWindowController {
+        if let controller: KMGuideInfoWindowController = KMGuideInfoWindowController.fetchSampleController() {
+            return controller
+        } else {
+            let guideInfoWC: KMGuideInfoWindowController = KMGuideInfoWindowController.init(windowNibName: "KMGuideInfoWindowController")
+            return guideInfoWC
+        }
+    }
+    
+    static func fetchSampleController() -> KMGuideInfoWindowController? {
+        for window in NSApp.windows {
+            let controller = window.windowController
+            if controller is KMGuideInfoWindowController {
+                return controller as? KMGuideInfoWindowController
+            }
+        }
+        
+        return nil
+    }
+    
+    //MARK: SystemMethod
+    override func showWindow(_ sender: Any?) {
+        super.showWindow(sender)
+        
+        self.show()
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+
+        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+        
+        self.window?.backgroundColor = NSColor.clear
+        self.window?.contentView?.wantsLayer = true
+        self.window?.contentView?.layer?.backgroundColor = NSColor.clear.cgColor;
+        self.window?.isOpaque = false
+        
+        self.contendBox.fillColor = NSColor.clear
+        
+        self.coverView = KMGuideCoverView.createFromNib()
+        self.coverView.frame = self.contendBox.bounds
+        self.contendBox.contentView = self.coverView
+        
+        
+    }
+    
+    //MARK: Setter
+    @objc var type: KMGuideInfoType {
+        set {
+            _type = newValue;
+            
+        }
+        get {
+            return _type;
+        }
+    }
+    
+    @objc var digitalBoxRect: CGRect {
+        set {
+            _digitalBoxRect = newValue;
+        }
+        get {
+            return _digitalBoxRect;
+        }
+    }
+    
+    //MARK: Public Method
+    
+    @objc func show() {
+        if self.type == .openFileNormal {
+            self.type = .openFileNormalPanel
+        }
+        self.loadGuideInfoView()
+    }
+    
+    func clearViews() {
+        let viewsArr = NSArray.init(array: self.coverView.subviews)
+        for view in viewsArr {
+            if view is KMOpenFileGuidePanel {
+                (view as AnyObject).removeFromSuperview()
+            } else if view is KMOpenFileGuideProperty {
+                (view as AnyObject).removeFromSuperview()
+            } else if view is KMOpenFileGuideToolbar {
+                (view as AnyObject).removeFromSuperview()
+            } else if view is KMOpenFileFunctionView {
+                (view as AnyObject).removeFromSuperview()
+            } else if view is KMConvertGuideView {
+                (view as AnyObject).removeFromSuperview()
+            } else if view is KMCustomColorGuideView {
+                (view as AnyObject).removeFromSuperview()
+            }
+        }
+        self.coverView.display()
+        if self.window != nil {
+            var rect = self.window?.frame
+            rect?.size.width += 1
+            self.window?.setFrame(rect!, display: true)
+        }
+    }
+    
+    func loadGuideInfoView() {
+        DispatchQueue.main.async {
+            self.clearViews()
+            
+            self.contendBox.contentView = self.coverView
+            
+            if self.type == .openFileNormalPanel {
+                if self.openFileGuidePanel == nil {
+                    self.openFileGuidePanel = KMOpenFileGuidePanel.createFromNib()
+                }
+                self.openFileGuidePanel.frame = self.coverView.bounds
+                self.openFileGuidePanel.autoresizingMask = [.width, .height]
+                self.openFileGuidePanel.clickHandle = { view, actionType in
+                    if actionType == .skip {
+                        //Skip->数字签名
+                        //Skip->
+                        guard let callBack = self.normalGuideFinishHandle else {
+                            return
+                        }
+                        callBack(self)
+                        if KMGuideInfoWindowController.availableShow(.digitalSignGuide) &&
+                            (CGRectGetWidth(self.window!.frame) > CGRectGetMinX(self.digitalBoxRect) + 260) &&
+                            CGRectGetMinX(self.digitalBoxRect) > 450 {
+                            self.type = .digitalSignGuide
+                            self.loadGuideInfoView()
+                        } else {
+                            guard let callBack = self.finishHandle else {
+                                return
+                            }
+                            callBack(self, .windowNewFinish)
+                            self.closeAction()
+                        }
+                    } else if actionType == .next {
+                        //Next
+                        self.type = .openFileNormalProperty
+                        self.loadGuideInfoView()
+//                        guard let callBack = self.openFileToggleHandle else {
+//                            return
+//                        }
+//                        callBack(self, .openFileNormalProperty)
+//                        self.closeAction()
+                    }
+                }
+                self.openFileGuidePanel.circleRect = self.openPanelRect
+                self.coverView.addSubview(self.openFileGuidePanel)
+                self.openFileGuidePanel.updateViewColor()
+                KMGuideInfoWindowController.setDidShowFor(.openFileNormal)//记录布局介绍
+            } else if self.type == .openFileNormalProperty {
+                guard let callBack = self.normalGuideFinishHandle else {
+                    return
+                }
+                callBack(self)
+                if self.openFileGuideProperty == nil {
+                    self.openFileGuideProperty = KMOpenFileGuideProperty.createFromNib()
+                }
+                self.openFileGuideProperty.frame = self.coverView.bounds
+                self.openFileGuideProperty.autoresizingMask = [.width, .height]
+                self.openFileGuideProperty.clickHandle = { view, actionType in
+                    if actionType == .skip {
+                        //Skip->数字签名
+                        //Skip->
+                        guard let callBack = self.normalGuideFinishHandle else {
+                            return
+                        }
+                        callBack(self)
+                        if KMGuideInfoWindowController.availableShow(.digitalSignGuide) &&
+                            (CGRectGetWidth(self.window!.frame) > CGRectGetMinX(self.digitalBoxRect) + 260) &&
+                            CGRectGetMinX(self.digitalBoxRect) > 450 {
+                            self.type = .digitalSignGuide
+                            self.loadGuideInfoView()
+                        } else {
+                            guard let callBack = self.finishHandle else {
+                                return
+                            }
+                            callBack(self, .windowNewFinish)
+                            self.closeAction()
+                        }
+                    } else if actionType == .previous {
+                        //Previous
+                        self.type = .openFileNormalPanel
+                        self.loadGuideInfoView()
+                        guard let callBack = self.normalGuideFinishHandle else {
+                            return
+                        }
+                        callBack(self)
+//                        guard let callBack = self.openFileToggleHandle else {
+//                            return
+//                        }
+//                        callBack(self, .openFileNormalPanel)
+//                        self.closeAction()
+                    } else if actionType == .next {
+                        //Next
+                        self.type = .openFileNormalToolbar
+                        self.loadGuideInfoView()
+//                        guard let callBack = self.openFileToggleHandle else {
+//                            return
+//                        }
+//                        callBack(self, .openFileNormalToolbar)
+//                        self.closeAction()
+                    }
+                }
+                self.openFileGuideProperty.circleRect = self.rightPanelRect
+                self.coverView.addSubview(self.openFileGuideProperty)
+                self.openFileGuideProperty.updateViewColor()
+            } else if self.type == .openFileNormalToolbar {
+                if self.openFileGuideToolbar == nil {
+                    self.openFileGuideToolbar = KMOpenFileGuideToolbar.createFromNib()
+                }
+                self.openFileGuideToolbar.frame = self.coverView.bounds
+                self.openFileGuideToolbar.autoresizingMask = [.width, .height]
+                self.openFileGuideToolbar.clickHandle = { view, actionType in
+                    if actionType == .skip {
+                        //Skip->数字签名
+                        //Skip->
+                        guard let callBack = self.normalGuideFinishHandle else {
+                            return
+                        }
+                        callBack(self)
+                        if KMGuideInfoWindowController.availableShow(.digitalSignGuide) &&
+                            (CGRectGetWidth(self.window!.frame) > CGRectGetMinX(self.digitalBoxRect) + 260) &&
+                            CGRectGetMinX(self.digitalBoxRect) > 450 {
+                            self.type = .digitalSignGuide
+                            self.loadGuideInfoView()
+                        } else {
+                            guard let callBack = self.finishHandle else {
+                                return
+                            }
+                            callBack(self, .windowNewFinish)
+                            self.closeAction()
+                        }
+                    } else if actionType == .previous {
+                        //Next
+                        self.type = .openFileNormalProperty
+                        self.loadGuideInfoView()
+//                        guard let callBack = self.openFileToggleHandle else {
+//                            return
+//                        }
+//                        callBack(self, .openFileNormalProperty)
+//                        self.closeAction()
+                    } else if actionType == .finish {
+                        guard let callBack = self.normalGuideFinishHandle else {
+                            return
+                        }
+                        callBack(self)
+                        if KMGuideInfoWindowController.availableShow(.digitalSignGuide) &&
+                            (CGRectGetWidth(self.window!.frame) > CGRectGetMinX(self.digitalBoxRect) + 260) &&
+                            CGRectGetMinX(self.digitalBoxRect) > 450 {
+                            self.type = .digitalSignGuide
+                            self.loadGuideInfoView()
+                        } else {
+                            guard let callBack = self.finishHandle else {
+                                return
+                            }
+                            callBack(self, .windowNewFinish)
+                            self.closeAction()
+                        }
+                    }
+                }
+                self.coverView.addSubview(self.openFileGuideToolbar)
+            } else if self.type == .digitalSignGuide || self.type == .pdfCompareGuide {
+                if self.type == .digitalSignGuide {
+                    KMGuideInfoWindowController.setDidShowFor(.digitalSignGuide)//记录数字签名介绍
+                } else if self.type == .pdfCompareGuide {
+                    KMGuideInfoWindowController.setDidShowFor(.pdfCompareGuide)//记录文件对比介绍
+                }
+                
+                if self.openFileFunctionView == nil {
+                    self.openFileFunctionView = KMOpenFileFunctionView.createFromNib()
+                }
+                self.openFileFunctionView.circleRect = self.digitalBoxRect
+                self.openFileFunctionView.frame = self.coverView.bounds
+                self.openFileFunctionView.autoresizingMask = [.width, .height]
+                self.openFileFunctionView.type =  self.type
+                self.openFileFunctionView.clickHandle = { view, actionType in
+                    if self.type == .digitalSignGuide {
+                        guard let callBack = self.finishHandle else {
+                            return
+                        }
+                        callBack(self, .windowDigitalFinish)
+                        if actionType == .getIt {
+                            self.closeAction()
+                        }
+                    } else if self.type == .pdfCompareGuide {
+                        if actionType == .getIt {
+                            self.closeAction()
+                        }
+                    }
+                }
+                self.coverView.addSubview(self.openFileFunctionView)
+                self.openFileFunctionView.updateViewColor()
+            } else if self.type == .convertGuide {
+                if self.convertGuideView == nil {
+                    self.convertGuideView = KMConvertGuideView.createFromNib()
+                }
+                self.convertGuideView.frame = self.coverView.bounds
+                self.convertGuideView.autoresizingMask = [.width, .height]
+                self.convertGuideView.clickHandle = { view, actionType in
+                    if actionType == .skip {
+                        self.closeAction()
+                    } else if actionType == .purchase {
+                        guard let callBack = self.purchaseHandle else {
+                            return
+                        }
+                        callBack(self)
+                        self.closeAction()
+                    }
+                }
+                self.convertGuideView.circleRect = self.digitalBoxRect
+                self.coverView.addSubview(self.convertGuideView)
+                self.convertGuideView.updateViewColor()
+                KMGuideInfoWindowController.setDidShowFor(.convertGuide)//记录转档介绍
+            } else if self.type == .customColor {
+                if self.customColorGuideView == nil {
+                    self.customColorGuideView = KMCustomColorGuideView.createFromNib()
+                }
+                self.customColorGuideView.frame = self.coverView.bounds
+                self.customColorGuideView.autoresizingMask = [.width, .height]
+                self.customColorGuideView.clickHandle = { view, actionType in
+                    if actionType == .getIt {
+                        self.closeAction()
+                    }
+                }
+                self.customColorGuideView.circleRect = self.digitalBoxRect
+                self.customColorGuideView.updateViewColor()
+                self.coverView.addSubview(self.customColorGuideView)
+                KMGuideInfoWindowController.setDidShowFor(.customColor)//记录自定义颜色介绍
+            }
+        }
+    }
+    
+    func closeAction() {
+        self.clearViews()
+        self.close()
+    }
+}

+ 42 - 0
PDF Office/PDF Master/Class/GuideInfo/KMGuideInfoWindowController.xib

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMGuideInfoWindowController" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="contendBox" destination="gNV-1b-lEO" id="bBA-t7-NOS"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="480" height="270"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+            <view key="contentView" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <box fixedFrame="YES" boxType="custom" borderType="none" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="gNV-1b-lEO">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <view key="contentView" id="fAb-C2-vfJ">
+                            <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        </view>
+                    </box>
+                </subviews>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="132" y="-82"/>
+        </window>
+    </objects>
+</document>

+ 2 - 2
PDF Office/PDF Master/Class/Home/View/KMComboBox.swift

@@ -24,8 +24,8 @@ class KMComboBox: NSComboBox {
             var p = comboxRect.origin
             p.x += comboxRect.width - 23
             p.y += (comboxRect.height - 16) / 2
-
-            NSColor.clear.setFill()
+            
+            NSColor.init(red: 245/255.0, green: 246/255.0, blue: 249/255.0, alpha: 1.0).setFill()
             NSRect(x: p.x, y: 0, width: 16.0, height: comboxRect.height).fill()
 
             let image = NSImage(named: "KMImageNameUXIconBtnArrowDown")

+ 3 - 0
PDF Office/PDF Master/Class/PDFTools/Convert/ExtractImage/Controller/KMExtractImageWindowController.xib

@@ -49,6 +49,9 @@
                         <buttonCell key="cell" type="push" title="Button" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="m1D-HD-mdF">
                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                             <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+DQ
+</string>
                         </buttonCell>
                         <constraints>
                             <constraint firstAttribute="height" constant="20" id="8ps-dr-hvn"/>

+ 5 - 1
PDF Office/PDF Master/Source/Fonts/NSFont+SFProText.swift

@@ -19,8 +19,12 @@ extension NSFont {
         return NSFont(name: "SFProText-Bold", size: max(1, size)) ?? NSFont.systemFont(ofSize: max(1, size))
     }
     
+    @objc static func SFProTextHeavyFont(_ size: CGFloat) -> NSFont {
+        return NSFont(name: "SFProText-Heavy", size: max(1, size)) ?? NSFont.systemFont(ofSize: max(1, size))
+    }
+    
     @objc static func SFMediumFontWithSize(_ size: CGFloat) -> NSFont {
-        return NSFont(name: "SFProText-Bold", size: max(1, size)) ?? NSFont.systemFont(ofSize: max(1, size))
+        return NSFont(name: "SFProText-Medium", size: max(1, size)) ?? NSFont.systemFont(ofSize: max(1, size))
     }
     
     @objc static func UbuntuMediumFontWithSize(_ size: CGFloat) -> NSFont {