Просмотр исходного кода

综合 - 增加字符串对比测试、跨平台字符对比测试;增加1.7.0版本库;参数规则文档更新到1.7.0

zhudongyong 1 год назад
Родитель
Сommit
da3d2b2113
100 измененных файлов с 55253 добавлено и 609 удалено
  1. 4 0
      KdanAutoTest/KdanAuto.xcodeproj/project.pbxproj
  2. BIN
      KdanAutoTest/KdanAuto.xcodeproj/project.xcworkspace/xcuserdata/zhudongyong.xcuserdatad/UserInterfaceState.xcuserstate
  3. 16 0
      KdanAutoTest/KdanAuto.xcodeproj/xcuserdata/zhudongyong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 2196 283
      KdanAutoTest/KdanAuto/Class/AdvanceSettingViewController/AdvanceSettingPropertyRules.plist
  5. 36 4
      KdanAutoTest/KdanAuto/Class/AdvanceSettingViewController/AdvanceSettingViewController.swift
  6. 29 5
      KdanAutoTest/KdanAuto/Class/AdvanceSettingViewController/AdvanceSettingViewController.xib
  7. 12 6
      KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTest.swift
  8. 1 0
      KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTestProtocal.swift
  9. 1 2
      KdanAutoTest/KdanAuto/Class/AutoTestCase/PDFCompareTest.swift
  10. 516 0
      KdanAutoTest/KdanAuto/Class/AutoTestCase/StringAutoCompare.swift
  11. 365 203
      KdanAutoTest/KdanAuto/Class/AutoTestCase/StringAutoTest.swift
  12. 3 2
      KdanAutoTest/KdanAuto/Class/Norrmal/Cell/TestCaseCellView.swift
  13. 2 1
      KdanAutoTest/KdanAuto/Class/Norrmal/Cell/TestFileTypeCellView.swift
  14. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/ComPDFKit_Conversion
  15. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertExcelOptions.h
  16. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertHtmlOptions.h
  17. 0 5
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertKit.h
  18. 5 57
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertOptions.h
  19. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertPPTOptions.h
  20. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertRtfOptions.h
  21. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertTxtOptions.h
  22. 1 7
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertWordOptions.h
  23. 1 1
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/ComPDFKit_Conversion.h
  24. 1 1
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Resources/Info.plist
  25. 21 32
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/_CodeSignature/CodeResources
  26. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/ComPDFKit_Conversion
  27. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Headers
  28. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Modules
  29. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Resources
  30. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/ComPDFKit_Conversion
  31. 25 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertCsvOptions.h
  32. 65 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertExcelOptions.h
  33. 56 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertHtmlOptions.h
  34. 42 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertImgOptions.h
  35. 47 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertKit.h
  36. 80 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertOptions.h
  37. 44 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertPPTOptions.h
  38. 38 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertRtfOptions.h
  39. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertTxtOptions.h
  40. 51 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertWordOptions.h
  41. 96 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverter.h
  42. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterCsv.h
  43. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterExcel.h
  44. 70 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterFP.h
  45. 0 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterFactory.h
  46. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterHtml.h
  47. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterImg.h
  48. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterPPT.h
  49. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterRtf.h
  50. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterTxt.h
  51. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterWord.h
  52. 33 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/ComPDFKit_Conversion.h
  53. 6 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Modules/module.modulemap
  54. 237 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout1.xml
  55. 165 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout10.xml
  56. 175 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout11.xml
  57. 165 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout2.xml
  58. 241 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout3.xml
  59. 283 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout4.xml
  60. 417 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout5.xml
  61. 113 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout6.xml
  62. 90 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout7.xml
  63. 272 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout8.xml
  64. 248 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout9.xml
  65. 503 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideMaster1.xml
  66. 281 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/theme1.xml
  67. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/thumbnail.jpeg
  68. 18 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/[Content_Types].xml
  69. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/_rels/.rels
  70. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/docProps/app.xml
  71. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/docProps/core.xml
  72. 10 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/_rels/document.xml.rels
  73. 46611 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document.xml
  74. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document0.xml
  75. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/endnotes.xml
  76. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/footnotes.xml
  77. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/settings.xml
  78. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/theme/theme1.xml
  79. 46 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Info.plist
  80. 16 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Excel.bundle/FPPDFInfo.plist
  81. 281 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Excel.bundle/theme1.xml
  82. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Excel.bundle/thumbnail.jpeg
  83. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout1.xml
  84. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout10.xml
  85. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout11.xml
  86. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout2.xml
  87. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout3.xml
  88. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout4.xml
  89. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout5.xml
  90. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout6.xml
  91. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout7.xml
  92. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout8.xml
  93. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout9.xml
  94. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideMaster1.xml
  95. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/theme1.xml
  96. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/thumbnail.jpeg
  97. 433 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-styles-2006.xml
  98. 190 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-stylesWithEffects-2010.xml
  99. 281 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-theme1-2006.xml
  100. 0 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-webSettings-2006.xml

+ 4 - 0
KdanAutoTest/KdanAuto.xcodeproj/project.pbxproj

@@ -66,6 +66,7 @@
 		24848DDF29EF74AD002A7ED5 /* LogViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 24848DDD29EF74AD002A7ED5 /* LogViewController.xib */; };
 		24848DE229EFCE63002A7ED5 /* CDoucumnetAIResource.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 24848DE129EFCE63002A7ED5 /* CDoucumnetAIResource.bundle */; };
 		24848DE429EFD0DF002A7ED5 /* Vision.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24848DE329EFD0DF002A7ED5 /* Vision.framework */; };
+		24848DE629F2A9E4002A7ED5 /* StringAutoCompare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24848DE529F2A9E3002A7ED5 /* StringAutoCompare.swift */; };
 		24A6FF49293091E000B34F2E /* AutoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A6FF48293091E000B34F2E /* AutoTest.swift */; };
 		24A6FF4B2930939D00B34F2E /* TextColorAutoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A6FF4A2930939D00B34F2E /* TextColorAutoTest.swift */; };
 		24A6FF4F2930A1E100B34F2E /* FontAutoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A6FF4E2930A1E100B34F2E /* FontAutoTest.swift */; };
@@ -222,6 +223,7 @@
 		24848DDD29EF74AD002A7ED5 /* LogViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LogViewController.xib; sourceTree = "<group>"; };
 		24848DE129EFCE63002A7ED5 /* CDoucumnetAIResource.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = CDoucumnetAIResource.bundle; sourceTree = "<group>"; };
 		24848DE329EFD0DF002A7ED5 /* Vision.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Vision.framework; path = System/Library/Frameworks/Vision.framework; sourceTree = SDKROOT; };
+		24848DE529F2A9E3002A7ED5 /* StringAutoCompare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringAutoCompare.swift; sourceTree = "<group>"; };
 		24A6FF48293091E000B34F2E /* AutoTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoTest.swift; sourceTree = "<group>"; };
 		24A6FF4A2930939D00B34F2E /* TextColorAutoTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextColorAutoTest.swift; sourceTree = "<group>"; };
 		24A6FF4E2930A1E100B34F2E /* FontAutoTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FontAutoTest.swift; sourceTree = "<group>"; };
@@ -528,6 +530,7 @@
 				24A6FF48293091E000B34F2E /* AutoTest.swift */,
 				246FE590299DCFC400706586 /* PDFCompareTest.swift */,
 				24D7000A292D16BB00DAB5EE /* StringAutoTest.swift */,
+				24848DE529F2A9E3002A7ED5 /* StringAutoCompare.swift */,
 				24A6FF4A2930939D00B34F2E /* TextColorAutoTest.swift */,
 				24A6FF4E2930A1E100B34F2E /* FontAutoTest.swift */,
 			);
@@ -957,6 +960,7 @@
 				24DCE8AD295046E7004EBA35 /* TestFileTypeCellView.swift in Sources */,
 				246FE591299DCFC400706586 /* PDFCompareTest.swift in Sources */,
 				24D7FFFE292B509000DAB5EE /* DataModel.swift in Sources */,
+				24848DE629F2A9E4002A7ED5 /* StringAutoCompare.swift in Sources */,
 				24CA2337298FD6BE00038E10 /* ImageCompareCellView.swift in Sources */,
 				24848DDA29EEBCBC002A7ED5 /* ASSizePropertyCell.swift in Sources */,
 				24D7FF9B29261A6400DAB5EE /* AppDelegate.swift in Sources */,

BIN
KdanAutoTest/KdanAuto.xcodeproj/project.xcworkspace/xcuserdata/zhudongyong.xcuserdatad/UserInterfaceState.xcuserstate


+ 16 - 0
KdanAutoTest/KdanAuto.xcodeproj/xcuserdata/zhudongyong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -164,5 +164,21 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "E76DE364-9B7B-4B97-B8CC-831D0F2A72DD"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "KdanAuto/Class/AutoTestCase/AutoTest.swift"
+            startingColumnNumber = "16"
+            endingColumnNumber = "16"
+            startingLineNumber = "102"
+            endingLineNumber = "102"
+            landmarkName = "shared()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

Разница между файлами не показана из-за своего большого размера
+ 2196 - 283
KdanAutoTest/KdanAuto/Class/AdvanceSettingViewController/AdvanceSettingPropertyRules.plist


+ 36 - 4
KdanAutoTest/KdanAuto/Class/AdvanceSettingViewController/AdvanceSettingViewController.swift

@@ -17,6 +17,8 @@ class AdvanceSettingViewController: NSViewController, NSPopoverDelegate {
     @IBOutlet var m_nameLbl:NSTextField!
     @IBOutlet var m_pathLbl:NSTextField!
     
+    @IBOutlet var m_typeBox:NSComboBox!
+    
     @IBOutlet var m_sepLine:NSView! // Default is NO
     
     let m_useOldLibCell = ASBOOLPropertyCell.shared()
@@ -24,7 +26,12 @@ class AdvanceSettingViewController: NSViewController, NSPopoverDelegate {
     /**
      {
         "Extention" : "xlsx",
-        "Class"     : "AutoTest",
+        "Classs"     : [
+                         {
+                            "Name" : "对照测试",
+                            "Class": "AutoTest"
+                         }
+                        ],
         "Params"    : [
                         {
                             "ValueType" : "NSInteger",
@@ -147,8 +154,8 @@ class AdvanceSettingViewController: NSViewController, NSPopoverDelegate {
         updateViews()
     }
     
-    func setTestCase(_ info:NSMutableDictionary?) {
-        m_testCaseInfo = info;
+    func setTestCase(_ info:NSDictionary?) {
+        m_testCaseInfo = info != nil ? NSMutableDictionary(dictionary: info!) : nil
         
         m_doneBtn.title = (m_testCaseInfo == nil) ? "新建" : "保存"
         
@@ -187,6 +194,14 @@ class AdvanceSettingViewController: NSViewController, NSPopoverDelegate {
         }
         m_propertyViews.removeAllObjects()
         
+        let classs = m_baseInfo.value(forKey: "Classs") as! NSArray
+        m_typeBox.removeAllItems()
+        for cl in classs {
+            let classInfo = cl as! NSDictionary
+            m_typeBox.addItem(withObjectValue: classInfo.value(forKey: "Name") as! String);
+        }
+        m_typeBox.isEnabled = classs.count > 1
+        
         if (m_baseInfo.value(forKey: "Params") != nil) {
             let propertys = m_baseInfo.value(forKey: "Params") as! NSArray
             for property in propertys {
@@ -240,6 +255,20 @@ class AdvanceSettingViewController: NSViewController, NSPopoverDelegate {
                 }
             }
         }
+        
+        if (m_testCaseInfo != nil) {
+            let cClass = m_testCaseInfo!.value(forKey: "Class") as! NSString
+            let classs = m_baseInfo.value(forKey: "Classs") as! NSArray
+            for cl in classs {
+                let classInfo = cl as! NSDictionary
+                if (cClass.isEqual(to: classInfo.value(forKey: "Class"))) {
+                    m_typeBox.selectItem(at: classs.index(of: cl))
+                    break
+                }
+            }
+        }else {
+            m_typeBox.selectItem(at: 0)
+        }
     }
     
     /// Show
@@ -287,7 +316,10 @@ class AdvanceSettingViewController: NSViewController, NSPopoverDelegate {
             property.setValue(m_testCaseInfo?.value(forKey: "ID"), forKey: "ID")
         }
         property.setValue(m_baseInfo.value(forKey: "Extention"), forKey: "Extention")
-        property.setValue(m_baseInfo.value(forKey: "Class"), forKey: "Class")
+        
+        let classs = m_baseInfo.value(forKey: "Classs") as! NSArray
+        let classInfo = classs.object(at: m_typeBox.indexOfSelectedItem) as! NSDictionary
+        property.setValue(classInfo.value(forKey: "Class") as! String, forKey: "Class")
         
         let params = NSMutableDictionary()
         property.setValue(params, forKey: "Params")

+ 29 - 5
KdanAutoTest/KdanAuto/Class/AdvanceSettingViewController/AdvanceSettingViewController.xib

@@ -73,7 +73,7 @@
                     </textFieldCell>
                 </textField>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="zfg-R0-oKb">
-                    <rect key="frame" x="10" y="217" width="150" height="16"/>
+                    <rect key="frame" x="10" y="216" width="150" height="16"/>
                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="测试项文件夹:" id="mPc-yn-FfJ">
                         <font key="font" usesAppearanceFont="YES"/>
@@ -82,7 +82,7 @@
                     </textFieldCell>
                 </textField>
                 <textField verticalHuggingPriority="750" id="Ldt-LK-o1o">
-                    <rect key="frame" x="161" y="214" width="219" height="21"/>
+                    <rect key="frame" x="161" y="213" width="219" height="21"/>
                     <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                     <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="文件夹路径,例如 Others" bezelStyle="round" id="ykm-cJ-FBx">
                         <font key="font" metaFont="system"/>
@@ -91,15 +91,38 @@
                     </textFieldCell>
                 </textField>
                 <customView id="bQp-XC-Exy">
-                    <rect key="frame" x="0.0" y="200" width="400" height="1"/>
+                    <rect key="frame" x="0.0" y="176" width="400" height="1"/>
                     <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                 </customView>
                 <customView id="0Lu-IC-dfs">
-                    <rect key="frame" x="0.0" y="0.0" width="400" height="200"/>
+                    <rect key="frame" x="0.0" y="0.0" width="400" height="176"/>
                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                 </customView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="cUx-n5-N5N">
+                    <rect key="frame" x="10" y="188" width="150" height="16"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="测试类型:" id="h60-4x-Ukn">
+                        <font key="font" usesAppearanceFont="YES"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+                <comboBox verticalHuggingPriority="750" id="On5-GN-b2q">
+                    <rect key="frame" x="162" y="184" width="221" height="23"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                    <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="ufE-MB-wFA">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        <objectValues>
+                            <string>Item 1</string>
+                            <string>Item 2</string>
+                            <string>Item 3</string>
+                        </objectValues>
+                    </comboBoxCell>
+                </comboBox>
             </subviews>
-            <point key="canvasLocation" x="41.5" y="171"/>
+            <point key="canvasLocation" x="41" y="171"/>
         </customView>
         <customObject id="vIn-MJ-Oxl" customClass="AdvanceSettingViewController" customModule="KdanAuto" customModuleProvider="target">
             <connections>
@@ -111,6 +134,7 @@
                 <outlet property="m_sepLine" destination="bQp-XC-Exy" id="mkA-nr-7Mm"/>
                 <outlet property="m_titleBarView" destination="HTm-GH-rqU" id="5hZ-bM-wJK"/>
                 <outlet property="m_titleLbl" destination="7q6-6M-zhb" id="cSH-S7-aDC"/>
+                <outlet property="m_typeBox" destination="On5-GN-b2q" id="QqY-gz-LPc"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="Dg9-w8-unQ"/>
             </connections>
         </customObject>

+ 12 - 6
KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTest.swift

@@ -35,6 +35,7 @@ class AutoTest : NSObject, AutoTestProtocal {
     }
     
     class func autoTestFor(_ fileType:NSString ,id:NSString) -> AutoTest? {
+        let cFileType = fileType
         let key = String(fileType)
         let ID = String(id)
         
@@ -48,7 +49,7 @@ class AutoTest : NSObject, AutoTestProtocal {
             }
         }
         
-        let fileTypes = testTypeInfo[fileType] as! NSArray
+        let fileTypes = testTypeInfo[cFileType] as! NSArray
         let clsname = "KdanAuto"//Bundle.main.infoDictionary! ["CFBundleExecutable"]
         
         var objectInfo = cacheObjects.value(forKey: key) as? NSMutableDictionary
@@ -72,7 +73,7 @@ class AutoTest : NSObject, AutoTestProtocal {
                 let object = cl.shared()
                 object?.m_id = cID as String
                 object?.m_info = cItem
-                object?._fileType = fileType as String
+                object?._fileType = cFileType as String
                 object?._type = String(cType)
                 object?._extention = String(cExtention)
                 object?._name = String(cName)
@@ -88,7 +89,7 @@ class AutoTest : NSObject, AutoTestProtocal {
         let object = AutoTest.shared()
         
         object?.m_id = id as String
-        object?._fileType = fileType as String
+        object?._fileType = cFileType as String
         object?._type = String(cType)
         object?._extention = ""
         object?._name = "对照测试"
@@ -152,6 +153,10 @@ class AutoTest : NSObject, AutoTestProtocal {
         return self.selectedKeys().contains("快照")
     }
     
+    func needTest() -> Bool {
+        return needCompareTest()
+    }
+    
     func status() -> AutoTestStatus {
         return _status
     }
@@ -967,12 +972,13 @@ let kAutoTestObjectUpdateNotification = "kAutoTestObjectUpdateNotification"
 extension AutoTest {
     
     class func dateString() -> String {
-        let date = NSDate.now
+        let date = NSDate()
         
         return NSString(format: "%.0f", date.timeIntervalSince1970) as String
     }
     
     class func createObject(_ fileType:NSString, property:NSDictionary) -> AutoTest? {
+        NSLog("\(fileType):\(property)")
         let key = fileType as String
         var ID = property.value(forKey: "ID") as? String
         
@@ -1010,7 +1016,7 @@ extension AutoTest {
         
         let object = cl.shared()
         object?.m_id = cID as String
-        object?.m_info = params
+        object?.m_info = NSDictionary(dictionary: params)
         object?._fileType = fileType as String
         object?._type = String(cType)
         object?._extention = String(cExtention)
@@ -1033,7 +1039,7 @@ extension AutoTest {
         let cParams = property["Params"] as? NSDictionary
         
         self.m_id = cID as String
-        self.m_info = property
+        self.m_info = NSDictionary(dictionary: property)
         self._type = String(cType)
         self._extention = String(cExtention)
         self._name = String(cName)

+ 1 - 0
KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTestProtocal.swift

@@ -34,6 +34,7 @@ protocol AutoTestProtocal : NSObjectProtocol {
     func setSelectedKeys(_ keys:NSArray)
     // 是否勾选了快照测试
     func needCompareTest() -> Bool
+    func needTest() -> Bool
     
 //    func autoTest()
     func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ())

+ 1 - 2
KdanAutoTest/KdanAuto/Class/AutoTestCase/PDFCompareTest.swift

@@ -10,9 +10,8 @@ import AppKit
 
 class PDFCompareTest : AutoTest {
     
-    static var pdfSharedInstance = PDFCompareTest()
     override class func shared() -> AutoTest? {
-        return pdfSharedInstance
+        return PDFCompareTest()
     }
     
     override func clearCacheFiles() {

+ 516 - 0
KdanAutoTest/KdanAuto/Class/AutoTestCase/StringAutoCompare.swift

@@ -0,0 +1,516 @@
+//
+//  CharacterAutoTest.swift
+//  KdanAuto
+//
+//  Created by 朱东勇 on 2022/11/22.
+//
+
+import Foundation
+import Cocoa
+
+class StringAutoCompare : AutoTest {
+    
+//    override func type() -> String {
+//        return "PDFConvert_China_Auto_Test"
+//    }
+    
+    override func name() -> String {
+        return _name
+    }
+    
+    override func keys() -> NSArray {
+        return ["字符"]
+    }
+    
+    
+    override func needTest() -> Bool {
+        return self.selectedKeys().count > 0
+    }
+    
+    
+    override class func shared() -> AutoTest? {
+        return StringAutoCompare()
+    }
+    
+    
+    // Auto Test refrence Check File
+    override func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ()) {
+        self.compareFinishedFiles.removeAllObjects();
+        self.convertFiles.removeAllObjects()
+        
+//        clearCacheFiles()
+        
+        let needCheckString = self.selectedKeys().contains("字符")
+        
+        if !needCheckString {
+            _status = .Finished
+            complention(self, self.reportString)
+            return
+        }
+        
+        _status = .Process
+        reportString = NSMutableAttributedString.init(string: "\n【\(String(self.fileType())) - \(self.name())】字符比对开始!\n",
+                                                      attributes:[.foregroundColor : NSColor.blue])
+        let files = DataModel.shared.originFilesFor(_fileType, type: _type)
+        self.testFiles = NSArray(array: files);
+        
+        let checkDirectory = self.checkFileDirectory()
+        let originDirectory = self.originFileDirectory()
+        let resultDirectory = self.resultFileDirectory()
+        
+        if (files.count > 0) {
+            try? FileManager.default.createDirectory(atPath: checkDirectory, withIntermediateDirectories: true);
+            try? FileManager.default.createDirectory(atPath: resultDirectory, withIntermediateDirectories: true);
+        }
+        
+        var tDegree = Double(0);
+        var tCount = Int(0)
+        var fileIndex = 0;
+        
+        var convertFileBlock = { (files:[String]) in }
+        convertFileBlock = { (files:[String]) in
+            if (fileIndex >= files.count) {
+                TestDegreeManager.shared().set(((tCount != 0) ? tDegree/Double(tCount) : 0.0),
+                                               fileType: self.fileType(),
+                                               type: self.type())
+                
+                self._status = .Finished
+                DispatchQueue.main.async {
+                    autoreleasepool {
+                        complention(self, self.reportString);
+                    }
+                }
+                return
+            }
+            
+            let fileName = files[fileIndex]
+            let fName = NSString(string: fileName).deletingPathExtension
+            let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
+            let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+self.extention())
+            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+self.extention())
+            
+            
+            self.reportString?.append(NSMutableAttributedString.init(string: "\n【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
+                                                                attributes:[.foregroundColor : NSColor.black]))
+            // ...
+            // 执行转换过程
+            let index = self.testFiles.index(of: fileName);
+            if (index != NSNotFound) {
+                self.convertProgress = Double(index) / Double(self.testFiles.count)
+            }
+            self.convertFiles.add(fileName);
+            self.testlog("开始对照:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+//            self.process(originPath, resultPath: resultPath) { status in
+                let status = 1
+                if FileManager.default.fileExists(atPath: resultPath) && status == 1 {
+                    if needCheckString && FileManager.default.fileExists(atPath: checkPath) {
+                        DispatchQueue.global().async {
+                            let checkString = self.readTextFile(checkPath as NSString)
+                            let resultStr = self.readTextFile(resultPath as NSString)
+                            
+                            if (checkString != nil && resultStr != nil) {
+                                let maxSize = checkString!.count
+                                let report = NSMutableAttributedString(string: "")
+                                let degree = self.compareString(checkString as! NSString, result: resultStr as! NSString) { appAttr in
+                                    report.append(appAttr)
+                                }
+//                                let degree = self.compareString(checkString as! NSString, result: resultStr as! NSString) { skipString, failString in
+//                                    self.appendErrorInfo(skipString, failString: failString)
+//                                }
+                                
+                                var color = NSColor.black
+                                if fabs(degree-100.0) >= 0.01 {
+                                    color = NSColor.red
+                                }
+                                tDegree += degree;
+                                tCount += 1
+                                
+                                TestDegreeManager.shared().set(degree,
+                                                               fileType: self.fileType(),
+                                                               type: self.type(),
+                                                               fileName: fileName)
+                                
+                                let successCount = Int(maxSize * Int(degree)/100)
+                                report.append(NSAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"比对完成,准确率\(degree)%(\(successCount)/\(maxSize))\n",
+                                                                                  attributes:[.foregroundColor : color]))
+                                if (report != nil) {
+                                    do {
+                                        let rtfData = try? report.data(from: .init(location: 0, length: report.length),
+                                                                                   documentAttributes: [.documentType: NSAttributedString.DocumentType.rtf])
+                                        
+                                        let path = NSString(string: resultPath).appendingPathExtension("rtf")
+                                        try? FileManager.default.removeItem(atPath: path!);
+                                        try? rtfData?.write(to: NSURL.fileURL(withPath: path!))
+                                    } catch {
+                                    }
+                                    self.reportString?.append(report)
+                                }
+                            }
+                            
+                            let index = self.testFiles.index(of: fileName);
+                            if (index != NSNotFound) {
+                                self.compareProgress = Double(index) / Double(self.testFiles.count)
+                            }
+                            self.compareFinishedFiles.add(fileName);
+                            self.testlog("对比完成:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+                            
+                            fileIndex += 1
+                            convertFileBlock(files);
+                        }
+                    }else {
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】对照文件 \"\(fName)\"不存在!\n",
+                                                                                 attributes:[.foregroundColor : NSColor.red]))
+                            
+                        let index = self.testFiles.index(of: fileName);
+                        if (index != NSNotFound) {
+                            self.compareProgress = Double(index) / Double(self.testFiles.count)
+                        }
+                        self.compareFinishedFiles.add(fileName);
+                        self.testlog("对比完成:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+                        
+                        fileIndex += 1
+                        convertFileBlock(files);
+                    }
+                }else {
+                    if (status == 0) {
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档失败!\n",
+                                                                            attributes:[.foregroundColor : NSColor.red]))
+                    }else if (status == -1 || status == -2) {
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"文档无法打开!\n",
+                                                                            attributes:[.foregroundColor : NSColor.red]))
+                    }else if (status == -3) {
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档中 Crash!\n",
+                                                                            attributes:[.foregroundColor : NSColor.red]))
+                    }
+                    
+                    let index = self.testFiles.index(of: fileName);
+                    if (index != NSNotFound) {
+                        self.compareProgress = Double(index) / Double(self.testFiles.count)
+                    }
+                    self.compareFinishedFiles.add(fileName);
+                    self.testlog("对比完成:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+                    fileIndex += 1
+                    convertFileBlock(files);
+                }
+//            }
+        }
+        convertFileBlock(files);
+    }
+    
+    ///Compare
+    
+    /// Tools
+    func appendErrorInfo(_ skipString:NSString, failString: NSString) {
+        if skipString.length > 0  && failString.length > 0 {
+            reportString?.append(NSMutableAttributedString.init(string: "对比字符串【\(skipString)】错识别为【\(failString)】\n",
+                                                                attributes:[.foregroundColor : NSColor.red]))
+        }else if (skipString.length > 0) {
+            reportString?.append(NSMutableAttributedString.init(string: "对比字符串【\(skipString)】未识别到\n",
+                                                                attributes:[.foregroundColor : NSColor.red]))
+        }else if failString.length > 0 {
+            reportString?.append(NSMutableAttributedString.init(string: "字符串【\(failString)】识别出错\n",
+                                                                attributes:[.foregroundColor : NSColor.red]))
+        }
+    }
+    
+    func attributeStringWith(_ skipString:NSString, failString: NSString) -> NSAttributedString {
+        if skipString.length > 0  && failString.length > 0 {
+            let strikethroughStyle = NSParagraphStyle.init()
+            let attString = NSMutableAttributedString.init(string: skipString as String,
+                                                           attributes:[.foregroundColor : NSColor.red,
+                                                                       .strikethroughStyle:NSNumber(integerLiteral: NSUnderlineStyle.single.rawValue),
+                                                                       ])
+            attString.append(NSMutableAttributedString.init(string: failString as String,
+                                                            attributes:[.foregroundColor : NSColor.blue,
+                                                            ]))
+            return attString
+        }else if (skipString.length > 0) {
+            let strikethroughStyle = NSParagraphStyle.init()
+            let attString = NSMutableAttributedString.init(string: skipString as String,
+                                                           attributes:[.foregroundColor : NSColor.red,
+                                                                       .strikethroughStyle:NSNumber(integerLiteral: NSUnderlineStyle.single.rawValue),
+                                                           ])
+            return attString
+        }else if failString.length > 0 {
+            let strikethroughStyle = NSParagraphStyle.init()
+            let attString = NSMutableAttributedString.init(string: failString as String,
+                                                           attributes:[.foregroundColor : NSColor.blue,
+                                                                      ])
+            return attString
+        }
+        
+        return NSAttributedString()
+    }
+    
+    func replaceUnicodeString(_ string:NSString) -> NSString {//中
+        let items = string.components(separatedBy: "\\u") as [NSString]
+        
+        var resultString = NSString()
+        for item in items {
+            if (item.contains("?")) {
+                let unicodeValue = item.intValue
+                let skipRange = item.range(of: "?")
+                let nextString = item.substring(from: Int(skipRange.location + skipRange.length)) as NSString
+                let bytes : [UInt8] = [UInt8(unicodeValue/256),UInt8(unicodeValue%256)]
+                let data = NSData.init(bytes: bytes, length: 2)
+                
+                let unicodeString = NSString.init(data: data as Data, encoding: NSUnicodeStringEncoding)! as NSString
+                resultString = resultString.appending(String("\(unicodeString)\(nextString)")) as NSString
+            }else {
+                resultString = resultString.appending(String(item)) as NSString
+            }
+        }
+        
+        return resultString
+    }
+    
+    
+    /// Compare
+    func compareString(_ check:NSString, result:NSString, callback:@escaping (_ appAttr:NSAttributedString)->()) -> Double {
+//    func compareString(_ check:NSString, result:NSString, failure:@escaping (_ skipString:NSString, _ failString:NSString)->()) -> Double {
+        return autoreleasepool {
+            var checkString = check
+            var resultStr = result
+            let maxSize = checkString.length
+            var successCount = 0;
+            /**
+             (A0 = B0)
+             - A-1 & B-1
+             (A0 != B0) & (A0 in B) & (B0 in A)
+             - 取 A0,B0最小 Range 值
+             - 字符串裁剪对齐
+             (A0 != B0) & (A0 in B)
+             - 存储B0到识别错误缓存
+             (A0 != B0) & (B0 in A)
+             - 存储 A0到识别遗漏字符串
+             (A0 != B0)
+             - 分别存储 A0、B0到遗漏及错误字串
+             */
+            var skipString = NSString()
+            var failString = NSString()
+            while (checkString.length > 0 && resultStr.length > 0) {
+                let subc = checkString.substring(to: 1) as NSString
+                let subr = resultStr.substring(to: 1) as NSString
+                
+                let cRange = checkString.range(of: subr as String)
+                let rRange = resultStr.range(of: subc as String)
+                
+                if subc.isEqual(to: subr) { // (A0 = B0)
+                                            // Check Success
+                    callback(attributeStringWith(skipString, failString: failString))
+//                    failure(skipString, failString)
+//                    self.appendErrorInfo(skipString, failString: failString)
+                    skipString = NSString()
+                    failString = NSString()
+                    
+                    
+                    checkString = checkString.substring(from:1) as NSString
+                    resultStr = resultStr.substring(from:1) as NSString
+                    successCount = successCount + 1
+                    callback(NSAttributedString(string: subc as String))
+                } else if (cRange.location != NSNotFound &&
+                           rRange.location != NSNotFound) {
+                    if (min(cRange.location, rRange.location) >= 2) {
+                        let nextc = checkString.substring(with: NSRange(location: 1, length: 1)) as NSString
+                        let nextr = resultStr.substring(with: NSRange(location: 1, length: 1)) as NSString
+                        let ncRange = checkString.range(of: nextr as String)
+                        let nrRange = resultStr.range(of: nextc as String)
+                        
+                        if (min(nrRange.location, ncRange.location) < min(cRange.location, rRange.location)) {
+                            if (ncRange.location < nrRange.location) {
+                                //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                                skipString = skipString.appending(subc as String) as NSString
+                                checkString = checkString.substring(from:1) as NSString
+                            }else {
+                                //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                                failString = failString.appending(subr as String) as NSString
+                                resultStr = resultStr.substring(from:1) as NSString
+                            }
+                        }else if (cRange.location < rRange.location) {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            skipString = skipString.appending(subc as String) as NSString
+                            checkString = checkString.substring(from:1) as NSString
+                        }else {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            failString = failString.appending(subr as String) as NSString
+                            resultStr = resultStr.substring(from:1) as NSString
+                        }
+                    }else {
+                        if (cRange.location < rRange.location) {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            skipString = skipString.appending(subc as String) as NSString
+                            checkString = checkString.substring(from:1) as NSString
+                        }else {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            failString = failString.appending(subr as String) as NSString
+                            resultStr = resultStr.substring(from:1) as NSString
+                        }
+//                        //                    self.appendErrorInfo(skipString, failString: failString)
+//                        callback(attributeStringWith(skipString, failString: failString))
+//                        //                    failure(skipString, failString)
+//                        skipString = NSString()
+//                        failString = NSString()
+//
+//                        // C:a[bcde]fghij
+//                        // R:f[klmnbvcx]a
+//                        if (cRange.location < rRange.location) {
+//                            let cacheString = checkString.substring(to:cRange.location + cRange.length)
+//                            callback(attributeStringWith(cacheString as NSString, failString: ""))
+//                            //                        failure(cacheString as NSString, "")
+//                            //                        self.reportString?.append(NSMutableAttributedString.init(string: "对照字符串【\(cacheString)】未识别到\n",
+//                            //                                                                                 attributes:[.foregroundColor : NSColor.red]))
+//                            checkString = checkString.substring(from:cRange.location) as NSString
+//                        }else {
+//                            let cacheString = resultStr.substring(to:rRange.location)
+//                            callback(attributeStringWith("", failString: cacheString as NSString))
+//                            //                        failure("", cacheString as NSString)
+//                            //                        self.reportString?.append(NSMutableAttributedString.init(string: "字符串【\(cacheString)】识别出错\n",
+//                            //                                                                                 attributes:[.foregroundColor : NSColor.red]))
+//                            resultStr = resultStr.substring(from:rRange.location + rRange.length) as NSString
+//                        }
+                    }
+                }else if (cRange.location != NSNotFound) {
+                    //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                    skipString = skipString.appending(subc as String) as NSString
+                    checkString = checkString.substring(from:1) as NSString
+                }else if (rRange.location != NSNotFound) {
+                    //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                    failString = failString.appending(subr as String) as NSString
+                    resultStr = resultStr.substring(from:1) as NSString
+                }else {
+                    //  两个子字串均未找到
+                    skipString = skipString.appending(subc as String) as NSString
+                    failString = failString.appending(subr as String) as NSString
+                    
+                    checkString = checkString.substring(from:1) as NSString
+                    resultStr = resultStr.substring(from:1) as NSString
+                }
+            }
+            
+            skipString = skipString.appending(checkString as String) as NSString
+            failString = failString.appending(resultStr as String) as NSString
+//            failure(skipString, failString)
+            callback(attributeStringWith(skipString, failString: failString))
+            callback(NSAttributedString(string: "\n"))
+            
+            let degree = (maxSize>1) ? Double(Float(successCount)/Float(maxSize) * 100) : 0
+            
+            return degree
+        }
+    }
+    
+    // Read File
+    func readTextFile(_ filePath:NSString) -> String? {
+        if NSArray(array: ["TXT", "txt"]).contains(filePath.pathExtension) {
+            var checkString = try? NSString.init(contentsOfFile: filePath as String, encoding: NSUTF8StringEncoding)
+            if (checkString != nil) {
+                checkString = checkString!.replacingOccurrences(of: "\n", with: "") as NSString
+                checkString = checkString!.replacingOccurrences(of: " ", with: "") as NSString
+                return checkString! as String
+            }
+            return nil
+        }else if NSArray(array: ["rtf", "RTF"]).contains(filePath.pathExtension) {
+            // Load check file
+            let checkData = NSData.init(contentsOfFile: filePath as String) as! Data
+            var documentAttributes:NSDictionary!
+            let checkAttString = NSAttributedString.init(rtf: checkData, documentAttributes: &documentAttributes)
+            var checkString = NSString(string: checkAttString!.string) as NSString
+            checkString = checkString.replacingOccurrences(of: "\n", with: "") as NSString
+            checkString = checkString.replacingOccurrences(of: " ", with: "") as NSString
+            // 常规 rtf 读取失败
+            
+            //使用框排进行读取
+            if (checkString.length > 0) {
+                return checkString as String?
+            }
+            
+            var resultString = try? NSString.init(contentsOfFile: filePath as String, encoding: NSUTF8StringEncoding)
+            
+            if (nil != resultString && !resultString!.contains("\\shptxt\\shptxt")) {
+                resultString = resultString!.replacingOccurrences(of: "\n", with: "") as NSString
+                resultString = resultString!.replacingOccurrences(of: " ", with: "") as NSString
+                return resultString! as String
+            }
+            
+            //识别字符串 \shptxt\shptxt ... }
+            let pageInfoStrings = resultString!.components(separatedBy: "\\shptxt\\shptxt") as NSArray
+            var finalString = ""
+            if pageInfoStrings.count > 0 {
+                let subStrings = pageInfoStrings.subarray(with: NSMakeRange(1, Int(pageInfoStrings.count - 1))) as! [String]
+                for pageInfoString in subStrings {
+                    let endRange = NSString(string: pageInfoString).range(of: "}")
+                    finalString = finalString.appending(NSString(string: pageInfoString).substring(to: endRange.location))
+                }
+            }
+            
+            
+            //识别所有 【空格 ~ \】 之间的值,并进行缝合
+            // Detect all strings between Spaces and \ and stitch
+            let strings = finalString.components(separatedBy: " ")
+            var resultStr = "" as NSString
+            for str in strings {
+                let markStr = str as NSString
+                
+                if (markStr.contains("\\f")) {
+                    let fRange = markStr.range(of: "\\f")
+                    let cRange = markStr.range(of: "\\c")
+                    let bRange = markStr.range(of: "\\b")
+                    let iRange = markStr.range(of: "\\i")
+                    let eRange = markStr.range(of: "\\e")
+                    let pRange = markStr.range(of: "\\p")
+                    let minPos = min(Int(fRange.location),
+                                     Int(cRange.location),
+                                     Int(bRange.location),
+                                     Int(iRange.location),
+                                     Int(eRange.location),
+                                     Int(pRange.location))
+                    resultStr = resultStr.appending(markStr.substring(to: minPos)) as NSString
+                }else {
+                    resultStr = resultStr.appending(markStr as String) as NSString
+                }
+            }
+            
+            resultStr = self.replaceUnicodeString(resultStr)
+            
+            
+            resultStr = resultStr.replacingOccurrences(of: "\n", with: "") as NSString
+            resultStr = resultStr.replacingOccurrences(of: " ", with: "") as NSString
+            resultStr = resultStr.replacingOccurrences(of: "\\pard", with: "") as NSString
+            resultStr = resultStr.replacingOccurrences(of: "\\par", with: "") as NSString
+            
+            return resultStr as String?
+        }
+        
+        return nil
+    }
+    
+    
+    override func compareFiles() -> NSArray? {
+        return nil
+    }
+    
+    override func compareFiles(_ fileName: String) -> NSArray? {
+        return nil
+    }
+    
+    
+    /**
+     Replace the refrence image for next image check test
+     */
+    override func canUpdateRefImage() -> Bool {
+        return false
+    }
+    
+    override func updateRefImage() {
+        
+    }
+    
+    override func canUpdateRefImage(_ fileName:String) -> Bool {
+        return false
+    }
+    
+    override func updateRefImage(_ fileName:String) {
+        
+    }
+    
+}

+ 365 - 203
KdanAutoTest/KdanAuto/Class/AutoTestCase/StringAutoTest.swift

@@ -8,7 +8,7 @@
 import Foundation
 import Cocoa
 
-class CharacterAutoTest : AutoTest {
+class StringAutoTest : AutoTest {
     
 //    override func type() -> String {
 //        return "PDFConvert_China_Auto_Test"
@@ -19,23 +19,30 @@ class CharacterAutoTest : AutoTest {
     }
     
     override func keys() -> NSArray {
-        return ["字符", "快照"]
+        return ["字符"]
     }
     
-    static var cSharedInstance = CharacterAutoTest()
+    
+    override func needTest() -> Bool {
+        return self.selectedKeys().count > 0
+    }
+    
+    
     override class func shared() -> AutoTest? {
-        return cSharedInstance
+        return StringAutoTest()
     }
     
     
     // Auto Test refrence Check File
     override func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ()) {
+        self.compareFinishedFiles.removeAllObjects();
+        self.convertFiles.removeAllObjects()
+        
         clearCacheFiles()
         
-        let checkString = self.selectedKeys().contains("字符")
-        let needCompare = self.selectedKeys().contains("快照")
+        let needCheckString = self.selectedKeys().contains("字符")
         
-        if !needCompare && !checkString {
+        if !needCheckString {
             _status = .Finished
             complention(self, self.reportString)
             return
@@ -45,6 +52,7 @@ class CharacterAutoTest : AutoTest {
         reportString = NSMutableAttributedString.init(string: "\n【\(String(self.fileType())) - \(self.name())】字符比对开始!\n",
                                                       attributes:[.foregroundColor : NSColor.blue])
         let files = DataModel.shared.originFilesFor(_fileType, type: _type)
+        self.testFiles = NSArray(array: files);
         
         let checkDirectory = self.checkFileDirectory()
         let originDirectory = self.originFileDirectory()
@@ -86,211 +94,81 @@ class CharacterAutoTest : AutoTest {
                                                                 attributes:[.foregroundColor : NSColor.black]))
             // ...
             // 执行转换过程
+            let index = self.testFiles.index(of: fileName);
+            if (index != NSNotFound) {
+                self.convertProgress = Double(index) / Double(self.testFiles.count)
+            }
+            self.convertFiles.add(fileName);
+            self.testlog("开始转换:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
             self.process(originPath, resultPath: resultPath) { status in
                 if FileManager.default.fileExists(atPath: resultPath) && status == 1 {
-                    if checkString && FileManager.default.fileExists(atPath: checkPath) {
-                        // Load check file
-                        let checkData = NSData.init(contentsOfFile: checkPath) as! Data
-                        var documentAttributes:NSDictionary!
-                        let checkAttString = NSAttributedString.init(rtf: checkData, documentAttributes: &documentAttributes)
-                        var checkString = NSString(string: checkAttString!.string) as NSString
-                        
-                        let resultString = try? NSString.init(contentsOfFile: resultPath, encoding: NSUTF8StringEncoding)
-                        
-                        
-#if false
-                        //识别字符串 \shptxt\shptxt ... }
-                        let pageInfoStrings = resultString!.components(separatedBy: "\\shptxt\\shptxt") as NSArray
-                        var finalString = ""
-                        if pageInfoStrings.count > 0 {
-                            let subStrings = pageInfoStrings.subarray(with: NSMakeRange(1, Int(pageInfoStrings.count - 1))) as! [String]
-                            for pageInfoString in subStrings {
-                                let endRange = NSString(string: pageInfoString).range(of: "}")
-                                finalString = finalString.appending(NSString(string: pageInfoString).substring(to: endRange.location))
-                            }
-                        }
-                        
-                        
-                        //识别所有 【空格 ~ \】 之间的值,并进行缝合
-                        // Detect all strings between Spaces and \ and stitch
-                        let strings = finalString.components(separatedBy: " ")
-                        var resultStr = "" as NSString
-                        for str in strings {
-                            let markStr = str as NSString
+                    if needCheckString && FileManager.default.fileExists(atPath: checkPath) {
+                        DispatchQueue.global().async {
+                            let checkString = self.readTextFile(checkPath as NSString)
+                            let resultStr = self.readTextFile(resultPath as NSString)
                             
-                            if (markStr.contains("\\f")) {
-                                let fRange = markStr.range(of: "\\f")
-                                let cRange = markStr.range(of: "\\c")
-                                let bRange = markStr.range(of: "\\b")
-                                let iRange = markStr.range(of: "\\i")
-                                let eRange = markStr.range(of: "\\e")
-                                let pRange = markStr.range(of: "\\p")
-                                let minPos = min(Int(fRange.location),
-                                                 Int(cRange.location),
-                                                 Int(bRange.location),
-                                                 Int(iRange.location),
-                                                 Int(eRange.location),
-                                                 Int(pRange.location))
-                                resultStr = resultStr.appending(markStr.substring(to: minPos)) as NSString
-                            }else {
-                                resultStr = resultStr.appending(markStr as String) as NSString
-                            }
-                        }
-                        resultStr = self.replaceUnicodeString(resultStr)
-#else
-                        let resultData = NSData.init(contentsOfFile: resultPath) as! Data
-                        var rDocumentAttributes:NSDictionary!
-                        let resultAttString = NSAttributedString.init(rtf: resultData, documentAttributes: &rDocumentAttributes)
-                        var resultStr = NSString(string: resultAttString!.string)
-#endif
-                        resultStr = resultStr.replacingOccurrences(of: "\n", with: "") as NSString
-                        checkString = checkString.replacingOccurrences(of: "\n", with: "") as NSString
-                        resultStr = resultStr.replacingOccurrences(of: " ", with: "") as NSString
-                        checkString = checkString.replacingOccurrences(of: " ", with: "") as NSString
-                        resultStr = resultStr.replacingOccurrences(of: "\\pard", with: "") as NSString
-                        resultStr = resultStr.replacingOccurrences(of: "\\par", with: "") as NSString
-                        
-                        //                do { // save cache file for test
-                        //                    try? NSString(string: resultStr).write(toFile: NSString(string: DataModel.shared.resultPath()).appending("/\(self.name())-result-cache.txt"),
-                        //                                                      atomically: true, encoding: NSUTF8StringEncoding)
-                        //
-                        //                    try? NSString(string: checkString).write(toFile: NSString(string: DataModel.shared.resultPath()).appending("/\(self.name())-check-cache.txt"),
-                        //                                                          atomically: true, encoding: NSUTF8StringEncoding)
-                        //                }
-                        
-                        let maxSize = checkString.length
-                        var successCount = 0;
-                        /**
-                         (A0 = B0)
-                         - A-1 & B-1
-                         (A0 != B0) & (A0 in B) & (B0 in A)
-                         - 取 A0,B0最小 Range 值
-                         - 字符串裁剪对齐
-                         (A0 != B0) & (A0 in B)
-                         - 存储B0到识别错误缓存
-                         (A0 != B0) & (B0 in A)
-                         - 存储 A0到识别遗漏字符串
-                         (A0 != B0)
-                         - 分别存储 A0、B0到遗漏及错误字串
-                         */
-                        var skipString = NSString()
-                        var failString = NSString()
-                        while (checkString.length > 0 && resultStr.length > 0) {
-                            let subc = checkString.substring(to: 1) as NSString
-                            let subr = resultStr.substring(to: 1) as NSString
-                            
-                            if subc.isEqual(to: subr) { // (A0 = B0)
-                                                        // Check Success
-                                self.appendErrorInfo(skipString, failString: failString)
-                                skipString = NSString()
-                                failString = NSString()
-                                
-                                
-                                checkString = checkString.substring(from:1) as NSString
-                                resultStr = resultStr.substring(from:1) as NSString
-                                successCount = successCount + 1
-                            }else if (checkString.contains(subr as String) && resultStr.contains(subc as String)) {
-                                self.appendErrorInfo(skipString, failString: failString)
-                                skipString = NSString()
-                                failString = NSString()
-                                
-                                let cRange = checkString.range(of: subr as String)
-                                let rRange = resultStr.range(of: subc as String)
-                                
-                                if (cRange.location < rRange.location) {
-                                    let cacheString = checkString.substring(to:cRange.location + cRange.length)
-                                    self.reportString?.append(NSMutableAttributedString.init(string: "对照字符串【\(cacheString)】未识别到\n",
-                                                                                        attributes:[.foregroundColor : NSColor.red]))
-                                    checkString = checkString.substring(from:cRange.location) as NSString
-                                }else {
-                                    let cacheString = resultStr.substring(to:rRange.location)
-                                    self.reportString?.append(NSMutableAttributedString.init(string: "字符串【\(cacheString)】识别出错\n",
-                                                                                        attributes:[.foregroundColor : NSColor.red]))
-                                    resultStr = resultStr.substring(from:rRange.location + rRange.length) as NSString
+                            if (checkString != nil && resultStr != nil) {
+                                let maxSize = checkString!.count
+                                let report = NSMutableAttributedString(string: "")
+                                let degree = self.compareString(checkString as! NSString, result: resultStr as! NSString) { appAttr in
+                                    report.append(appAttr)
                                 }
+//                                let degree = self.compareString(checkString as! NSString, result: resultStr as! NSString) { skipString, failString in
+//                                    self.appendErrorInfo(skipString, failString: failString)
+//                                }
                                 
-                            }else if (checkString.contains(subr as String)) {
-                                skipString = skipString.appending(subc as String) as NSString
-                                checkString = checkString.substring(from:1) as NSString
-                            }else if (resultStr.contains(subc as String)) {
-                                failString = failString.appending(subr as String) as NSString
-                                resultStr = resultStr.substring(from:1) as NSString
-                            }else {
-                                skipString = skipString.appending(subc as String) as NSString
-                                failString = failString.appending(subr as String) as NSString
+                                var color = NSColor.black
+                                if fabs(degree-100.0) >= 0.01 {
+                                    color = NSColor.red
+                                }
+                                tDegree += degree;
+                                tCount += 1
                                 
-                                checkString = checkString.substring(from:1) as NSString
-                                resultStr = resultStr.substring(from:1) as NSString
-                            }
-                        }
-                        
-                        skipString = skipString.appending(checkString as String) as NSString
-                        failString = failString.appending(resultStr as String) as NSString
-                        
-                        
-                        self.appendErrorInfo(skipString, failString: failString)
-                        
-                        let degree = Float(successCount)/Float(maxSize) * 100
-                        var color = NSColor.black
-                        if fabs(degree-100.0) >= 0.01 {
-                            color = NSColor.red
-                        }
-                        self.reportString?.append(NSAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"比对完成,准确率\(degree)%(\(successCount)/\(maxSize))\n",
-                                                                     attributes:[.foregroundColor : color]))
-                        
-                    }
-                    // compare screenshoot between result file with check file
-                    if needCompare {
-                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照生成中\n",
-                                                                            attributes:[.foregroundColor : NSColor.black]))
-                        let rComparePath = NSString(string: resultDirectory).appendingPathComponent(fName+".jpg")
-                        let cComparePath = NSString(string: checkDirectory).appendingPathComponent(fName+".jpg")
-                        
-                        let processThumbSemaphore = DispatchSemaphore(value: 0)
-                        var processSuccess = false
-                        let thumbnailQueue = DispatchQueue.global()
-                        thumbnailQueue.async {
-                            autoreleasepool {
-                                processSuccess = ProcessThumbnal.process(resultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048))
+                                TestDegreeManager.shared().set(degree,
+                                                               fileType: self.fileType(),
+                                                               type: self.type(),
+                                                               fileName: fileName)
                                 
-                                if (processSuccess &&
-                                    FileManager.default.fileExists(atPath: rComparePath)) {
-                                    
-                                    let degree = ImageProcess.compareJPEG(rComparePath, checkPath: cComparePath, processCover: true)
-                                    
-                                    if degree == -1 {
-                                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照对比失败,生成快照失败或无比对文件\n",
-                                                                                                 attributes:[.foregroundColor : NSColor.red]))
-                                    }else {
-                                        var color = NSColor.black
-                                        if fabs(degree-100.0) >= 0.01 {
-                                            color = NSColor.red
-                                        }
-                                        
-                                        TestDegreeManager.shared().set(degree,
-                                                                       fileType: self.fileType(),
-                                                                       type: self.type(),
-                                                                       fileName: fileName);
-                                        TestDegreeManager.shared().set(degree,
-                                                                       fileType: self.fileType(),
-                                                                       type: self.type(),
-                                                                       fileName: fileName,
-                                                                       refFilePath: fName+".jpg");
-                                        
-                                        tDegree += degree
-                                        tCount += 1
+                                let successCount = Int(maxSize * Int(degree)/100)
+                                report.append(NSAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"比对完成,准确率\(degree)%(\(successCount)/\(maxSize))\n",
+                                                                                  attributes:[.foregroundColor : color]))
+                                if (report != nil) {
+                                    do {
+                                        let rtfData = try? report.data(from: .init(location: 0, length: report.length),
+                                                                                   documentAttributes: [.documentType: NSAttributedString.DocumentType.rtf])
                                         
-                                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照对比完成,图像相似度 \(degree)%\n",
-                                                                                                 attributes:[.foregroundColor : color]))
+                                        let path = NSString(string: resultPath).appendingPathExtension("rtf")
+                                        try? FileManager.default.removeItem(atPath: path!);
+                                        try? rtfData?.write(to: NSURL.fileURL(withPath: path!))
+                                    } catch {
                                     }
-                                }else {
-                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照生成失败\n",
-                                                                                             attributes:[.foregroundColor : NSColor.red]))
+                                    self.reportString?.append(report)
                                 }
-                                processThumbSemaphore.signal()
                             }
+                            
+                            let index = self.testFiles.index(of: fileName);
+                            if (index != NSNotFound) {
+                                self.compareProgress = Double(index) / Double(self.testFiles.count)
+                            }
+                            self.compareFinishedFiles.add(fileName);
+                            self.testlog("对比完成:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+                            
+                            fileIndex += 1
+                            convertFileBlock(files);
+                        }
+                    }else {
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】对照文件 \"\(fName)\"不存在!\n",
+                                                                                 attributes:[.foregroundColor : NSColor.red]))
+                            
+                        let index = self.testFiles.index(of: fileName);
+                        if (index != NSNotFound) {
+                            self.compareProgress = Double(index) / Double(self.testFiles.count)
                         }
-                        processThumbSemaphore.wait()
+                        self.compareFinishedFiles.add(fileName);
+                        self.testlog("对比完成:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+                        
+                        fileIndex += 1
+                        convertFileBlock(files);
                     }
                 }else {
                     if (status == 0) {
@@ -303,10 +181,16 @@ class CharacterAutoTest : AutoTest {
                         self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档中 Crash!\n",
                                                                             attributes:[.foregroundColor : NSColor.red]))
                     }
+                    
+                    let index = self.testFiles.index(of: fileName);
+                    if (index != NSNotFound) {
+                        self.compareProgress = Double(index) / Double(self.testFiles.count)
+                    }
+                    self.compareFinishedFiles.add(fileName);
+                    self.testlog("对比完成:"+fileName, (self.compareProgress + self.convertProgress)/2.0)
+                    fileIndex += 1
+                    convertFileBlock(files);
                 }
-                
-                fileIndex += 1
-                convertFileBlock(files);
             }
         }
         convertFileBlock(files);
@@ -328,6 +212,35 @@ class CharacterAutoTest : AutoTest {
         }
     }
     
+    func attributeStringWith(_ skipString:NSString, failString: NSString) -> NSAttributedString {
+        if skipString.length > 0  && failString.length > 0 {
+            let strikethroughStyle = NSParagraphStyle.init()
+            let attString = NSMutableAttributedString.init(string: skipString as String,
+                                                           attributes:[.foregroundColor : NSColor.red,
+                                                                       .strikethroughStyle:NSNumber(integerLiteral: NSUnderlineStyle.single.rawValue),
+                                                                       ])
+            attString.append(NSMutableAttributedString.init(string: failString as String,
+                                                            attributes:[.foregroundColor : NSColor.blue,
+                                                            ]))
+            return attString
+        }else if (skipString.length > 0) {
+            let strikethroughStyle = NSParagraphStyle.init()
+            let attString = NSMutableAttributedString.init(string: skipString as String,
+                                                           attributes:[.foregroundColor : NSColor.red,
+                                                                       .strikethroughStyle:NSNumber(integerLiteral: NSUnderlineStyle.single.rawValue),
+                                                           ])
+            return attString
+        }else if failString.length > 0 {
+            let strikethroughStyle = NSParagraphStyle.init()
+            let attString = NSMutableAttributedString.init(string: failString as String,
+                                                           attributes:[.foregroundColor : NSColor.blue,
+                                                                      ])
+            return attString
+        }
+        
+        return NSAttributedString()
+    }
+    
     func replaceUnicodeString(_ string:NSString) -> NSString {//中
         let items = string.components(separatedBy: "\\u") as [NSString]
         
@@ -350,4 +263,253 @@ class CharacterAutoTest : AutoTest {
         return resultString
     }
     
+    
+    /// Compare
+    func compareString(_ check:NSString, result:NSString, callback:@escaping (_ appAttr:NSAttributedString)->()) -> Double {
+//    func compareString(_ check:NSString, result:NSString, failure:@escaping (_ skipString:NSString, _ failString:NSString)->()) -> Double {
+        return autoreleasepool {
+            var checkString = check
+            var resultStr = result
+            let maxSize = checkString.length
+            var successCount = 0;
+            /**
+             (A0 = B0)
+             - A-1 & B-1
+             (A0 != B0) & (A0 in B) & (B0 in A)
+             - 取 A0,B0最小 Range 值
+             - 字符串裁剪对齐
+             (A0 != B0) & (A0 in B)
+             - 存储B0到识别错误缓存
+             (A0 != B0) & (B0 in A)
+             - 存储 A0到识别遗漏字符串
+             (A0 != B0)
+             - 分别存储 A0、B0到遗漏及错误字串
+             */
+            var skipString = NSString()
+            var failString = NSString()
+            while (checkString.length > 0 && resultStr.length > 0) {
+                let subc = checkString.substring(to: 1) as NSString
+                let subr = resultStr.substring(to: 1) as NSString
+                
+                let cRange = checkString.range(of: subr as String)
+                let rRange = resultStr.range(of: subc as String)
+                
+                if subc.isEqual(to: subr) { // (A0 = B0)
+                                            // Check Success
+                    callback(attributeStringWith(skipString, failString: failString))
+//                    failure(skipString, failString)
+//                    self.appendErrorInfo(skipString, failString: failString)
+                    skipString = NSString()
+                    failString = NSString()
+                    
+                    
+                    checkString = checkString.substring(from:1) as NSString
+                    resultStr = resultStr.substring(from:1) as NSString
+                    successCount = successCount + 1
+                    callback(NSAttributedString(string: subc as String))
+                } else if (cRange.location != NSNotFound &&
+                           rRange.location != NSNotFound) {
+                    if (min(cRange.location, rRange.location) >= 2) {
+                        let nextc = checkString.substring(with: NSRange(location: 1, length: 1)) as NSString
+                        let nextr = resultStr.substring(with: NSRange(location: 1, length: 1)) as NSString
+                        let ncRange = checkString.range(of: nextr as String)
+                        let nrRange = resultStr.range(of: nextc as String)
+                        
+                        if (min(nrRange.location, ncRange.location) < min(cRange.location, rRange.location)) {
+                            if (ncRange.location < nrRange.location) {
+                                //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                                skipString = skipString.appending(subc as String) as NSString
+                                checkString = checkString.substring(from:1) as NSString
+                            }else {
+                                //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                                failString = failString.appending(subr as String) as NSString
+                                resultStr = resultStr.substring(from:1) as NSString
+                            }
+                        }else if (cRange.location < rRange.location) {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            skipString = skipString.appending(subc as String) as NSString
+                            checkString = checkString.substring(from:1) as NSString
+                        }else {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            failString = failString.appending(subr as String) as NSString
+                            resultStr = resultStr.substring(from:1) as NSString
+                        }
+                    }else {
+                        if (cRange.location < rRange.location) {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            skipString = skipString.appending(subc as String) as NSString
+                            checkString = checkString.substring(from:1) as NSString
+                        }else {
+                            //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                            failString = failString.appending(subr as String) as NSString
+                            resultStr = resultStr.substring(from:1) as NSString
+                        }
+//                        //                    self.appendErrorInfo(skipString, failString: failString)
+//                        callback(attributeStringWith(skipString, failString: failString))
+//                        //                    failure(skipString, failString)
+//                        skipString = NSString()
+//                        failString = NSString()
+//
+//                        // C:a[bcde]fghij
+//                        // R:f[klmnbvcx]a
+//                        if (cRange.location < rRange.location) {
+//                            let cacheString = checkString.substring(to:cRange.location + cRange.length)
+//                            callback(attributeStringWith(cacheString as NSString, failString: ""))
+//                            //                        failure(cacheString as NSString, "")
+//                            //                        self.reportString?.append(NSMutableAttributedString.init(string: "对照字符串【\(cacheString)】未识别到\n",
+//                            //                                                                                 attributes:[.foregroundColor : NSColor.red]))
+//                            checkString = checkString.substring(from:cRange.location) as NSString
+//                        }else {
+//                            let cacheString = resultStr.substring(to:rRange.location)
+//                            callback(attributeStringWith("", failString: cacheString as NSString))
+//                            //                        failure("", cacheString as NSString)
+//                            //                        self.reportString?.append(NSMutableAttributedString.init(string: "字符串【\(cacheString)】识别出错\n",
+//                            //                                                                                 attributes:[.foregroundColor : NSColor.red]))
+//                            resultStr = resultStr.substring(from:rRange.location + rRange.length) as NSString
+//                        }
+                    }
+                }else if (cRange.location != NSNotFound) {
+                    //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                    skipString = skipString.appending(subc as String) as NSString
+                    checkString = checkString.substring(from:1) as NSString
+                }else if (rRange.location != NSNotFound) {
+                    //‘subc' 字符串有在‘resultStr’中,但'subr'不在’checkString‘中,resultStr 往后推一
+                    failString = failString.appending(subr as String) as NSString
+                    resultStr = resultStr.substring(from:1) as NSString
+                }else {
+                    //  两个子字串均未找到
+                    skipString = skipString.appending(subc as String) as NSString
+                    failString = failString.appending(subr as String) as NSString
+                    
+                    checkString = checkString.substring(from:1) as NSString
+                    resultStr = resultStr.substring(from:1) as NSString
+                }
+            }
+            
+            skipString = skipString.appending(checkString as String) as NSString
+            failString = failString.appending(resultStr as String) as NSString
+//            failure(skipString, failString)
+            callback(attributeStringWith(skipString, failString: failString))
+            callback(NSAttributedString(string: "\n"))
+            
+            let degree = (maxSize>1) ? Double(Float(successCount)/Float(maxSize) * 100) : 0
+            
+            return degree
+        }
+    }
+    
+    // Read File
+    func readTextFile(_ filePath:NSString) -> String? {
+        if NSArray(array: ["TXT", "txt"]).contains(filePath.pathExtension) {
+            var checkString = try? NSString.init(contentsOfFile: filePath as String, encoding: NSUTF8StringEncoding)
+            if (checkString != nil) {
+                checkString = checkString!.replacingOccurrences(of: "\n", with: "") as NSString
+                checkString = checkString!.replacingOccurrences(of: " ", with: "") as NSString
+                return checkString! as String
+            }
+            return nil
+        }else if NSArray(array: ["rtf", "RTF"]).contains(filePath.pathExtension) {
+            // Load check file
+            let checkData = NSData.init(contentsOfFile: filePath as String) as! Data
+            var documentAttributes:NSDictionary!
+            let checkAttString = NSAttributedString.init(rtf: checkData, documentAttributes: &documentAttributes)
+            var checkString = NSString(string: checkAttString!.string) as NSString
+            checkString = checkString.replacingOccurrences(of: "\n", with: "") as NSString
+            checkString = checkString.replacingOccurrences(of: " ", with: "") as NSString
+            // 常规 rtf 读取失败
+            
+            //使用框排进行读取
+            if (checkString.length > 0) {
+                return checkString as String?
+            }
+            
+            var resultString = try? NSString.init(contentsOfFile: filePath as String, encoding: NSUTF8StringEncoding)
+            
+            if (nil != resultString && !resultString!.contains("\\shptxt\\shptxt")) {
+                resultString = resultString!.replacingOccurrences(of: "\n", with: "") as NSString
+                resultString = resultString!.replacingOccurrences(of: " ", with: "") as NSString
+                return resultString! as String
+            }
+            
+            //识别字符串 \shptxt\shptxt ... }
+            let pageInfoStrings = resultString!.components(separatedBy: "\\shptxt\\shptxt") as NSArray
+            var finalString = ""
+            if pageInfoStrings.count > 0 {
+                let subStrings = pageInfoStrings.subarray(with: NSMakeRange(1, Int(pageInfoStrings.count - 1))) as! [String]
+                for pageInfoString in subStrings {
+                    let endRange = NSString(string: pageInfoString).range(of: "}")
+                    finalString = finalString.appending(NSString(string: pageInfoString).substring(to: endRange.location))
+                }
+            }
+            
+            
+            //识别所有 【空格 ~ \】 之间的值,并进行缝合
+            // Detect all strings between Spaces and \ and stitch
+            let strings = finalString.components(separatedBy: " ")
+            var resultStr = "" as NSString
+            for str in strings {
+                let markStr = str as NSString
+                
+                if (markStr.contains("\\f")) {
+                    let fRange = markStr.range(of: "\\f")
+                    let cRange = markStr.range(of: "\\c")
+                    let bRange = markStr.range(of: "\\b")
+                    let iRange = markStr.range(of: "\\i")
+                    let eRange = markStr.range(of: "\\e")
+                    let pRange = markStr.range(of: "\\p")
+                    let minPos = min(Int(fRange.location),
+                                     Int(cRange.location),
+                                     Int(bRange.location),
+                                     Int(iRange.location),
+                                     Int(eRange.location),
+                                     Int(pRange.location))
+                    resultStr = resultStr.appending(markStr.substring(to: minPos)) as NSString
+                }else {
+                    resultStr = resultStr.appending(markStr as String) as NSString
+                }
+            }
+            
+            resultStr = self.replaceUnicodeString(resultStr)
+            
+            
+            resultStr = resultStr.replacingOccurrences(of: "\n", with: "") as NSString
+            resultStr = resultStr.replacingOccurrences(of: " ", with: "") as NSString
+            resultStr = resultStr.replacingOccurrences(of: "\\pard", with: "") as NSString
+            resultStr = resultStr.replacingOccurrences(of: "\\par", with: "") as NSString
+            
+            return resultStr as String?
+        }
+        
+        return nil
+    }
+    
+    
+    override func compareFiles() -> NSArray? {
+        return nil
+    }
+    
+    override func compareFiles(_ fileName: String) -> NSArray? {
+        return nil
+    }
+    
+    
+    /**
+     Replace the refrence image for next image check test
+     */
+    override func canUpdateRefImage() -> Bool {
+        return false
+    }
+    
+    override func updateRefImage() {
+        
+    }
+    
+    override func canUpdateRefImage(_ fileName:String) -> Bool {
+        return false
+    }
+    
+    override func updateRefImage(_ fileName:String) {
+        
+    }
+    
 }

+ 3 - 2
KdanAutoTest/KdanAuto/Class/Norrmal/Cell/TestCaseCellView.swift

@@ -273,11 +273,12 @@ class TestCaseCellView : NSTableCellView, NSMenuDelegate {
             if (info != nil) {
                 vc.m_fileType = _autoTestObj!._fileType
                 vc.setBaseInfo(info!)
-                vc.setTestCase(_autoTestObj!.m_info as! NSMutableDictionary)
+                vc.setTestCase(_autoTestObj!.m_info as! NSDictionary)
                 vc.m_testObj = _autoTestObj
-                vc.setCallback { obj, property in
+                let callback:(_ testObj:AutoTest?, _ property:NSDictionary) -> () = { obj, property in
                     obj?.update(property)
                 }
+                vc.setCallback(callback)
                 
                 let point = self.convert(CGPoint(x: 0, y: 0),
                                            to: self.window?.contentView ?? self)

+ 2 - 1
KdanAutoTest/KdanAuto/Class/Norrmal/Cell/TestFileTypeCellView.swift

@@ -102,9 +102,10 @@ class TestFileTypeCellView : NSTableCellView, NSMenuDelegate {
             vc.m_fileType = fileType
             vc.setBaseInfo(info!)
             vc.setTestCase(nil)
-            vc.setCallback { obj, property in
+            let callback:(_ testObj:AutoTest?, _ property:NSDictionary) -> () = { obj, property in
                 AutoTest.createObject(fileType as NSString, property: property)
             }
+            vc.setCallback(callback)
             
             let point = self.convert(CGPoint(x: 0, y: 0),
                                      to: self.window?.contentView ?? self)

BIN
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/ComPDFKit_Conversion


+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertExcelOptions.h

@@ -38,6 +38,7 @@ typedef NS_ENUM(NSInteger, CPDFConvertExcelWorksheetOptions) {
  * Options to create Worksheet.
  */
 @property (nonatomic,assign) CPDFConvertExcelWorksheetOptions worksheetOptions;
+
 /**
  * Whether to use OCR.
  */
@@ -52,6 +53,7 @@ typedef NS_ENUM(NSInteger, CPDFConvertExcelWorksheetOptions) {
  * Set the OCR language,this takes effect only when IsAllowOCR is true.
  */
 @property (nonatomic,assign) COCRLanguage language;
+
 /**
  * Whether to contain annotations when converting.
  */

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertHtmlOptions.h

@@ -33,6 +33,7 @@ typedef NS_ENUM(NSInteger, CPDFConvertHtmlPageAndNavigationPaneOptions) {
  * @see CPDFConvertHtmlPageAndNavigationPaneOptions
  */
 @property (nonatomic,assign) CPDFConvertHtmlPageAndNavigationPaneOptions paneOptions;
+
 /**
  * Whether to use OCR.
  */

+ 0 - 5
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertKit.h

@@ -39,9 +39,4 @@
  */
 @property(atomic,readonly) NSUInteger buildNumber;
 
-/**
- *  Check if this is the OCR version.
- */
-@property(atomic,readonly) BOOL isOCRVersion;
-
 @end

+ 5 - 57
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertOptions.h

@@ -13,63 +13,11 @@
 #import <Foundation/Foundation.h>
 
 typedef NS_ENUM(NSInteger, COCRLanguage) {
-    COCRLanguageChinese,
-    COCRLanguageChineseTraditional,
-    COCRLanguageEnglish,
-    COCRLanguageJapanese,
-    COCRLanguageKorean,
-    //Latin
-    COCRLanguageSerbian,
-    COCRLanguageOccitan,
-    COCRLanguageDanish,
-    COCRLanguageGerman,
-    COCRLanguageFrench,
-    COCRLanguageItalian,
-    COCRLanguageSpanish,
-    COCRLanguagePortuguese,
-    COCRLanguageMaori,
-    COCRLanguageMalay,
-    COCRLanguageMaltese,
-    COCRLanguageDutch,
-    COCRLanguageNorwegian,
-    COCRLanguagePolish,
-    COCRLanguageRomanian,
-    COCRLanguageSlovak,
-    COCRLanguageSlovenian,
-    COCRLanguageAlbanian,
-    COCRLanguageSwedish,
-    COCRLanguageSwahili,
-    COCRLanguageTagalog,
-    COCRLanguageTurish,
-    COCRLanguageUzbek,
-    COCRLanguageVietnamese,
-    COCRLanguageAfrikaans,
-    COCRLanguageAzerbaijani,
-    COCRLanguageBosnian,
-    COCRLanguageCzech,
-    COCRLanguageWelsh,
-    COCRLanguageEstonian,
-    COCRLanguageIrish,
-    COCRLanguageCroatian,
-    COCRLanguageHungarian,
-    COCRLanguageIndonesian,
-    COCRLanguageIcelandic,
-    COCRLanguageKurdish,
-    COCRLanguageLithuanian,
-    COCRLanguageLatvian,
-    //Devanagari
-    COCRLanguageMarathi,
-    COCRLanguageNepali,
-    COCRLanguageHindi,
-    COCRLanguageBihari,
-    COCRLanguageMaithili,
-    COCRLanguageAngika,
-    COCRLanguageBhojpuri,
-    COCRLanguageMagahi,
-    COCRLanguageNagpur,
-    COCRLanguageNewari,
-    COCRLanguageGoanKonkani,
-    COCRLanguageSaudiArabia
+    COCRLanguageChinese = 0,
+    COCRLanguageChineseTraditional = 1,
+    COCRLanguageEnglish      = 3,
+    COCRLanguageJapanese     = 4,
+    COCRLanguageKorean  = 5,
 };
 
 /**

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertPPTOptions.h

@@ -16,6 +16,7 @@
  * PDF to PPT conversion parameter object(derived class of CPDFConvertOptions).
  */
 @interface CPDFConvertPPTOptions : CPDFConvertOptions
+
 /**
  * Whether to use OCR.
  */

+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertRtfOptions.h

@@ -16,6 +16,7 @@
  * PDF to RTF conversion parameter object (derived class of CPDFConvertOptions).
  */
 @interface CPDFConvertRtfOptions : CPDFConvertOptions
+
 /**
  * Whether to use OCR.
  */
@@ -25,6 +26,7 @@
  * Set the OCR language,this takes effect only when IsAllowOCR is true.
  */
 @property (nonatomic,assign) COCRLanguage language;
+
 /**
  * Whether to contain annotations when converting.
  */

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertTxtOptions.h

@@ -16,6 +16,7 @@
  * PDF to TXT conversion parameter object (derived class of CPDFConvertOptions).
  */
 @interface CPDFConvertTxtOptions : CPDFConvertOptions
+
 /**
  * Whether to use OCR.
  */

+ 1 - 7
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConvertWordOptions.h

@@ -12,15 +12,11 @@
 
 #import <ComPDFKit_Conversion/CPDFConvertOptions.h>
 
-typedef NS_ENUM(NSInteger, LayoutOptions) {
-    RetainFlowingText,
-    RetainPageLayout
-};
-
 /**
  * PDF to Word conversion parameter object(derived class of CPDFConvertOptions).
  */
 @interface CPDFConvertWordOptions : CPDFConvertOptions
+
 /**
  * Whether to use OCR.
  */
@@ -46,6 +42,4 @@ typedef NS_ENUM(NSInteger, LayoutOptions) {
  */
 @property (nonatomic,assign) BOOL isContainImages;
 
-@property (nonatomic,assign) LayoutOptions layoutOptions;
-
 @end

+ 1 - 1
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/ComPDFKit_Conversion.h

@@ -29,5 +29,5 @@
 #import <ComPDFKit_Conversion/CPDFConvertImgOptions.h>
 #import <ComPDFKit_Conversion/CPDFConvertRtfOptions.h>
 #import <ComPDFKit_Conversion/CPDFConvertHtmlOptions.h>
-#import <ComPDFKit_Conversion/CPDFConverterFactory.h>
+
 #import <ComPDFKit_Conversion/CPDFConverterFP.h>

+ 1 - 1
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Resources/Info.plist

@@ -9,7 +9,7 @@
 	<key>CFBundleExecutable</key>
 	<string>ComPDFKit_Conversion</string>
 	<key>CFBundleIdentifier</key>
-	<string>com.comdocumentaikit.ComDocumentAIKit.ComPDFKit-Conversion-OCR-macOS-Protected-</string>
+	<string>com.compdfkit.conversion</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>

+ 21 - 32
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/_CodeSignature/CodeResources

@@ -106,7 +106,7 @@
 		</data>
 		<key>Resources/Info.plist</key>
 		<data>
-		/aaSW6phFa9Llw7ne07ZMH0P8p4=
+		Gz6kApDUOVv0AcVMqEXYEgs2Nbw=
 		</data>
 		<key>Resources/PDF2Excel.bundle/FPPDFInfo.plist</key>
 		<data>
@@ -1066,22 +1066,22 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			ijUBZqBPHqcR07QrCDUbOZ0CiA4=
+			lqhooTPzHiDzLYFUla+xkR2NkuU=
 			</data>
 			<key>hash2</key>
 			<data>
-			gb6Oqlr3CsFou1VsJi6lagz8iyXkYvxCBrX+2l8PK5k=
+			KkvO6VYKUhl1RO48cuFMV2nlMpNcK9DEZ88bwIS/YUE=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertHtmlOptions.h</key>
 		<dict>
 			<key>hash</key>
 			<data>
-			gXuNfm2UeA8B3xrCQ46bYFWtFJc=
+			397mq9RAYZ7/0l97AO4Sn1sXf1w=
 			</data>
 			<key>hash2</key>
 			<data>
-			jIhSV6tIgJgw/X0aQpEQx0+AwC4ziiztqyPfTclVOcQ=
+			io1iz7e/MiKcZVTZPv2MHpV7E/g8j3yTk7I3PcML8tk=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertImgOptions.h</key>
@@ -1099,66 +1099,66 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			5bp+L1awkkdMiCqIGROUWCfxwps=
+			BHsTd15lvd+RRJC155UMed2VW4E=
 			</data>
 			<key>hash2</key>
 			<data>
-			rgjYerJzyNRx2hKaVUjN9iXzJorSX8I/0TPoYXHa8VQ=
+			gskVQCGvAz5dfnmal9W8zkRGt4YoNZewxYB8ZaoHm/Q=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertOptions.h</key>
 		<dict>
 			<key>hash</key>
 			<data>
-			d6sJpLIynYQ1uDyJq0fLuVsEeMY=
+			NxfGm+oEC3cuKe/mmtQSmqOdQZQ=
 			</data>
 			<key>hash2</key>
 			<data>
-			jyJGG+bpiSNCVdeX0YwKUWJZlQBMCPCPiTzK1xUGfK8=
+			m/AMPCko2f/ggrBVFiUhOG83qOyaut7MrlUKzF36xYg=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertPPTOptions.h</key>
 		<dict>
 			<key>hash</key>
 			<data>
-			74bR8vOlWIeGQ6x6h7fC/VojLro=
+			EfGjrRJugFFUuNG9396EDEPwd0s=
 			</data>
 			<key>hash2</key>
 			<data>
-			2L3PAwnJ07zTkshLFTbkNDN7TQoxJCsDY3piXOq2mjs=
+			7UXzw04YaA8bd/evPeRvavjDErnz4a0zvQTV3PmInMo=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertRtfOptions.h</key>
 		<dict>
 			<key>hash</key>
 			<data>
-			1ggAWz4vg9CDvLDoQHoYM5mNnog=
+			zHoBwUICj7thEHbRwQqihVk+McU=
 			</data>
 			<key>hash2</key>
 			<data>
-			q/WOEN40EpeckrY/w40yCyIaqx4AmaepOOg8WHULn7M=
+			EYrtymRiQbKo1isz2fY8yl1R0r0l02s5QKcLnUug864=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertTxtOptions.h</key>
 		<dict>
 			<key>hash</key>
 			<data>
-			3ZqJbTw0oyF2dXCbCkqfp10RbLc=
+			TXxT9nS347tBOrODjlyN5+7/DWE=
 			</data>
 			<key>hash2</key>
 			<data>
-			VhseyWqjkmukDcripmIVVbUwrGwRV63DKs4eIvav48g=
+			DGb6/ClgtZsCovzlPcMrZVRKvM0dmsP2fhdqG6kKM8s=
 			</data>
 		</dict>
 		<key>Headers/CPDFConvertWordOptions.h</key>
 		<dict>
 			<key>hash</key>
 			<data>
-			V9bAlU3iEfliGLjTFU2ssEDc1hM=
+			1weam0nIJuiO3kYPdWS9MgBygR0=
 			</data>
 			<key>hash2</key>
 			<data>
-			3O92+dfYrQKAxW1G+xAq83mOoZNgJtOaU6o71OHK0+4=
+			DoV2krdjivxf7ByPcRqr7R2tA9B9Ipftor3uXawO8Ec=
 			</data>
 		</dict>
 		<key>Headers/CPDFConverter.h</key>
@@ -1205,17 +1205,6 @@
 			Qhj/onUDrhKHVUiWEjBy2Fx09FdYQWCIVaGUTw4K3qM=
 			</data>
 		</dict>
-		<key>Headers/CPDFConverterFactory.h</key>
-		<dict>
-			<key>hash</key>
-			<data>
-			Aj7ObwI+crH+hPQthkJ1TrVJmDs=
-			</data>
-			<key>hash2</key>
-			<data>
-			BErV0n/xDGhsAXmf48JhVGJw1Xxmpy0p0KNI51DHz4k=
-			</data>
-		</dict>
 		<key>Headers/CPDFConverterHtml.h</key>
 		<dict>
 			<key>hash</key>
@@ -1286,11 +1275,11 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			cdPT1GzNqH4YB+912fX0nCQ1HeM=
+			p9bHTxuFEzl/p71TKdhzW8bfBlY=
 			</data>
 			<key>hash2</key>
 			<data>
-			nwndbU4BL9ZAUT84sEsZeS3AzIHESTRQkiqVCLGi7k4=
+			6ZIyCt2Zlb13lnIR4o8lbUfREfgUv+WwBRt+VkxYT6o=
 			</data>
 		</dict>
 		<key>Modules/module.modulemap</key>
@@ -1583,11 +1572,11 @@
 		<dict>
 			<key>hash</key>
 			<data>
-			/aaSW6phFa9Llw7ne07ZMH0P8p4=
+			Gz6kApDUOVv0AcVMqEXYEgs2Nbw=
 			</data>
 			<key>hash2</key>
 			<data>
-			Xbw481t38g0R52ym8Ae5Yyp1XMqnSn8O6b2PF7kAyXQ=
+			NXJmlIGHSqU6InivcV94kY2Dlrgi/cMS0cQNsMjmxx0=
 			</data>
 		</dict>
 		<key>Resources/PDF2Excel.bundle/FPPDFInfo.plist</key>

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/ComPDFKit_Conversion

@@ -0,0 +1 @@
+Versions/Current/ComPDFKit_Conversion

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Headers

@@ -0,0 +1 @@
+Versions/Current/Headers

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Modules

@@ -0,0 +1 @@
+Versions/Current/Modules

+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Resources

@@ -0,0 +1 @@
+Versions/Current/Resources

BIN
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/ComPDFKit_Conversion


+ 25 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertCsvOptions.h

@@ -0,0 +1,25 @@
+//
+//  CPDFConvertCsvOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+/**
+ * PDF to CSV conversion parameter object (derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertCsvOptions : CPDFConvertOptions
+
+/**
+ * Whether to merge CSV when converting.
+ */
+@property (nonatomic,assign) BOOL isMergeCSV;
+
+@end

+ 65 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertExcelOptions.h

@@ -0,0 +1,65 @@
+//
+//  CPDFConvertExcelOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+typedef NS_ENUM(NSInteger, CPDFConvertExcelContentOptions) {
+    CPDFConvertExcelContentOnlyText = 0,   // Only extract text in PDF and write it to XLSX without extracting the table.
+    CPDFConvertExcelContentOnlyTable = 1,  // Only extract table in PDF and write it to XLSX.
+    CPDFConvertExcelContentAllContent = 2  // Extract all content in PDF and write it to XLSX, including table and non-table content.
+};
+
+typedef NS_ENUM(NSInteger, CPDFConvertExcelWorksheetOptions) {
+    CPDFConvertExcelWorksheetForEachTable = 0,   // Each table in the PDF is converted to one separate Worksheet.
+    CPDFConvertExcelWorksheetForEachPage = 1,    // All tables on one page in the PDF are converted to one separate Worksheet.
+    CPDFConvertExcelWorksheetForTheDocument = 2  // All tables in the entire PDF are converted to one separate Worksheet.
+};
+
+/**
+ * PDF to Excel conversion parameter object(derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertExcelOptions : CPDFConvertOptions
+
+/**
+ * Options to extract content.
+ */
+@property (nonatomic,assign) CPDFConvertExcelContentOptions contentOptions;
+
+/**
+ * Options to create Worksheet.
+ */
+@property (nonatomic,assign) CPDFConvertExcelWorksheetOptions worksheetOptions;
+/**
+ * Whether to use OCR.
+ */
+@property (nonatomic,assign) BOOL isAllowOCR;
+
+/**
+ * Whether the OCR background image is contained,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) BOOL isContainOCRBgImage;
+
+/**
+ * Set the OCR language,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) COCRLanguage language;
+/**
+ * Whether to contain annotations when converting.
+ */
+@property (nonatomic,assign) BOOL isContainAnnotations;
+
+/**
+ * Whether to contain images when converting.
+ */
+@property (nonatomic,assign) BOOL isContainImages;
+
+@end

+ 56 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertHtmlOptions.h

@@ -0,0 +1,56 @@
+//
+//  CPDFConvertHtmlOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+/**
+ * Options to set pages and navigation panes.
+ */
+typedef NS_ENUM(NSInteger, CPDFConvertHtmlPageAndNavigationPaneOptions) {
+    CPDFConvertHtmlSinglePage = 0,                       // Single page with no navigation.
+    CPDFConvertHtmlSinglePageNavigationByBookmarks = 1,  // Navigate single page using bookmarks from PDF.
+    CPDFConvertHtmlMultiplePages = 2,                    // Multiple pages with no split.
+    CPDFConvertHtmlMultiplePagesSplitByBookmarks = 3     // Split multiple pages using bookmarks from PDF.
+};
+
+/**
+ * PDF to HTML conversion parameter object (derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertHtmlOptions : CPDFConvertOptions
+
+/**
+ * Sets options to convert PDF to HTML.
+ *
+ * @see CPDFConvertHtmlPageAndNavigationPaneOptions
+ */
+@property (nonatomic,assign) CPDFConvertHtmlPageAndNavigationPaneOptions paneOptions;
+/**
+ * Whether to use OCR.
+ */
+@property (nonatomic,assign) BOOL isAllowOCR;
+
+/**
+ * Set the OCR language,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) COCRLanguage language;
+
+/**
+ * Whether to contain annotations when converting.
+ */
+@property (nonatomic,assign) BOOL isContainAnnotations;
+
+/**
+ * Whether to contain images when converting.
+ */
+@property (nonatomic,assign) BOOL isContainImages;
+
+@end

+ 42 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertImgOptions.h

@@ -0,0 +1,42 @@
+//
+//  CPDFConvertImgOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+typedef NS_ENUM(NSInteger, CPDFConvertImgType) {
+    CPDFConvertImgTypeJPEG = 0,
+    CPDFConvertImgTypePNG = 1
+};
+
+/**
+ * PDF to Image conversion parameter object (derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertImgOptions : CPDFConvertOptions
+
+/**
+ * Sets the image type.
+ *
+ * @see CPDFConvertImgType
+ */
+@property (nonatomic,assign) CPDFConvertImgType type;
+
+/**
+ * Whether to contain annotations when converting.
+ */
+@property (nonatomic,assign) BOOL isContainAnnotations;
+
+/**
+ * Sets the image Dpi.
+ */
+@property (nonatomic,assign) int  imageDpi;
+
+@end

+ 47 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertKit.h

@@ -0,0 +1,47 @@
+//
+//  CPDFConvertKit.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface CPDFConvertKit : NSObject
+
+/**
+ * The shared ComPDFKit_Conversion instance.
+ */
++ (instancetype)sharedInstance;
+
+/**
+ * Activate ComPDFKit_Conversion with your license key and secret.
+ */
++ (void)setLicenseKey:(NSString *)licenseKey secret:(NSString *)licenseSecret;
+
+/**
+ * Returns the full ComPDFKit_Conversion product version string. (e.g. "ComPDFKit_Conversion 1.0.1 for iOS (101)")
+ */
+@property(atomic,readonly) NSString *versionString;
+
+/**
+ * Returns just the framework version. (e.g. 1.0.1)
+ */
+@property(atomic,readonly) NSString *versionNumber;
+
+/**
+ * The internal build number. Increments with every version.
+ */
+@property(atomic,readonly) NSUInteger buildNumber;
+
+/**
+ *  Check if this is the OCR version.
+ */
+@property(atomic,readonly) BOOL isOCRVersion;
+
+@end

+ 80 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertOptions.h

@@ -0,0 +1,80 @@
+//
+//  CPDFConvertOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef NS_ENUM(NSInteger, COCRLanguage) {
+    COCRLanguageChinese,
+    COCRLanguageChineseTraditional,
+    COCRLanguageEnglish,
+    COCRLanguageJapanese,
+    COCRLanguageKorean,
+    //Latin
+    COCRLanguageSerbian,
+    COCRLanguageOccitan,
+    COCRLanguageDanish,
+    COCRLanguageGerman,
+    COCRLanguageFrench,
+    COCRLanguageItalian,
+    COCRLanguageSpanish,
+    COCRLanguagePortuguese,
+    COCRLanguageMaori,
+    COCRLanguageMalay,
+    COCRLanguageMaltese,
+    COCRLanguageDutch,
+    COCRLanguageNorwegian,
+    COCRLanguagePolish,
+    COCRLanguageRomanian,
+    COCRLanguageSlovak,
+    COCRLanguageSlovenian,
+    COCRLanguageAlbanian,
+    COCRLanguageSwedish,
+    COCRLanguageSwahili,
+    COCRLanguageTagalog,
+    COCRLanguageTurish,
+    COCRLanguageUzbek,
+    COCRLanguageVietnamese,
+    COCRLanguageAfrikaans,
+    COCRLanguageAzerbaijani,
+    COCRLanguageBosnian,
+    COCRLanguageCzech,
+    COCRLanguageWelsh,
+    COCRLanguageEstonian,
+    COCRLanguageIrish,
+    COCRLanguageCroatian,
+    COCRLanguageHungarian,
+    COCRLanguageIndonesian,
+    COCRLanguageIcelandic,
+    COCRLanguageKurdish,
+    COCRLanguageLithuanian,
+    COCRLanguageLatvian,
+    //Devanagari
+    COCRLanguageMarathi,
+    COCRLanguageNepali,
+    COCRLanguageHindi,
+    COCRLanguageBihari,
+    COCRLanguageMaithili,
+    COCRLanguageAngika,
+    COCRLanguageBhojpuri,
+    COCRLanguageMagahi,
+    COCRLanguageNagpur,
+    COCRLanguageNewari,
+    COCRLanguageGoanKonkani,
+    COCRLanguageSaudiArabia
+};
+
+/**
+ * This is the base class for all conversion parameters.
+ */
+@interface CPDFConvertOptions : NSObject
+
+@end

+ 44 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertPPTOptions.h

@@ -0,0 +1,44 @@
+//
+//  CPDFConvertPPTOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+/**
+ * PDF to PPT conversion parameter object(derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertPPTOptions : CPDFConvertOptions
+/**
+ * Whether to use OCR.
+ */
+@property (nonatomic,assign) BOOL isAllowOCR;
+
+/**
+ * Whether the OCR background image is contained,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) BOOL isContainOCRBgImage;
+
+/**
+ * Set the OCR language,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) COCRLanguage language;
+
+/**
+ * Whether to contain annotations when converting.
+ */
+@property (nonatomic,assign) BOOL isContainAnnotations;
+
+/**
+ * Whether to contain images when converting.
+ */
+@property (nonatomic,assign) BOOL isContainImages;
+
+@end

+ 38 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertRtfOptions.h

@@ -0,0 +1,38 @@
+//
+//  CPDFConvertRtfOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+/**
+ * PDF to RTF conversion parameter object (derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertRtfOptions : CPDFConvertOptions
+/**
+ * Whether to use OCR.
+ */
+@property (nonatomic,assign) BOOL isAllowOCR;
+
+/**
+ * Set the OCR language,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) COCRLanguage language;
+/**
+ * Whether to contain annotations when converting.
+ */
+@property (nonatomic,assign) BOOL isContainAnnotations;
+
+/**
+ * Whether to contain images when converting.
+ */
+@property (nonatomic,assign) BOOL isContainImages;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertTxtOptions.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConvertTxtOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+/**
+ * PDF to TXT conversion parameter object (derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertTxtOptions : CPDFConvertOptions
+/**
+ * Whether to use OCR.
+ */
+@property (nonatomic,assign) BOOL isAllowOCR;
+
+/**
+ * Set the OCR language,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) COCRLanguage language;
+
+@end

+ 51 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConvertWordOptions.h

@@ -0,0 +1,51 @@
+//
+//  CPDFConvertWordOptions.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+typedef NS_ENUM(NSInteger, LayoutOptions) {
+    RetainFlowingText,
+    RetainPageLayout
+};
+
+/**
+ * PDF to Word conversion parameter object(derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertWordOptions : CPDFConvertOptions
+/**
+ * Whether to use OCR.
+ */
+@property (nonatomic,assign) BOOL isAllowOCR;
+
+/**
+ * Whether the OCR background image is contained,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) BOOL isContainOCRBgImage;
+
+/**
+ * Set the OCR language,this takes effect only when IsAllowOCR is true.
+ */
+@property (nonatomic,assign) COCRLanguage language;
+
+/**
+ * Whether to contain annotations when converting.
+ */
+@property (nonatomic,assign) BOOL isContainAnnotations;
+
+/**
+ * Whether to contain images when converting.
+ */
+@property (nonatomic,assign) BOOL isContainImages;
+
+@property (nonatomic,assign) LayoutOptions layoutOptions;
+
+@end

+ 96 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverter.h

@@ -0,0 +1,96 @@
+//
+//  CPDFConverter.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <Foundation/Foundation.h>
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+
+extern NSErrorDomain const CPDFConverterErrorDomain;
+NS_ERROR_ENUM(CPDFConverterErrorDomain) {
+    CPDFConverterSuccess          = 0,  // Success
+    CPDFConverterEncryptError     = 1,  // Password required or incorrect password.
+    CPDFConverterPermissionError  = 2,  // The license doesn't allow the permission.
+    CPDFConverterMallocError      = 3,  // Malloc failure.
+    CPDFConverterUnknownError     = 4,  // Unknown error in processing conversion.
+    CPDFConverterPDFUnknownError  = 5,  // Unknown error in processing PDF.
+    CPDFConverterPDFFileError     = 6,  // File not found or could not be opened.
+    CPDFConverterPDFFormatError   = 7,  // File not in PDF format or corrupted.
+    CPDFConverterPDFSecurityError = 8,  // Unsupported security scheme.
+    CPDFConverterPDFPageError     = 9   // Page not found or content error.
+};
+
+
+
+@class CPDFConverter;
+
+/**
+ * The delegate for the CPDFConverter object.
+ */
+@protocol CPDFConverterDelegate <NSObject>
+
+@optional
+
+/**
+ * Called when a conversion operation begins.
+ */
+- (void)converter:(CPDFConverter *)converter didStartConvert:(NSError *)error;
+
+/**
+ * Called when a conversion operation finishes.
+ */
+- (void)converter:(CPDFConverter *)converter didEndConvert:(NSError *)error;
+
+/**
+ * Called when a conversion operation finishes working on a page in a document.
+ */
+- (void)converter:(CPDFConverter *)converter pageIndex:(NSUInteger)index pageCount:(NSUInteger)count;
+
+
+@end
+
+/**
+ * This is the base class for all conversion operations.
+ *
+ * This is the base class for all converters. A CPDFConverter object by itself is not useful, only subclasses (like CPDFConverterWord, CPDFConverterPPT) are interesting.
+ */
+@interface CPDFConverter : NSObject
+
+/**
+ * Initializes a CPDFConverter object with the contents at the specified URL.
+ */
+- (instancetype)initWithURL:(NSURL *)url password:(NSString *)password;
+
+/**
+ * The object acting as the delegate for the CPDFConverter object.
+ *
+ * @see CPDFConverterDelegate
+ */
+@property (nonatomic,assign) id<CPDFConverterDelegate> delegate;
+
+/**
+ * Returns a Boolean value indicating whether a conversion operation is in progress.
+ */
+@property (nonatomic,readonly) BOOL isConverting;
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertOptions *)options;
+
+/**
+ * Cancels the conversion task.
+ */
+- (void)cancel;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterCsv.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterCsv.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertCsvOptions.h>
+
+/**
+ * PDF to CSV conversion operation object (derived class of CPDFConverter).
+ */
+@interface CPDFConverterCsv : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertCsvOptions *)options;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterExcel.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterExcel.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertExcelOptions.h>
+
+/**
+ * PDF to Excel conversion operation object(derived class of CPDFConverter).
+ */
+@interface CPDFConverterExcel : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertExcelOptions *)options;
+
+@end

+ 70 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterFP.h

@@ -0,0 +1,70 @@
+//
+//  CPDFConverterFP.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef NSString* const CPDFConvertOptionsKey NS_STRING_ENUM;
+
+extern CPDFConvertOptionsKey CPDFConvertOptionsKeyImageDPI; // NSInteger
+extern CPDFConvertOptionsKey CPDFConvertOptionsKeyAllInOneSheet; // BOOL
+
+@protocol CPDFConverterFPDelegate <NSObject>
+
+@optional
+
+// Going to start the transformation
+- (void)FPPDFConverter:(id)converter didStartConversion:(NSError *)error;
+
+// Complete the conversion
+- (void)FPPDFConverter:(id)converter didEndConversion:(NSError *)error;
+
+// Page progress
+- (void)FPPDFConverter:(id)converter
+             pageIndex:(NSUInteger)pageIndexA
+              progress:(NSUInteger)progress;
+
+// Finish parsing a page
+- (void)FPPDFConverter:(id)converter
+   convertPDFPageIndex:(NSUInteger)pdfPageIndexA
+    writeWordPageIndex:(NSUInteger)wordPageIndexA
+  finshedWordPageCount:(NSUInteger)wordPageCountA;
+
+// A page cannot be converted
+- (void)FPPDFConverter:(id)converter
+   convertPDFPageIndex:(NSUInteger)pdfPageIndexA
+        faildWithError:(NSError *)error;
+
+// The document will be saved to disk
+- (void)FPPDFConverter:(id)converter willSaveDoc:(NSError *)error;
+
+// Catch an anomaly
+- (void)FPPDFConverter:(id)converter
+        catchException:(NSException *)exception;
+
+@end
+
+@interface CPDFConverterFP : NSObject
+
+- (instancetype)init;
+
+- (void)setDelegate:(id<CPDFConverterFPDelegate>)delegate;
+
+- (void)convertPDFAtPath:(NSString *)pdfPathA
+             pdfPassword:(NSString *)pdfPasswordA
+           pdfPageIndexs:(NSArray *)pdfPageIndexsA
+             destDocType:(NSString *)destDocTypeA
+             destDocPath:(NSString *)destDocPathA
+             moreOptions:(NSDictionary<CPDFConvertOptionsKey, id> *)moreOptionsA;
+
+- (void)stopConvertsionIfNeed;
+
+@end

KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.6.0).framework/Versions/A/Headers/CPDFConverterFactory.h → KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterFactory.h


+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterHtml.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterHtml.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertHtmlOptions.h>
+
+/**
+ * PDF to Html conversion operation object (derived class of CPDFConverter).
+ */
+@interface CPDFConverterHtml : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertHtmlOptions *)options;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterImg.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterImg.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertImgOptions.h>
+
+/**
+ * PDF to Image conversion operation object (derived class of CPDFConverter).
+ */
+@interface CPDFConverterImg : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertImgOptions *)options;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterPPT.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterPPT.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertPPTOptions.h>
+
+/**
+ * PDF to PPT conversion operation object(derived class of CPDFConverter).
+ */
+@interface CPDFConverterPPT : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertPPTOptions *)options;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterRtf.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterRtf.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertRtfOptions.h>
+
+/**
+ * PDF to Rtf conversion operation object (derived class of CPDFConverter).
+ */
+@interface CPDFConverterRtf : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertRtfOptions *)options;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterTxt.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterTxt.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertTxtOptions.h>
+
+/**
+ * PDF to TXT conversion operation object(derived class of CPDFConverter).
+ */
+@interface CPDFConverterTxt : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertTxtOptions *)options;
+
+@end

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/CPDFConverterWord.h

@@ -0,0 +1,29 @@
+//
+//  CPDFConverterWord.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConvertWordOptions.h>
+
+/**
+ * PDF to Word conversion operation object(derived class of CPDFConverter).
+ */
+@interface CPDFConverterWord : CPDFConverter
+
+/**
+ * Starts convert the specified source file into the specified file.
+ *
+ * @param filePath String of the full path to the specified file.
+ * @param pageIndexs The page number range.
+ */
+- (void)convertToFilePath:(NSString *)filePath pageIndexs:(NSArray *)pageIndexs options:(CPDFConvertWordOptions *)options;
+
+@end

+ 33 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Headers/ComPDFKit_Conversion.h

@@ -0,0 +1,33 @@
+//
+//  ComPDFKit_Conversion.h
+//  ComPDFKit_Conversion
+//
+//  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
+//
+//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
+//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
+//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
+//  This notice may not be removed from this file.
+//
+
+#import <ComPDFKit_Conversion/CPDFConvertKit.h>
+#import <ComPDFKit_Conversion/CPDFConverter.h>
+#import <ComPDFKit_Conversion/CPDFConverterWord.h>
+#import <ComPDFKit_Conversion/CPDFConverterPPT.h>
+#import <ComPDFKit_Conversion/CPDFConverterExcel.h>
+#import <ComPDFKit_Conversion/CPDFConverterTxt.h>
+#import <ComPDFKit_Conversion/CPDFConverterCsv.h>
+#import <ComPDFKit_Conversion/CPDFConverterImg.h>
+#import <ComPDFKit_Conversion/CPDFConverterRtf.h>
+#import <ComPDFKit_Conversion/CPDFConverterHtml.h>
+#import <ComPDFKit_Conversion/CPDFConvertOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertWordOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertPPTOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertExcelOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertTxtOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertCsvOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertImgOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertRtfOptions.h>
+#import <ComPDFKit_Conversion/CPDFConvertHtmlOptions.h>
+#import <ComPDFKit_Conversion/CPDFConverterFactory.h>
+#import <ComPDFKit_Conversion/CPDFConverterFP.h>

+ 6 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Modules/module.modulemap

@@ -0,0 +1,6 @@
+framework module ComPDFKit_Conversion {
+  umbrella header "ComPDFKit_Conversion.h"
+
+  export *
+  module * { export * }
+}

+ 237 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout1.xml

@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="title" preserve="1">
+  <p:cSld name="Title Slide">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ctrTitle"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="685800" y="2130425"/>
+            <a:ext cx="7772400" cy="1470025"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Subtitle 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="subTitle" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="1371600" y="3886200"/>
+            <a:ext cx="6400800" cy="1752600"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0" algn="ctr">
+              <a:buNone/>
+              <a:defRPr>
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master subtitle style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Date Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Footer Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Slide Number Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 165 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout10.xml

@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="vertTx" preserve="1">
+  <p:cSld name="Title and Vertical Text">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Vertical Text Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" orient="vert" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr vert="eaVert"/>
+          <a:lstStyle/>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Date Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Footer Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Slide Number Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 175 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout11.xml

@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="vertTitleAndTx" preserve="1">
+  <p:cSld name="Arrange headings and text vertically">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Vertical title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title" orient="vert"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="6629400" y="274638"/>
+            <a:ext cx="2057400" cy="5851525"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="eaVert"/>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Vertical Text Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" orient="vert" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="274638"/>
+            <a:ext cx="6019800" cy="5851525"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="eaVert"/>
+          <a:lstStyle/>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Date Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Footer Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Slide Number Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 165 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout2.xml

@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="obj" preserve="1">
+  <p:cSld name="Title and Content">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Content Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Date Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Footer Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Slide Number Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 241 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout3.xml

@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="secHead" preserve="1">
+  <p:cSld name="Node Title">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="722313" y="4406900"/>
+            <a:ext cx="7772400" cy="1362075"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr anchor="t"/>
+          <a:lstStyle>
+            <a:lvl1pPr algn="l">
+              <a:defRPr sz="4000" b="1" cap="all"/>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Text Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="722313" y="2906713"/>
+            <a:ext cx="7772400" cy="1500187"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr anchor="b"/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1800">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Date Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Footer Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Slide Number Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 283 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout4.xml

@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="twoObj" preserve="1">
+  <p:cSld name="Two columns">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Content Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph sz="half" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="1600200"/>
+            <a:ext cx="4038600" cy="4525963"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr>
+              <a:defRPr sz="2800"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr>
+              <a:defRPr sz="2400"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Content Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph sz="half" idx="2"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="4648200" y="1600200"/>
+            <a:ext cx="4038600" cy="4525963"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr>
+              <a:defRPr sz="2800"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr>
+              <a:defRPr sz="2400"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Date Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Footer Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="7" name="Slide Number Placeholder 6"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 417 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout5.xml

@@ -0,0 +1,417 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="twoTxTwoObj" preserve="1">
+  <p:cSld name="Compare">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr>
+              <a:defRPr/>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Text Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="1535113"/>
+            <a:ext cx="4040188" cy="639762"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr anchor="b"/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2400" b="1"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000" b="1"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1800" b="1"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Content Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph sz="half" idx="2"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="2174875"/>
+            <a:ext cx="4040188" cy="3951288"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr>
+              <a:defRPr sz="2400"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Text Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" sz="quarter" idx="3"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="4645025" y="1535113"/>
+            <a:ext cx="4041775" cy="639762"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr anchor="b"/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2400" b="1"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000" b="1"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1800" b="1"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1600" b="1"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Content Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph sz="quarter" idx="4"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="4645025" y="2174875"/>
+            <a:ext cx="4041775" cy="3951288"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr>
+              <a:defRPr sz="2400"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr>
+              <a:defRPr sz="1800"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr>
+              <a:defRPr sz="1600"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="7" name="Date Placeholder 6"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="8" name="Footer Placeholder 7"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="9" name="Slide Number Placeholder 8"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 113 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout6.xml

@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="titleOnly" preserve="1">
+  <p:cSld name="Only Title">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Date Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Footer Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Slide Number Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 90 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout7.xml

@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="blank" preserve="1">
+  <p:cSld name="Blank">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Date Placeholder 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Footer Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Slide Number Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 272 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout8.xml

@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="objTx" preserve="1">
+  <p:cSld name="Content and Title">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="273050"/>
+            <a:ext cx="3008313" cy="1162050"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr anchor="b"/>
+          <a:lstStyle>
+            <a:lvl1pPr algn="l">
+              <a:defRPr sz="2000" b="1"/>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="内容占位符 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="3575050" y="273050"/>
+            <a:ext cx="5111750" cy="5853113"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr>
+              <a:defRPr sz="3200"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr>
+              <a:defRPr sz="2800"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr>
+              <a:defRPr sz="2400"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr>
+              <a:defRPr sz="2000"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 2</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 3</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 4</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Level 5</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Text Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" sz="half" idx="2"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="1435100"/>
+            <a:ext cx="3008313" cy="4691063"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1200"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1000"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Date Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Footer Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="7" name="Slide Number Placeholder 6"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 248 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout9.xml

@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldLayout xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" type="picTx" preserve="1">
+  <p:cSld name="Image and Title">
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="Title 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="1792288" y="4800600"/>
+            <a:ext cx="5486400" cy="566738"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr anchor="b"/>
+          <a:lstStyle>
+            <a:lvl1pPr algn="l">
+              <a:defRPr sz="2000" b="1"/>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master title style</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="Image Placeholder 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="pic" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="1792288" y="612775"/>
+            <a:ext cx="5486400" cy="4114800"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="3200"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2800"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2400"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="2000"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="Text Placeholder 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" sz="half" idx="2"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="1792288" y="5367338"/>
+            <a:ext cx="5486400" cy="804862"/>
+          </a:xfrm>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle>
+            <a:lvl1pPr marL="0" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1400"/>
+            </a:lvl1pPr>
+            <a:lvl2pPr marL="457200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1200"/>
+            </a:lvl2pPr>
+            <a:lvl3pPr marL="914400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="1000"/>
+            </a:lvl3pPr>
+            <a:lvl4pPr marL="1371600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl4pPr>
+            <a:lvl5pPr marL="1828800" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl5pPr>
+            <a:lvl6pPr marL="2286000" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl6pPr>
+            <a:lvl7pPr marL="2743200" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl7pPr>
+            <a:lvl8pPr marL="3200400" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl8pPr>
+            <a:lvl9pPr marL="3657600" indent="0">
+              <a:buNone/>
+              <a:defRPr sz="900"/>
+            </a:lvl9pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>Click to edit Master text style</a:t>
+            </a:r>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="Date Placeholder 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="10"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>2018/11/22</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="Footer Placeholder 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="11"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="7" name="Slide Number Placeholder 6"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="12"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr/>
+        <p:txBody>
+          <a:bodyPr/>
+          <a:lstStyle/>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:pPr/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMapOvr>
+    <a:masterClrMapping/>
+  </p:clrMapOvr>
+</p:sldLayout>

+ 503 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideMaster1.xml

@@ -0,0 +1,503 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<p:sldMaster xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
+  <p:cSld>
+    <p:bg>
+      <p:bgRef idx="1001">
+        <a:schemeClr val="bg1"/>
+      </p:bgRef>
+    </p:bg>
+    <p:spTree>
+      <p:nvGrpSpPr>
+        <p:cNvPr id="1" name=""/>
+        <p:cNvGrpSpPr/>
+        <p:nvPr/>
+      </p:nvGrpSpPr>
+      <p:grpSpPr>
+        <a:xfrm>
+          <a:off x="0" y="0"/>
+          <a:ext cx="0" cy="0"/>
+          <a:chOff x="0" y="0"/>
+          <a:chExt cx="0" cy="0"/>
+        </a:xfrm>
+      </p:grpSpPr>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="2" name="标题占位符 1"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="title"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="274638"/>
+            <a:ext cx="8229600" cy="1143000"/>
+          </a:xfrm>
+          <a:prstGeom prst="rect">
+            <a:avLst/>
+          </a:prstGeom>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr">
+            <a:normAutofit/>
+          </a:bodyPr>
+          <a:lstStyle/>
+          <a:p>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>单击此处编辑母版标题样式</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="3" name="文本占位符 2"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="body" idx="1"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="1600200"/>
+            <a:ext cx="8229600" cy="4525963"/>
+          </a:xfrm>
+          <a:prstGeom prst="rect">
+            <a:avLst/>
+          </a:prstGeom>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0">
+            <a:normAutofit/>
+          </a:bodyPr>
+          <a:lstStyle/>
+          <a:p>
+            <a:pPr lvl="0"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>单击此处编辑母版文本样式</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="1"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>第二级</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="2"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>第三级</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="3"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>第四级</a:t>
+            </a:r>
+          </a:p>
+          <a:p>
+            <a:pPr lvl="4"/>
+            <a:r>
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>第五级</a:t>
+            </a:r>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="4" name="日期占位符 3"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="dt" sz="half" idx="2"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="457200" y="6356350"/>
+            <a:ext cx="2133600" cy="365125"/>
+          </a:xfrm>
+          <a:prstGeom prst="rect">
+            <a:avLst/>
+          </a:prstGeom>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr"/>
+          <a:lstStyle>
+            <a:lvl1pPr algn="l">
+              <a:defRPr sz="1200">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:fld id="{530820CF-B880-4189-942D-D702A7CBA730}" type="datetimeFigureOut">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>2006-9-7</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="5" name="页脚占位符 4"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="ftr" sz="quarter" idx="3"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="3124200" y="6356350"/>
+            <a:ext cx="2895600" cy="365125"/>
+          </a:xfrm>
+          <a:prstGeom prst="rect">
+            <a:avLst/>
+          </a:prstGeom>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr"/>
+          <a:lstStyle>
+            <a:lvl1pPr algn="ctr">
+              <a:defRPr sz="1200">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+      <p:sp>
+        <p:nvSpPr>
+          <p:cNvPr id="6" name="灯片编号占位符 5"/>
+          <p:cNvSpPr>
+            <a:spLocks noGrp="1"/>
+          </p:cNvSpPr>
+          <p:nvPr>
+            <p:ph type="sldNum" sz="quarter" idx="4"/>
+          </p:nvPr>
+        </p:nvSpPr>
+        <p:spPr>
+          <a:xfrm>
+            <a:off x="6553200" y="6356350"/>
+            <a:ext cx="2133600" cy="365125"/>
+          </a:xfrm>
+          <a:prstGeom prst="rect">
+            <a:avLst/>
+          </a:prstGeom>
+        </p:spPr>
+        <p:txBody>
+          <a:bodyPr vert="horz" lIns="91440" tIns="45720" rIns="91440" bIns="45720" rtlCol="0" anchor="ctr"/>
+          <a:lstStyle>
+            <a:lvl1pPr algn="r">
+              <a:defRPr sz="1200">
+                <a:solidFill>
+                  <a:schemeClr val="tx1">
+                    <a:tint val="75000"/>
+                  </a:schemeClr>
+                </a:solidFill>
+              </a:defRPr>
+            </a:lvl1pPr>
+          </a:lstStyle>
+          <a:p>
+            <a:fld id="{0C913308-F349-4B6D-A68A-DD1791B4A57B}" type="slidenum">
+              <a:rPr lang="zh-CN" altLang="en-US" smtClean="0"/>
+              <a:t>‹#›</a:t>
+            </a:fld>
+            <a:endParaRPr lang="zh-CN" altLang="en-US"/>
+          </a:p>
+        </p:txBody>
+      </p:sp>
+    </p:spTree>
+  </p:cSld>
+  <p:clrMap bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/>
+  <p:sldLayoutIdLst>
+    <p:sldLayoutId id="2147483649" r:id="rId1"/>
+    <p:sldLayoutId id="2147483650" r:id="rId2"/>
+    <p:sldLayoutId id="2147483651" r:id="rId3"/>
+    <p:sldLayoutId id="2147483652" r:id="rId4"/>
+    <p:sldLayoutId id="2147483653" r:id="rId5"/>
+    <p:sldLayoutId id="2147483654" r:id="rId6"/>
+    <p:sldLayoutId id="2147483655" r:id="rId7"/>
+    <p:sldLayoutId id="2147483656" r:id="rId8"/>
+    <p:sldLayoutId id="2147483657" r:id="rId9"/>
+    <p:sldLayoutId id="2147483658" r:id="rId10"/>
+    <p:sldLayoutId id="2147483659" r:id="rId11"/>
+  </p:sldLayoutIdLst>
+  <p:txStyles>
+    <p:titleStyle>
+      <a:lvl1pPr algn="ctr" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="0"/>
+        </a:spcBef>
+        <a:buNone/>
+        <a:defRPr sz="4400" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mj-lt"/>
+          <a:ea typeface="+mj-ea"/>
+          <a:cs typeface="+mj-cs"/>
+        </a:defRPr>
+      </a:lvl1pPr>
+    </p:titleStyle>
+    <p:bodyStyle>
+      <a:lvl1pPr marL="342900" indent="-342900" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="•"/>
+        <a:defRPr sz="3200" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl1pPr>
+      <a:lvl2pPr marL="742950" indent="-285750" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="–"/>
+        <a:defRPr sz="2800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl2pPr>
+      <a:lvl3pPr marL="1143000" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="•"/>
+        <a:defRPr sz="2400" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl3pPr>
+      <a:lvl4pPr marL="1600200" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="–"/>
+        <a:defRPr sz="2000" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl4pPr>
+      <a:lvl5pPr marL="2057400" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="»"/>
+        <a:defRPr sz="2000" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl5pPr>
+      <a:lvl6pPr marL="2514600" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="•"/>
+        <a:defRPr sz="2000" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl6pPr>
+      <a:lvl7pPr marL="2971800" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="•"/>
+        <a:defRPr sz="2000" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl7pPr>
+      <a:lvl8pPr marL="3429000" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="•"/>
+        <a:defRPr sz="2000" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl8pPr>
+      <a:lvl9pPr marL="3886200" indent="-228600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:spcBef>
+          <a:spcPct val="20000"/>
+        </a:spcBef>
+        <a:buFont typeface="Arial" pitchFamily="34" charset="0"/>
+        <a:buChar char="•"/>
+        <a:defRPr sz="2000" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl9pPr>
+    </p:bodyStyle>
+    <p:otherStyle>
+      <a:defPPr>
+        <a:defRPr lang="zh-CN"/>
+      </a:defPPr>
+      <a:lvl1pPr marL="0" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl1pPr>
+      <a:lvl2pPr marL="457200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl2pPr>
+      <a:lvl3pPr marL="914400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl3pPr>
+      <a:lvl4pPr marL="1371600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl4pPr>
+      <a:lvl5pPr marL="1828800" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl5pPr>
+      <a:lvl6pPr marL="2286000" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl6pPr>
+      <a:lvl7pPr marL="2743200" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl7pPr>
+      <a:lvl8pPr marL="3200400" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl8pPr>
+      <a:lvl9pPr marL="3657600" algn="l" defTabSz="914400" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
+        <a:defRPr sz="1800" kern="1200">
+          <a:solidFill>
+            <a:schemeClr val="tx1"/>
+          </a:solidFill>
+          <a:latin typeface="+mn-lt"/>
+          <a:ea typeface="+mn-ea"/>
+          <a:cs typeface="+mn-cs"/>
+        </a:defRPr>
+      </a:lvl9pPr>
+    </p:otherStyle>
+  </p:txStyles>
+</p:sldMaster>

+ 281 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/theme1.xml

@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office 主题">
+  <a:themeElements>
+    <a:clrScheme name="Office">
+      <a:dk1>
+        <a:sysClr val="windowText" lastClr="000000"/>
+      </a:dk1>
+      <a:lt1>
+        <a:sysClr val="window" lastClr="FFFFFF"/>
+      </a:lt1>
+      <a:dk2>
+        <a:srgbClr val="1F497D"/>
+      </a:dk2>
+      <a:lt2>
+        <a:srgbClr val="EEECE1"/>
+      </a:lt2>
+      <a:accent1>
+        <a:srgbClr val="4F81BD"/>
+      </a:accent1>
+      <a:accent2>
+        <a:srgbClr val="C0504D"/>
+      </a:accent2>
+      <a:accent3>
+        <a:srgbClr val="9BBB59"/>
+      </a:accent3>
+      <a:accent4>
+        <a:srgbClr val="8064A2"/>
+      </a:accent4>
+      <a:accent5>
+        <a:srgbClr val="4BACC6"/>
+      </a:accent5>
+      <a:accent6>
+        <a:srgbClr val="F79646"/>
+      </a:accent6>
+      <a:hlink>
+        <a:srgbClr val="0000FF"/>
+      </a:hlink>
+      <a:folHlink>
+        <a:srgbClr val="800080"/>
+      </a:folHlink>
+    </a:clrScheme>
+    <a:fontScheme name="Office">
+      <a:majorFont>
+        <a:latin typeface="Calibri"/>
+        <a:ea typeface=""/>
+        <a:cs typeface=""/>
+        <a:font script="Jpan" typeface="MS Pゴシック"/>
+        <a:font script="Hang" typeface="맑은 고딕"/>
+        <a:font script="Hans" typeface="宋体"/>
+        <a:font script="Hant" typeface="新細明體"/>
+        <a:font script="Arab" typeface="Times New Roman"/>
+        <a:font script="Hebr" typeface="Times New Roman"/>
+        <a:font script="Thai" typeface="Angsana New"/>
+        <a:font script="Ethi" typeface="Nyala"/>
+        <a:font script="Beng" typeface="Vrinda"/>
+        <a:font script="Gujr" typeface="Shruti"/>
+        <a:font script="Khmr" typeface="MoolBoran"/>
+        <a:font script="Knda" typeface="Tunga"/>
+        <a:font script="Guru" typeface="Raavi"/>
+        <a:font script="Cans" typeface="Euphemia"/>
+        <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+        <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+        <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+        <a:font script="Thaa" typeface="MV Boli"/>
+        <a:font script="Deva" typeface="Mangal"/>
+        <a:font script="Telu" typeface="Gautami"/>
+        <a:font script="Taml" typeface="Latha"/>
+        <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+        <a:font script="Orya" typeface="Kalinga"/>
+        <a:font script="Mlym" typeface="Kartika"/>
+        <a:font script="Laoo" typeface="DokChampa"/>
+        <a:font script="Sinh" typeface="Iskoola Pota"/>
+        <a:font script="Mong" typeface="Mongolian Baiti"/>
+        <a:font script="Viet" typeface="Times New Roman"/>
+        <a:font script="Uigh" typeface="Microsoft Uighur"/>
+      </a:majorFont>
+      <a:minorFont>
+        <a:latin typeface="Calibri"/>
+        <a:ea typeface=""/>
+        <a:cs typeface=""/>
+        <a:font script="Jpan" typeface="MS Pゴシック"/>
+        <a:font script="Hang" typeface="맑은 고딕"/>
+        <a:font script="Hans" typeface="宋体"/>
+        <a:font script="Hant" typeface="新細明體"/>
+        <a:font script="Arab" typeface="Arial"/>
+        <a:font script="Hebr" typeface="Arial"/>
+        <a:font script="Thai" typeface="Cordia New"/>
+        <a:font script="Ethi" typeface="Nyala"/>
+        <a:font script="Beng" typeface="Vrinda"/>
+        <a:font script="Gujr" typeface="Shruti"/>
+        <a:font script="Khmr" typeface="DaunPenh"/>
+        <a:font script="Knda" typeface="Tunga"/>
+        <a:font script="Guru" typeface="Raavi"/>
+        <a:font script="Cans" typeface="Euphemia"/>
+        <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+        <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+        <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+        <a:font script="Thaa" typeface="MV Boli"/>
+        <a:font script="Deva" typeface="Mangal"/>
+        <a:font script="Telu" typeface="Gautami"/>
+        <a:font script="Taml" typeface="Latha"/>
+        <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+        <a:font script="Orya" typeface="Kalinga"/>
+        <a:font script="Mlym" typeface="Kartika"/>
+        <a:font script="Laoo" typeface="DokChampa"/>
+        <a:font script="Sinh" typeface="Iskoola Pota"/>
+        <a:font script="Mong" typeface="Mongolian Baiti"/>
+        <a:font script="Viet" typeface="Arial"/>
+        <a:font script="Uigh" typeface="Microsoft Uighur"/>
+      </a:minorFont>
+    </a:fontScheme>
+    <a:fmtScheme name="Office">
+      <a:fillStyleLst>
+        <a:solidFill>
+          <a:schemeClr val="phClr"/>
+        </a:solidFill>
+        <a:gradFill rotWithShape="1">
+          <a:gsLst>
+            <a:gs pos="0">
+              <a:schemeClr val="phClr">
+                <a:tint val="50000"/>
+                <a:satMod val="300000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="35000">
+              <a:schemeClr val="phClr">
+                <a:tint val="37000"/>
+                <a:satMod val="300000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="100000">
+              <a:schemeClr val="phClr">
+                <a:tint val="15000"/>
+                <a:satMod val="350000"/>
+              </a:schemeClr>
+            </a:gs>
+          </a:gsLst>
+          <a:lin ang="16200000" scaled="1"/>
+        </a:gradFill>
+        <a:gradFill rotWithShape="1">
+          <a:gsLst>
+            <a:gs pos="0">
+              <a:schemeClr val="phClr">
+                <a:shade val="51000"/>
+                <a:satMod val="130000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="80000">
+              <a:schemeClr val="phClr">
+                <a:shade val="93000"/>
+                <a:satMod val="130000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="100000">
+              <a:schemeClr val="phClr">
+                <a:shade val="94000"/>
+                <a:satMod val="135000"/>
+              </a:schemeClr>
+            </a:gs>
+          </a:gsLst>
+          <a:lin ang="16200000" scaled="0"/>
+        </a:gradFill>
+      </a:fillStyleLst>
+      <a:lnStyleLst>
+        <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
+          <a:solidFill>
+            <a:schemeClr val="phClr">
+              <a:shade val="95000"/>
+              <a:satMod val="105000"/>
+            </a:schemeClr>
+          </a:solidFill>
+          <a:prstDash val="solid"/>
+        </a:ln>
+        <a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">
+          <a:solidFill>
+            <a:schemeClr val="phClr"/>
+          </a:solidFill>
+          <a:prstDash val="solid"/>
+        </a:ln>
+        <a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">
+          <a:solidFill>
+            <a:schemeClr val="phClr"/>
+          </a:solidFill>
+          <a:prstDash val="solid"/>
+        </a:ln>
+      </a:lnStyleLst>
+      <a:effectStyleLst>
+        <a:effectStyle>
+          <a:effectLst>
+            <a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">
+              <a:srgbClr val="000000">
+                <a:alpha val="38000"/>
+              </a:srgbClr>
+            </a:outerShdw>
+          </a:effectLst>
+        </a:effectStyle>
+        <a:effectStyle>
+          <a:effectLst>
+            <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+              <a:srgbClr val="000000">
+                <a:alpha val="35000"/>
+              </a:srgbClr>
+            </a:outerShdw>
+          </a:effectLst>
+        </a:effectStyle>
+        <a:effectStyle>
+          <a:effectLst>
+            <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+              <a:srgbClr val="000000">
+                <a:alpha val="35000"/>
+              </a:srgbClr>
+            </a:outerShdw>
+          </a:effectLst>
+          <a:scene3d>
+            <a:camera prst="orthographicFront">
+              <a:rot lat="0" lon="0" rev="0"/>
+            </a:camera>
+            <a:lightRig rig="threePt" dir="t">
+              <a:rot lat="0" lon="0" rev="1200000"/>
+            </a:lightRig>
+          </a:scene3d>
+          <a:sp3d>
+            <a:bevelT w="63500" h="25400"/>
+          </a:sp3d>
+        </a:effectStyle>
+      </a:effectStyleLst>
+      <a:bgFillStyleLst>
+        <a:solidFill>
+          <a:schemeClr val="phClr"/>
+        </a:solidFill>
+        <a:gradFill rotWithShape="1">
+          <a:gsLst>
+            <a:gs pos="0">
+              <a:schemeClr val="phClr">
+                <a:tint val="40000"/>
+                <a:satMod val="350000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="40000">
+              <a:schemeClr val="phClr">
+                <a:tint val="45000"/>
+                <a:shade val="99000"/>
+                <a:satMod val="350000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="100000">
+              <a:schemeClr val="phClr">
+                <a:shade val="20000"/>
+                <a:satMod val="255000"/>
+              </a:schemeClr>
+            </a:gs>
+          </a:gsLst>
+          <a:path path="circle">
+            <a:fillToRect l="50000" t="-80000" r="50000" b="180000"/>
+          </a:path>
+        </a:gradFill>
+        <a:gradFill rotWithShape="1">
+          <a:gsLst>
+            <a:gs pos="0">
+              <a:schemeClr val="phClr">
+                <a:tint val="80000"/>
+                <a:satMod val="300000"/>
+              </a:schemeClr>
+            </a:gs>
+            <a:gs pos="100000">
+              <a:schemeClr val="phClr">
+                <a:shade val="30000"/>
+                <a:satMod val="200000"/>
+              </a:schemeClr>
+            </a:gs>
+          </a:gsLst>
+          <a:path path="circle">
+            <a:fillToRect l="50000" t="50000" r="50000" b="50000"/>
+          </a:path>
+        </a:gradFill>
+      </a:bgFillStyleLst>
+    </a:fmtScheme>
+  </a:themeElements>
+  <a:objectDefaults/>
+  <a:extraClrSchemeLst/>
+</a:theme>

BIN
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/thumbnail.jpeg


+ 18 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/[Content_Types].xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
+  <Override PartName="/word/footnotes.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml"/>
+  <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
+  <Default Extension="xml" ContentType="application/xml"/>
+  <Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
+  <Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
+  <Override PartName="/word/endnotes.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml"/>
+  <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
+  <Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
+  <Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
+  <Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
+  <Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
+  <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
+  <Override PartName="/customXml/itemProps1.xml" ContentType="application/vnd.openxmlformats-officedocument.customXmlProperties+xml"/>
+  <Default Extension="jpg" ContentType="image/jpg"/>
+  <Default Extension="png" ContentType="image/png"/>
+</Types>

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/_rels/.rels


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/docProps/app.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/docProps/core.xml


+ 10 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/_rels/document.xml.rels

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+  <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml"/>
+  <Relationship Id="rId7" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
+  <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>
+  <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
+  <Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/>
+  <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes" Target="endnotes.xml"/>
+  <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" Target="footnotes.xml"/>
+</Relationships>

Разница между файлами не показана из-за своего большого размера
+ 46611 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document0.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/endnotes.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/footnotes.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/settings.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/theme/theme1.xml


+ 46 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/Info.plist

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>BuildMachineOSBuild</key>
+	<string>22A400</string>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>ComPDFKit_Conversion</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.comdocumentaikit.ComDocumentAIKit.ComPDFKit-Conversion-OCR-macOS-Protected-</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>ComPDFKit_Conversion</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.6.0</string>
+	<key>CFBundleSupportedPlatforms</key>
+	<array>
+		<string>MacOSX</string>
+	</array>
+	<key>CFBundleVersion</key>
+	<string>160</string>
+	<key>DTCompiler</key>
+	<string>com.apple.compilers.llvm.clang.1_0</string>
+	<key>DTPlatformBuild</key>
+	<string>14C18</string>
+	<key>DTPlatformName</key>
+	<string>macosx</string>
+	<key>DTPlatformVersion</key>
+	<string>13.1</string>
+	<key>DTSDKBuild</key>
+	<string>22C55</string>
+	<key>DTSDKName</key>
+	<string>macosx13.1</string>
+	<key>DTXcode</key>
+	<string>1420</string>
+	<key>DTXcodeBuild</key>
+	<string>14C18</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.10</string>
+</dict>
+</plist>

+ 16 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Excel.bundle/FPPDFInfo.plist

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>FPPDFInfo_Creator</key>
+	<string>PDF to Excel</string>
+	<key>FPPDFInfo_Company</key>
+	<string>Flyingbee Software</string>
+	<key>FPPDFInfo_Version</key>
+	<string>1.0</string>
+	<key>FPPDFInfo_Website</key>
+	<string>http://www.flyingbee.com</string>
+	<key>FPPDFInfo_Copyright</key>
+	<string>Copyright @2020 Flyingbee Software</string>
+</dict>
+</plist>

+ 281 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Excel.bundle/theme1.xml

@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">
+	<a:themeElements>
+		<a:clrScheme name="Office">
+			<a:dk1>
+				<a:sysClr val="windowText" lastClr="000000"/>
+			</a:dk1>
+			<a:lt1>
+				<a:sysClr val="window" lastClr="FFFFFF"/>
+			</a:lt1>
+			<a:dk2>
+				<a:srgbClr val="1F497D"/>
+			</a:dk2>
+			<a:lt2>
+				<a:srgbClr val="EEECE1"/>
+			</a:lt2>
+			<a:accent1>
+				<a:srgbClr val="4F81BD"/>
+			</a:accent1>
+			<a:accent2>
+				<a:srgbClr val="C0504D"/>
+			</a:accent2>
+			<a:accent3>
+				<a:srgbClr val="9BBB59"/>
+			</a:accent3>
+			<a:accent4>
+				<a:srgbClr val="8064A2"/>
+			</a:accent4>
+			<a:accent5>
+				<a:srgbClr val="4BACC6"/>
+			</a:accent5>
+			<a:accent6>
+				<a:srgbClr val="F79646"/>
+			</a:accent6>
+			<a:hlink>
+				<a:srgbClr val="0000FF"/>
+			</a:hlink>
+			<a:folHlink>
+				<a:srgbClr val="800080"/>
+			</a:folHlink>
+		</a:clrScheme>
+		<a:fontScheme name="Office">
+			<a:majorFont>
+				<a:latin typeface="Cambria"/>
+				<a:ea typeface=""/>
+				<a:cs typeface=""/>
+				<a:font script="Jpan" typeface="MS Pゴシック"/>
+				<a:font script="Hang" typeface="맑은 고딕"/>
+				<a:font script="Hans" typeface="宋体"/>
+				<a:font script="Hant" typeface="新細明體"/>
+				<a:font script="Arab" typeface="Times New Roman"/>
+				<a:font script="Hebr" typeface="Times New Roman"/>
+				<a:font script="Thai" typeface="Tahoma"/>
+				<a:font script="Ethi" typeface="Nyala"/>
+				<a:font script="Beng" typeface="Vrinda"/>
+				<a:font script="Gujr" typeface="Shruti"/>
+				<a:font script="Khmr" typeface="MoolBoran"/>
+				<a:font script="Knda" typeface="Tunga"/>
+				<a:font script="Guru" typeface="Raavi"/>
+				<a:font script="Cans" typeface="Euphemia"/>
+				<a:font script="Cher" typeface="Plantagenet Cherokee"/>
+				<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+				<a:font script="Tibt" typeface="Microsoft Himalaya"/>
+				<a:font script="Thaa" typeface="MV Boli"/>
+				<a:font script="Deva" typeface="Mangal"/>
+				<a:font script="Telu" typeface="Gautami"/>
+				<a:font script="Taml" typeface="Latha"/>
+				<a:font script="Syrc" typeface="Estrangelo Edessa"/>
+				<a:font script="Orya" typeface="Kalinga"/>
+				<a:font script="Mlym" typeface="Kartika"/>
+				<a:font script="Laoo" typeface="DokChampa"/>
+				<a:font script="Sinh" typeface="Iskoola Pota"/>
+				<a:font script="Mong" typeface="Mongolian Baiti"/>
+				<a:font script="Viet" typeface="Times New Roman"/>
+				<a:font script="Uigh" typeface="Microsoft Uighur"/>
+			</a:majorFont>
+			<a:minorFont>
+				<a:latin typeface="Calibri"/>
+				<a:ea typeface=""/>
+				<a:cs typeface=""/>
+				<a:font script="Jpan" typeface="MS Pゴシック"/>
+				<a:font script="Hang" typeface="맑은 고딕"/>
+				<a:font script="Hans" typeface="宋体"/>
+				<a:font script="Hant" typeface="新細明體"/>
+				<a:font script="Arab" typeface="Arial"/>
+				<a:font script="Hebr" typeface="Arial"/>
+				<a:font script="Thai" typeface="Tahoma"/>
+				<a:font script="Ethi" typeface="Nyala"/>
+				<a:font script="Beng" typeface="Vrinda"/>
+				<a:font script="Gujr" typeface="Shruti"/>
+				<a:font script="Khmr" typeface="DaunPenh"/>
+				<a:font script="Knda" typeface="Tunga"/>
+				<a:font script="Guru" typeface="Raavi"/>
+				<a:font script="Cans" typeface="Euphemia"/>
+				<a:font script="Cher" typeface="Plantagenet Cherokee"/>
+				<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+				<a:font script="Tibt" typeface="Microsoft Himalaya"/>
+				<a:font script="Thaa" typeface="MV Boli"/>
+				<a:font script="Deva" typeface="Mangal"/>
+				<a:font script="Telu" typeface="Gautami"/>
+				<a:font script="Taml" typeface="Latha"/>
+				<a:font script="Syrc" typeface="Estrangelo Edessa"/>
+				<a:font script="Orya" typeface="Kalinga"/>
+				<a:font script="Mlym" typeface="Kartika"/>
+				<a:font script="Laoo" typeface="DokChampa"/>
+				<a:font script="Sinh" typeface="Iskoola Pota"/>
+				<a:font script="Mong" typeface="Mongolian Baiti"/>
+				<a:font script="Viet" typeface="Arial"/>
+				<a:font script="Uigh" typeface="Microsoft Uighur"/>
+			</a:minorFont>
+		</a:fontScheme>
+		<a:fmtScheme name="Office">
+			<a:fillStyleLst>
+				<a:solidFill>
+					<a:schemeClr val="phClr"/>
+				</a:solidFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:tint val="50000"/>
+								<a:satMod val="300000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="35000">
+							<a:schemeClr val="phClr">
+								<a:tint val="37000"/>
+								<a:satMod val="300000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:tint val="15000"/>
+								<a:satMod val="350000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:lin ang="16200000" scaled="1"/>
+				</a:gradFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:shade val="51000"/>
+								<a:satMod val="130000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="80000">
+							<a:schemeClr val="phClr">
+								<a:shade val="93000"/>
+								<a:satMod val="130000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:shade val="94000"/>
+								<a:satMod val="135000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:lin ang="16200000" scaled="0"/>
+				</a:gradFill>
+			</a:fillStyleLst>
+			<a:lnStyleLst>
+				<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
+					<a:solidFill>
+						<a:schemeClr val="phClr">
+							<a:shade val="95000"/>
+							<a:satMod val="105000"/>
+						</a:schemeClr>
+					</a:solidFill>
+					<a:prstDash val="solid"/>
+				</a:ln>
+				<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">
+					<a:solidFill>
+						<a:schemeClr val="phClr"/>
+					</a:solidFill>
+					<a:prstDash val="solid"/>
+				</a:ln>
+				<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">
+					<a:solidFill>
+						<a:schemeClr val="phClr"/>
+					</a:solidFill>
+					<a:prstDash val="solid"/>
+				</a:ln>
+			</a:lnStyleLst>
+			<a:effectStyleLst>
+				<a:effectStyle>
+					<a:effectLst>
+						<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">
+							<a:srgbClr val="000000">
+								<a:alpha val="38000"/>
+							</a:srgbClr>
+						</a:outerShdw>
+					</a:effectLst>
+				</a:effectStyle>
+				<a:effectStyle>
+					<a:effectLst>
+						<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+							<a:srgbClr val="000000">
+								<a:alpha val="35000"/>
+							</a:srgbClr>
+						</a:outerShdw>
+					</a:effectLst>
+				</a:effectStyle>
+				<a:effectStyle>
+					<a:effectLst>
+						<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+							<a:srgbClr val="000000">
+								<a:alpha val="35000"/>
+							</a:srgbClr>
+						</a:outerShdw>
+					</a:effectLst>
+					<a:scene3d>
+						<a:camera prst="orthographicFront">
+							<a:rot lat="0" lon="0" rev="0"/>
+						</a:camera>
+						<a:lightRig rig="threePt" dir="t">
+							<a:rot lat="0" lon="0" rev="1200000"/>
+						</a:lightRig>
+					</a:scene3d>
+					<a:sp3d>
+						<a:bevelT w="63500" h="25400"/>
+					</a:sp3d>
+				</a:effectStyle>
+			</a:effectStyleLst>
+			<a:bgFillStyleLst>
+				<a:solidFill>
+					<a:schemeClr val="phClr"/>
+				</a:solidFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:tint val="40000"/>
+								<a:satMod val="350000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="40000">
+							<a:schemeClr val="phClr">
+								<a:tint val="45000"/>
+								<a:shade val="99000"/>
+								<a:satMod val="350000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:shade val="20000"/>
+								<a:satMod val="255000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:path path="circle">
+						<a:fillToRect l="50000" t="-80000" r="50000" b="180000"/>
+					</a:path>
+				</a:gradFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:tint val="80000"/>
+								<a:satMod val="300000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:shade val="30000"/>
+								<a:satMod val="200000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:path path="circle">
+						<a:fillToRect l="50000" t="50000" r="50000" b="50000"/>
+					</a:path>
+				</a:gradFill>
+			</a:bgFillStyleLst>
+		</a:fmtScheme>
+	</a:themeElements>
+	<a:objectDefaults/>
+	<a:extraClrSchemeLst/>
+</a:theme>

BIN
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Excel.bundle/thumbnail.jpeg


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout1.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout10.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout11.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout2.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout3.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout4.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout5.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout6.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout7.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout8.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout9.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideMaster1.xml


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/theme1.xml


BIN
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/thumbnail.jpeg


Разница между файлами не показана из-за своего большого размера
+ 433 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-styles-2006.xml


Разница между файлами не показана из-за своего большого размера
+ 190 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-stylesWithEffects-2010.xml


+ 281 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-theme1-2006.xml

@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">
+    <a:themeElements>
+        <a:clrScheme name="Office">
+            <a:dk1>
+                <a:sysClr val="windowText" lastClr="000000"/>
+            </a:dk1>
+            <a:lt1>
+                <a:sysClr val="window" lastClr="FFFFFF"/>
+            </a:lt1>
+            <a:dk2>
+                <a:srgbClr val="1F497D"/>
+            </a:dk2>
+            <a:lt2>
+                <a:srgbClr val="EEECE1"/>
+            </a:lt2>
+            <a:accent1>
+                <a:srgbClr val="4F81BD"/>
+            </a:accent1>
+            <a:accent2>
+                <a:srgbClr val="C0504D"/>
+            </a:accent2>
+            <a:accent3>
+                <a:srgbClr val="9BBB59"/>
+            </a:accent3>
+            <a:accent4>
+                <a:srgbClr val="8064A2"/>
+            </a:accent4>
+            <a:accent5>
+                <a:srgbClr val="4BACC6"/>
+            </a:accent5>
+            <a:accent6>
+                <a:srgbClr val="F79646"/>
+            </a:accent6>
+            <a:hlink>
+                <a:srgbClr val="0000FF"/>
+            </a:hlink>
+            <a:folHlink>
+                <a:srgbClr val="800080"/>
+            </a:folHlink>
+        </a:clrScheme>
+        <a:fontScheme name="Office">
+            <a:majorFont>
+                <a:latin typeface="Cambria"/>
+                <a:ea typeface=""/>
+                <a:cs typeface=""/>
+                <a:font script="Jpan" typeface="MS ゴシック"/>
+                <a:font script="Hang" typeface="맑은 고딕"/>
+                <a:font script="Hans" typeface="宋体"/>
+                <a:font script="Hant" typeface="新細明體"/>
+                <a:font script="Arab" typeface="Times New Roman"/>
+                <a:font script="Hebr" typeface="Times New Roman"/>
+                <a:font script="Thai" typeface="Angsana New"/>
+                <a:font script="Ethi" typeface="Nyala"/>
+                <a:font script="Beng" typeface="Vrinda"/>
+                <a:font script="Gujr" typeface="Shruti"/>
+                <a:font script="Khmr" typeface="MoolBoran"/>
+                <a:font script="Knda" typeface="Tunga"/>
+                <a:font script="Guru" typeface="Raavi"/>
+                <a:font script="Cans" typeface="Euphemia"/>
+                <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+                <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+                <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+                <a:font script="Thaa" typeface="MV Boli"/>
+                <a:font script="Deva" typeface="Mangal"/>
+                <a:font script="Telu" typeface="Gautami"/>
+                <a:font script="Taml" typeface="Latha"/>
+                <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+                <a:font script="Orya" typeface="Kalinga"/>
+                <a:font script="Mlym" typeface="Kartika"/>
+                <a:font script="Laoo" typeface="DokChampa"/>
+                <a:font script="Sinh" typeface="Iskoola Pota"/>
+                <a:font script="Mong" typeface="Mongolian Baiti"/>
+                <a:font script="Viet" typeface="Times New Roman"/>
+                <a:font script="Uigh" typeface="Microsoft Uighur"/>
+            </a:majorFont>
+            <a:minorFont>
+                <a:latin typeface="Calibri"/>
+                <a:ea typeface=""/>
+                <a:cs typeface=""/>
+                <a:font script="Jpan" typeface="MS 明朝"/>
+                <a:font script="Hang" typeface="맑은 고딕"/>
+                <a:font script="Hans" typeface="宋体"/>
+                <a:font script="Hant" typeface="新細明體"/>
+                <a:font script="Arab" typeface="Arial"/>
+                <a:font script="Hebr" typeface="Arial"/>
+                <a:font script="Thai" typeface="Cordia New"/>
+                <a:font script="Ethi" typeface="Nyala"/>
+                <a:font script="Beng" typeface="Vrinda"/>
+                <a:font script="Gujr" typeface="Shruti"/>
+                <a:font script="Khmr" typeface="DaunPenh"/>
+                <a:font script="Knda" typeface="Tunga"/>
+                <a:font script="Guru" typeface="Raavi"/>
+                <a:font script="Cans" typeface="Euphemia"/>
+                <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+                <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+                <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+                <a:font script="Thaa" typeface="MV Boli"/>
+                <a:font script="Deva" typeface="Mangal"/>
+                <a:font script="Telu" typeface="Gautami"/>
+                <a:font script="Taml" typeface="Latha"/>
+                <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+                <a:font script="Orya" typeface="Kalinga"/>
+                <a:font script="Mlym" typeface="Kartika"/>
+                <a:font script="Laoo" typeface="DokChampa"/>
+                <a:font script="Sinh" typeface="Iskoola Pota"/>
+                <a:font script="Mong" typeface="Mongolian Baiti"/>
+                <a:font script="Viet" typeface="Arial"/>
+                <a:font script="Uigh" typeface="Microsoft Uighur"/>
+            </a:minorFont>
+        </a:fontScheme>
+        <a:fmtScheme name="Office">
+            <a:fillStyleLst>
+                <a:solidFill>
+                    <a:schemeClr val="phClr"/>
+                </a:solidFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="50000"/>
+                                <a:satMod val="300000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="35000">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="37000"/>
+                                <a:satMod val="300000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="15000"/>
+                                <a:satMod val="350000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:lin ang="16200000" scaled="1"/>
+                </a:gradFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="51000"/>
+                                <a:satMod val="130000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="80000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="93000"/>
+                                <a:satMod val="130000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="94000"/>
+                                <a:satMod val="135000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:lin ang="16200000" scaled="0"/>
+                </a:gradFill>
+            </a:fillStyleLst>
+            <a:lnStyleLst>
+                <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
+                    <a:solidFill>
+                        <a:schemeClr val="phClr">
+                            <a:shade val="95000"/>
+                            <a:satMod val="105000"/>
+                        </a:schemeClr>
+                    </a:solidFill>
+                    <a:prstDash val="solid"/>
+                </a:ln>
+                <a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">
+                    <a:solidFill>
+                        <a:schemeClr val="phClr"/>
+                    </a:solidFill>
+                    <a:prstDash val="solid"/>
+                </a:ln>
+                <a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">
+                    <a:solidFill>
+                        <a:schemeClr val="phClr"/>
+                    </a:solidFill>
+                    <a:prstDash val="solid"/>
+                </a:ln>
+            </a:lnStyleLst>
+            <a:effectStyleLst>
+                <a:effectStyle>
+                    <a:effectLst>
+                        <a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">
+                            <a:srgbClr val="000000">
+                                <a:alpha val="38000"/>
+                            </a:srgbClr>
+                        </a:outerShdw>
+                    </a:effectLst>
+                </a:effectStyle>
+                <a:effectStyle>
+                    <a:effectLst>
+                        <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+                            <a:srgbClr val="000000">
+                                <a:alpha val="35000"/>
+                            </a:srgbClr>
+                        </a:outerShdw>
+                    </a:effectLst>
+                </a:effectStyle>
+                <a:effectStyle>
+                    <a:effectLst>
+                        <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+                            <a:srgbClr val="000000">
+                                <a:alpha val="35000"/>
+                            </a:srgbClr>
+                        </a:outerShdw>
+                    </a:effectLst>
+                    <a:scene3d>
+                        <a:camera prst="orthographicFront">
+                            <a:rot lat="0" lon="0" rev="0"/>
+                        </a:camera>
+                        <a:lightRig rig="threePt" dir="t">
+                            <a:rot lat="0" lon="0" rev="1200000"/>
+                        </a:lightRig>
+                    </a:scene3d>
+                    <a:sp3d>
+                        <a:bevelT w="63500" h="25400"/>
+                    </a:sp3d>
+                </a:effectStyle>
+            </a:effectStyleLst>
+            <a:bgFillStyleLst>
+                <a:solidFill>
+                    <a:schemeClr val="phClr"/>
+                </a:solidFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="40000"/>
+                                <a:satMod val="350000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="40000">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="45000"/>
+                                <a:shade val="99000"/>
+                                <a:satMod val="350000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="20000"/>
+                                <a:satMod val="255000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:path path="circle">
+                        <a:fillToRect l="50000" t="-80000" r="50000" b="180000"/>
+                    </a:path>
+                </a:gradFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="80000"/>
+                                <a:satMod val="300000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="30000"/>
+                                <a:satMod val="200000"/>
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:path path="circle">
+                        <a:fillToRect l="50000" t="50000" r="50000" b="50000"/>
+                    </a:path>
+                </a:gradFill>
+            </a:bgFillStyleLst>
+        </a:fmtScheme>
+    </a:themeElements>
+    <a:objectDefaults/>
+    <a:extraClrSchemeLst/>
+</a:theme>

+ 0 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.7.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-webSettings-2006.xml


Некоторые файлы не были показаны из-за большого количества измененных файлов