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

换库 - 接入 V1.6.0 测试版本库,做对比测试

zhudongyong 2 лет назад
Родитель
Сommit
05037d063a
100 измененных файлов с 143378 добавлено и 698 удалено
  1. 64 2
      KdanAutoTest/KdanAuto.xcodeproj/project.pbxproj
  2. BIN
      KdanAutoTest/KdanAuto.xcodeproj/project.xcworkspace/xcuserdata/zhudongyong.xcuserdatad/UserInterfaceState.xcuserstate
  3. 0 32
      KdanAutoTest/KdanAuto.xcodeproj/xcuserdata/zhudongyong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 252 215
      KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTest.swift
  5. 2 1
      KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTestProtocal.swift
  6. 3 1
      KdanAutoTest/KdanAuto/Class/AutoTestCase/FontAutoTest.swift
  7. 3 4
      KdanAutoTest/KdanAuto/Class/AutoTestCase/PDFCompareTest.swift
  8. 223 212
      KdanAutoTest/KdanAuto/Class/AutoTestCase/StringAutoTest.swift
  9. 231 219
      KdanAutoTest/KdanAuto/Class/AutoTestCase/TextColorAutoTest.swift
  10. 2 5
      KdanAutoTest/KdanAuto/Class/Setting/SettingViewController.swift
  11. 6 7
      KdanAutoTest/KdanAuto/Class/Tools/FileConveter/FileConverter.swift
  12. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/ComPDFKit_Conversion
  13. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Headers
  14. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Modules
  15. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Resources
  16. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/ComPDFKit_Conversion
  17. 20 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertCsvOptions.h
  18. 42 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertExcelOptions.h
  19. 37 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertHtmlOptions.h
  20. 32 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertImgOptions.h
  21. 42 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertKit.h
  22. 20 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertOptions.h
  23. 20 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertPPTOptions.h
  24. 20 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertRtfOptions.h
  25. 20 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertTxtOptions.h
  26. 20 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConvertWordOptions.h
  27. 93 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverter.h
  28. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterCsv.h
  29. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterExcel.h
  30. 70 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterFP.h
  31. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterHtml.h
  32. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterImg.h
  33. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterPPT.h
  34. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterRtf.h
  35. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterTxt.h
  36. 29 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/CPDFConverterWord.h
  37. 33 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Headers/ComPDFKit_Conversion.h
  38. 6 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Modules/module.modulemap
  39. 237 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout1.xml
  40. 165 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout10.xml
  41. 175 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout11.xml
  42. 165 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout2.xml
  43. 241 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout3.xml
  44. 283 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout4.xml
  45. 417 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout5.xml
  46. 113 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout6.xml
  47. 90 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout7.xml
  48. 272 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout8.xml
  49. 248 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideLayouts/slideLayout9.xml
  50. 503 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/slideMaster1.xml
  51. 281 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/theme1.xml
  52. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/thumbnail.jpeg
  53. 18 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/[Content_Types].xml
  54. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/_rels/.rels
  55. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/docProps/app.xml
  56. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/docProps/core.xml
  57. 10 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/_rels/document.xml.rels
  58. 46611 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document.xml
  59. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document0.xml
  60. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/endnotes.xml
  61. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/footnotes.xml
  62. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/settings.xml
  63. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/theme/theme1.xml
  64. 46 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/Info.plist
  65. 16 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Excel.bundle/FPPDFInfo.plist
  66. 281 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Excel.bundle/theme1.xml
  67. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Excel.bundle/thumbnail.jpeg
  68. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout1.xml
  69. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout10.xml
  70. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout11.xml
  71. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout2.xml
  72. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout3.xml
  73. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout4.xml
  74. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout5.xml
  75. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout6.xml
  76. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout7.xml
  77. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout8.xml
  78. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideLayout9.xml
  79. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/slideMaster1.xml
  80. 2 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/theme1.xml
  81. BIN
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2PowerPoint.bundle/thumbnail.jpeg
  82. 433 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-styles-2006.xml
  83. 190 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-stylesWithEffects-2010.xml
  84. 281 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-theme1-2006.xml
  85. 4 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Word.bundle/Docx XML Templates/docx-template-webSettings-2006.xml
  86. 14676 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Word.bundle/word-line-height.plist
  87. 28057 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/FontBook.plist
  88. 107 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/FontBook_Replace.plist
  89. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/90ms-RKSJ-UCS2
  90. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/90pv-RKSJ-UCS2
  91. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/90pv-RKSJ-UCS2C
  92. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-CNS1-UCS2
  93. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-GB1-UCS2
  94. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-Japan1-UCS2
  95. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-Korea1-UCS2
  96. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/B5pc-UCS2
  97. 1 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/B5pc-UCS2C
  98. 18846 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/CIDToUnicode/Adobe-CNS1.cidToUnicode
  99. 29064 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/CIDToUnicode/Adobe-GB1.cidToUnicode
  100. 0 0
      KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/CIDToUnicode/Adobe-Japan1.cidToUnicode

+ 64 - 2
KdanAutoTest/KdanAuto.xcodeproj/project.pbxproj

@@ -7,6 +7,20 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		2400D7C729B9F52C0059AC45 /* libDocumentAI.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C029B9F52B0059AC45 /* libDocumentAI.dylib */; };
+		2400D7C829B9F52C0059AC45 /* libopencv_world.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C129B9F52B0059AC45 /* libopencv_world.dylib */; };
+		2400D7C929B9F52C0059AC45 /* ComDocumentAIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C229B9F52B0059AC45 /* ComDocumentAIKit.framework */; };
+		2400D7CA29B9F52C0059AC45 /* libopencv_world.4.2.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C329B9F52B0059AC45 /* libopencv_world.4.2.0.dylib */; };
+		2400D7CB29B9F52C0059AC45 /* libonnxruntime.1.12.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C429B9F52B0059AC45 /* libonnxruntime.1.12.0.dylib */; };
+		2400D7CC29B9F52C0059AC45 /* libpaddle2onnx.1.0.5.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C529B9F52B0059AC45 /* libpaddle2onnx.1.0.5.dylib */; };
+		2400D7CD29B9F52C0059AC45 /* libopencv_world.4.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2400D7C629B9F52B0059AC45 /* libopencv_world.4.2.dylib */; };
+		2400D7CE29B9F5430059AC45 /* ComDocumentAIKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C229B9F52B0059AC45 /* ComDocumentAIKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		2400D7CF29B9F5550059AC45 /* libDocumentAI.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C029B9F52B0059AC45 /* libDocumentAI.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		2400D7D029B9F5550059AC45 /* libopencv_world.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C129B9F52B0059AC45 /* libopencv_world.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		2400D7D129B9F5550059AC45 /* libopencv_world.4.2.0.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C329B9F52B0059AC45 /* libopencv_world.4.2.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		2400D7D229B9F5550059AC45 /* libonnxruntime.1.12.0.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C429B9F52B0059AC45 /* libonnxruntime.1.12.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		2400D7D329B9F5550059AC45 /* libpaddle2onnx.1.0.5.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C529B9F52B0059AC45 /* libpaddle2onnx.1.0.5.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+		2400D7D429B9F5550059AC45 /* libopencv_world.4.2.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2400D7C629B9F52B0059AC45 /* libopencv_world.4.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
 		240509B329433CDE00B501B2 /* QuickLookThumbnailing.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 240509B029433CDE00B501B2 /* QuickLookThumbnailing.framework */; };
 		240509B429433CDE00B501B2 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 240509B129433CDE00B501B2 /* QuickLook.framework */; };
 		240509B529433CDE00B501B2 /* QuickLookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 240509B229433CDE00B501B2 /* QuickLookUI.framework */; };
@@ -108,6 +122,13 @@
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
+				2400D7CF29B9F5550059AC45 /* libDocumentAI.dylib in CopyFiles */,
+				2400D7D029B9F5550059AC45 /* libopencv_world.dylib in CopyFiles */,
+				2400D7D129B9F5550059AC45 /* libopencv_world.4.2.0.dylib in CopyFiles */,
+				2400D7D229B9F5550059AC45 /* libonnxruntime.1.12.0.dylib in CopyFiles */,
+				2400D7D329B9F5550059AC45 /* libpaddle2onnx.1.0.5.dylib in CopyFiles */,
+				2400D7D429B9F5550059AC45 /* libopencv_world.4.2.dylib in CopyFiles */,
+				2400D7CE29B9F5430059AC45 /* ComDocumentAIKit.framework in CopyFiles */,
 				240550FF2952F42F00B95E0B /* ComPDFKit_Conversion.framework in CopyFiles */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -115,6 +136,13 @@
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
+		2400D7C029B9F52B0059AC45 /* libDocumentAI.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libDocumentAI.dylib; sourceTree = "<group>"; };
+		2400D7C129B9F52B0059AC45 /* libopencv_world.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libopencv_world.dylib; sourceTree = "<group>"; };
+		2400D7C229B9F52B0059AC45 /* ComDocumentAIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ComDocumentAIKit.framework; sourceTree = "<group>"; };
+		2400D7C329B9F52B0059AC45 /* libopencv_world.4.2.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libopencv_world.4.2.0.dylib; sourceTree = "<group>"; };
+		2400D7C429B9F52B0059AC45 /* libonnxruntime.1.12.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libonnxruntime.1.12.0.dylib; sourceTree = "<group>"; };
+		2400D7C529B9F52B0059AC45 /* libpaddle2onnx.1.0.5.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libpaddle2onnx.1.0.5.dylib; sourceTree = "<group>"; };
+		2400D7C629B9F52B0059AC45 /* libopencv_world.4.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libopencv_world.4.2.dylib; sourceTree = "<group>"; };
 		240509B029433CDE00B501B2 /* QuickLookThumbnailing.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLookThumbnailing.framework; path = System/Library/PrivateFrameworks/QuickLookThumbnailing.framework; sourceTree = SDKROOT; };
 		240509B129433CDE00B501B2 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; };
 		240509B229433CDE00B501B2 /* QuickLookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLookUI.framework; path = System/Library/Frameworks/QuickLookUI.framework; sourceTree = SDKROOT; };
@@ -198,11 +226,18 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				2400D7C829B9F52C0059AC45 /* libopencv_world.dylib in Frameworks */,
 				2411D9CD29ABAF36009DE4A8 /* PDFKit.framework in Frameworks */,
+				2400D7CD29B9F52C0059AC45 /* libopencv_world.4.2.dylib in Frameworks */,
 				2451F58B2952E4E50049FA9C /* ComPDFKit_Conversion.framework in Frameworks */,
+				2400D7CB29B9F52C0059AC45 /* libonnxruntime.1.12.0.dylib in Frameworks */,
 				240509B329433CDE00B501B2 /* QuickLookThumbnailing.framework in Frameworks */,
 				240509B429433CDE00B501B2 /* QuickLook.framework in Frameworks */,
 				240509B529433CDE00B501B2 /* QuickLookUI.framework in Frameworks */,
+				2400D7C929B9F52C0059AC45 /* ComDocumentAIKit.framework in Frameworks */,
+				2400D7CC29B9F52C0059AC45 /* libpaddle2onnx.1.0.5.dylib in Frameworks */,
+				2400D7CA29B9F52C0059AC45 /* libopencv_world.4.2.0.dylib in Frameworks */,
+				2400D7C729B9F52C0059AC45 /* libDocumentAI.dylib in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -244,6 +279,21 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		2400D7BF29B9F52B0059AC45 /* otherlib */ = {
+			isa = PBXGroup;
+			children = (
+				2400D7C029B9F52B0059AC45 /* libDocumentAI.dylib */,
+				2400D7C129B9F52B0059AC45 /* libopencv_world.dylib */,
+				2400D7C229B9F52B0059AC45 /* ComDocumentAIKit.framework */,
+				2400D7C329B9F52B0059AC45 /* libopencv_world.4.2.0.dylib */,
+				2400D7C429B9F52B0059AC45 /* libonnxruntime.1.12.0.dylib */,
+				2400D7C529B9F52B0059AC45 /* libpaddle2onnx.1.0.5.dylib */,
+				2400D7C629B9F52B0059AC45 /* libopencv_world.4.2.dylib */,
+			);
+			name = otherlib;
+			path = "../../../../../../../../../Users/zhudongyong/Library/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/4E1ABC1AA40B741D302D9B14F8ADC05C/Caches/Files/2023-03/47b92f906f9cbbc24790f7d89342b69f/otherlib";
+			sourceTree = "<group>";
+		};
 		240509AF29433CDE00B501B2 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
@@ -514,6 +564,7 @@
 		24E4FD43293462F0008BA2EC /* Third Part Library */ = {
 			isa = PBXGroup;
 			children = (
+				2400D7BF29B9F52B0059AC45 /* otherlib */,
 				2451F58A2952E4E50049FA9C /* ComPDFKit_Conversion.framework */,
 			);
 			path = "Third Part Library";
@@ -994,14 +1045,16 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = KdanAuto/KdanAutoDebug.entitlements;
 				CODE_SIGN_IDENTITY = "Apple Development";
-				CODE_SIGN_STYLE = Automatic;
+				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "-";
+				CODE_SIGN_STYLE = Manual;
 				COMBINE_HIDPI_IMAGES = YES;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = 4GGQPGRTSV;
+				DEVELOPMENT_TEAM = "";
 				ENABLE_HARDENED_RUNTIME = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/KdanAuto/Third\\ Part\\ Library",
+					"$(USER_LIBRARY_DIR)/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/4E1ABC1AA40B741D302D9B14F8ADC05C/Caches/Files/2023-03/47b92f906f9cbbc24790f7d89342b69f/otherlib",
 				);
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_KEY_NSHumanReadableCopyright = "";
@@ -1011,6 +1064,10 @@
 					"$(inherited)",
 					"@executable_path/../Frameworks",
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(USER_LIBRARY_DIR)/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/4E1ABC1AA40B741D302D9B14F8ADC05C/Caches/Files/2023-03/47b92f906f9cbbc24790f7d89342b69f/otherlib",
+				);
 				MACOSX_DEPLOYMENT_TARGET = 11.0;
 				MARKETING_VERSION = 1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.brother.kdanauto.mac;
@@ -1040,6 +1097,7 @@
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/KdanAuto/Third\\ Part\\ Library",
+					"$(USER_LIBRARY_DIR)/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/4E1ABC1AA40B741D302D9B14F8ADC05C/Caches/Files/2023-03/47b92f906f9cbbc24790f7d89342b69f/otherlib",
 				);
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_KEY_NSHumanReadableCopyright = "";
@@ -1049,6 +1107,10 @@
 					"$(inherited)",
 					"@executable_path/../Frameworks",
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(USER_LIBRARY_DIR)/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/4E1ABC1AA40B741D302D9B14F8ADC05C/Caches/Files/2023-03/47b92f906f9cbbc24790f7d89342b69f/otherlib",
+				);
 				MACOSX_DEPLOYMENT_TARGET = 11.0;
 				MARKETING_VERSION = 1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.brother.kdanauto.mac;

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


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

@@ -4,22 +4,6 @@
    type = "1"
    version = "2.0">
    <Breakpoints>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "AADDAEFE-C6AC-4748-8963-1F1F9FA32A19"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KdanAuto/Class/AutoTestCase/AutoTest.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "648"
-            endingLineNumber = "648"
-            landmarkName = "stringToImage(_:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -36,22 +20,6 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "B54E22B4-6E30-41B2-B5D8-90862655E3C6"
-            shouldBeEnabled = "No"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "KdanAuto/Class/AutoTestCase/AutoTest.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "47"
-            endingLineNumber = "47"
-            landmarkName = "autoTestFor(_:type:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent

+ 252 - 215
KdanAutoTest/KdanAuto/Class/AutoTestCase/AutoTest.swift

@@ -21,9 +21,7 @@ class AutoTest : NSObject, AutoTestProtocal {
     var _extention : String = "rtf"
     var _name : String = "对照测试"
     var _params : NSDictionary = [:]
-    var _complention:(AutoTest,NSAttributedString?) -> () = {(obj,rep) in
-        
-    }
+    let compareImageQueue = OperationQueue()
     
     class func autoTestFor(_ fileType:NSString ,type:NSString) -> AutoTest? {
         let key = String(fileType) + "." + String(type)
@@ -39,9 +37,9 @@ class AutoTest : NSObject, AutoTestProtocal {
 //        }
         
         let fileTypes = testTypeInfo[fileType] as! NSArray
-       
+        
         let clsname = "KdanAuto"//Bundle.main.infoDictionary! ["CFBundleExecutable"]
-    
+        
         for item in fileTypes {
             let cItem = item as! NSDictionary
             
@@ -94,6 +92,10 @@ class AutoTest : NSObject, AutoTestProtocal {
         return _name
     }
     
+    func extention() -> String {
+        return _extention
+    }
+    
     func params() -> NSDictionary {
         return _params
     }
@@ -140,237 +142,271 @@ class AutoTest : NSObject, AutoTestProtocal {
     
     // Auto Test
     func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ()) {
-        self._complention = complention
-        DispatchQueue.global().async {
-            self.autoTest()
-            
-            DispatchQueue.main.async {
-                self._complention(self, nil)
-            }
-        }
-    }
-    
-    func autoTest() {
         clearCacheFiles()
         
+        NSLog(String("转换\(self.type())"))
+        let needCompare = self.selectedKeys().contains("快照")
+        
+        if !needCompare {
+            // 未勾选 ”快照“ 选项
+            self._status = .Finished
+            complention(self, self.reportString)
+            return
+        }
+        
         if hasOriginFile() {
-            NSLog(String("转换\(self.type())"))
-            let needCompare = self.selectedKeys().contains("快照")
-            
-            if !needCompare {
-                _status = .Finished
-                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) as [String]
-            
-            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)
-            
-            for fileName in files {
-                autoreleasepool {
-                    let fName = NSString(string: fileName).deletingPathExtension
-                    let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
-                    let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+_extention)
-                    //                let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
-                    
-                    
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
-                                                                        attributes:[.foregroundColor : NSColor.blue]))
-                    // ...
-                    // 执行转换过程
-                    let status = process(originPath, resultPath: resultPath)
-                    
+            //目录中有需要执行对照的文件
+            DispatchQueue.global().async {
+                self._status = .Process
+                self.reportString = NSMutableAttributedString.init(string: "\n【\(String(self.fileType())) - \(self.name())】快照比对开始!\n",
+                                                              attributes:[.foregroundColor : NSColor.blue])
+                let files = DataModel.shared.originFilesFor(self.fileType(), type: self.type()) as [String]
+                
+                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)
+                
+                // 用 Block 递归调用形式,确保转档单任务执行
+                var convertFileBlock = { (files:[String], fileIndex:Int) in }
+                convertFileBlock = { (files:[String], fileIndex:Int) 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 {
+                            complention(self, self.reportString);
+                        }
+                        return
+                    }
                     
-                    var isDirectory = ObjCBool(false)
-                    if FileManager.default.fileExists(atPath: resultPath, isDirectory:&isDirectory) && status == 1 {
-                        // compare screenshoot between result file with check file
-                        if needCompare {
-                            let items = NSMutableArray()
-                            if (isDirectory.boolValue) {
-                                let searchItems = try! FileManager.default.contentsOfDirectory(atPath: resultPath)
-                                for item in NSArray(array: searchItems) {
-                                    let ext = NSString(string: item as! String).pathExtension.lowercased()
-                                    if (NSArray(array: [_extention]).contains(ext)) {
-                                        let fileName = NSString(string: fName+"."+_extention+"/\(item as! String)").deletingPathExtension
-                                        items.add(fileName)
+                    //
+                    let fileName = files[fileIndex];
+                    autoreleasepool {
+                        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+"."+_extention)
+                        
+                        
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
+                                                                            attributes:[.foregroundColor : NSColor.blue]))
+                        // ...
+                        // 执行异步转换过程
+                        self.process(originPath, resultPath: resultPath) { status in
+                            var isDirectory = ObjCBool(false)
+                            if FileManager.default.fileExists(atPath: resultPath, isDirectory:&isDirectory) && status == 1 {
+                                // compare screenshoot between result file with check file
+                                if needCompare {
+                                    let items = NSMutableArray()
+                                    if (isDirectory.boolValue) {
+                                        let searchItems = try! FileManager.default.contentsOfDirectory(atPath: resultPath)
+                                        for item in NSArray(array: searchItems) {
+                                            let ext = NSString(string: item as! String).pathExtension.lowercased()
+                                            if (NSArray(array: [self.extention()]).contains(ext)) {
+                                                let fileName = NSString(string: fName+"."+self.extention()+"/\(item as! String)").deletingPathExtension
+                                                items.add(fileName)
+                                            }
+                                        }
+                                    }else {
+                                        items.add(fName)
                                     }
-                                }
-                            }else {
-                                items.add(fName)
-                            }
-                            
-                            var subDegree = Double(0);
-                            var subCount = Int(0)
-                            
-                            for item in items {
-                                autoreleasepool {
-                                    let subFileName = item as! String
-                                    let subResultPath = NSString(string: resultDirectory).appendingPathComponent(subFileName+"."+_extention)
                                     
-                                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subFileName+".\(_extention)")\"快照生成中\n",
-                                                                                        attributes:[.foregroundColor : NSColor.black]))
-                                    let rComparePath = NSString(string: resultDirectory).appendingPathComponent(subFileName+".jpg")
-                                    let cComparePath = NSString(string: checkDirectory).appendingPathComponent(subFileName+".jpg")
+                                    var subDegree = Double(0);
+                                    var subCount = Int(0)
                                     
+                                    self.compareImageQueue.maxConcurrentOperationCount = 1;
                                     
-                                    let processThumbSemaphore = DispatchSemaphore(value: 0)
-                                    var processSuccess = false
-                                    let thumbnailQueue = DispatchQueue.global()
-                                    thumbnailQueue.async {
-                                        processSuccess = ProcessThumbnal.process(subResultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048))
-                                        
-                                        if ( processSuccess &&
-                                             FileManager.default.fileExists(atPath: rComparePath)) {
-                                            
-                                            var isDirectory = ObjCBool(false)
-                                            if FileManager.default.fileExists(atPath: rComparePath, isDirectory: &isDirectory) && isDirectory.boolValue {
-                                                // 单个文件生成批量快照目录情形
-                                                let subImages = try! FileManager.default.contentsOfDirectory(atPath: rComparePath)
-                                                for subImageName in subImages {
-                                                    let pathCompotent = "/"+subImageName
-                                                    let degree = ImageProcess.compareJPEG(String(rComparePath+pathCompotent), checkPath: String(cComparePath+pathCompotent), processCover: true)
+                                    var processCount = Int(0);
+                                    for item in items {
+                                        self.compareImageQueue.addOperation {
+                                            DispatchQueue.global().async {
+                                                autoreleasepool {
+                                                    let subFileName = item as! String
+                                                    let subResultPath = NSString(string: resultDirectory).appendingPathComponent(subFileName+"."+self.extention())
                                                     
+                                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subFileName+".\(self.extention())")\"快照生成中\n",
+                                                                                                             attributes:[.foregroundColor : NSColor.black]))
+                                                    let rComparePath = NSString(string: resultDirectory).appendingPathComponent(subFileName+".jpg")
+                                                    let cComparePath = NSString(string: checkDirectory).appendingPathComponent(subFileName+".jpg")
                                                     
-                                                    NSLog(String("文件夹,\(subFileName+".jpg"+pathCompotent)"))
                                                     
-                                                    TestDegreeManager.shared().set(degree, fileType: self.fileType(), type: self.type(),
-                                                                                   fileName: fileName, refFilePath: subFileName+".jpg"+pathCompotent)
-                                                    
-                                                    if degree == -1 {
-                                                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath+pathCompotent)\"快照对比失败,生成快照失败或无比对文件\n",
-                                                                                                                 attributes:[.foregroundColor : NSColor.red]))
-                                                    }else {
-                                                        var color = NSColor.black
-                                                        if fabs(degree-100.0) >= 0.01 {
-                                                            color = NSColor.red
+                                                    ProcessThumbnal.process(subResultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048)) { processSuccess in
+                                                        if ( processSuccess &&
+                                                             FileManager.default.fileExists(atPath: rComparePath)) {
+                                                            
+                                                            var isDirectory = ObjCBool(false)
+                                                            if FileManager.default.fileExists(atPath: rComparePath, isDirectory: &isDirectory) && isDirectory.boolValue {
+                                                                // 单个文件生成批量快照目录情形
+                                                                let subImages = try! FileManager.default.contentsOfDirectory(atPath: rComparePath)
+                                                                for subImageName in subImages {
+                                                                    let pathCompotent = "/"+subImageName
+                                                                    let degree = ImageProcess.compareJPEG(String(rComparePath+pathCompotent), checkPath: String(cComparePath+pathCompotent), processCover: true)
+                                                                    
+                                                                    
+                                                                    NSLog(String("文件夹,\(subFileName+".jpg"+pathCompotent)"))
+                                                                    
+                                                                    TestDegreeManager.shared().set(degree, fileType: self.fileType(), type: self.type(),
+                                                                                                   fileName: fileName, refFilePath: subFileName+".jpg"+pathCompotent)
+                                                                    
+                                                                    if degree == -1 {
+                                                                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath+pathCompotent)\"快照对比失败,生成快照失败或无比对文件\n",
+                                                                                                                                 attributes:[.foregroundColor : NSColor.red]))
+                                                                    }else {
+                                                                        var color = NSColor.black
+                                                                        if fabs(degree-100.0) >= 0.01 {
+                                                                            color = NSColor.red
+                                                                        }
+                                                                        subDegree += degree
+                                                                        subCount += 1
+                                                                        
+                                                                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath+pathCompotent)\"快照对比完成,图像相似度 \(degree)%\n",
+                                                                                                                                 attributes:[.foregroundColor : color]))
+                                                                    }
+                                                                }
+                                                            }else {
+                                                                // 单个文件生成单个快照文件情形
+                                                                
+                                                                let degree = ImageProcess.compareJPEG(rComparePath, checkPath: cComparePath, processCover: true)
+                                                                
+                                                                NSLog(String("非文件夹,\(subFileName+".jpg")"))
+                                                                
+                                                                TestDegreeManager.shared().set(degree, fileType: self.fileType(), type: self.type(),
+                                                                                               fileName: fileName, refFilePath: subFileName+".jpg")
+                                                                
+                                                                if degree == -1 {
+                                                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath)\"快照对比失败,生成快照失败或无比对文件\n",
+                                                                                                                             attributes:[.foregroundColor : NSColor.red]))
+                                                                }else {
+                                                                    var color = NSColor.black
+                                                                    if fabs(degree-100.0) >= 0.01 {
+                                                                        color = NSColor.red
+                                                                    }
+                                                                    subDegree += degree
+                                                                    subCount += 1
+                                                                    
+                                                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath)\"快照对比完成,图像相似度 \(degree)%\n",
+                                                                                                                             attributes:[.foregroundColor : color]))
+                                                                }
+                                                            }
+                                                        }else {
+                                                            self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath)\"快照生成失败\n",
+                                                                                                                     attributes:[.foregroundColor : NSColor.red]))
                                                         }
-                                                        subDegree += degree
-                                                        subCount += 1
                                                         
-                                                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath+pathCompotent)\"快照对比完成,图像相似度 \(degree)%\n",
-                                                                                                                 attributes:[.foregroundColor : color]))
-                                                    }
-                                                }
-                                            }else {
-                                                // 单个文件生成单个快照文件情形
-                                                
-                                                let degree = ImageProcess.compareJPEG(rComparePath, checkPath: cComparePath, processCover: true)
-                                                
-                                                NSLog(String("非文件夹,\(subFileName+".jpg")"))
-                                                
-                                                TestDegreeManager.shared().set(degree, fileType: self.fileType(), type: self.type(),
-                                                                               fileName: fileName, refFilePath: subFileName+".jpg")
-                                                
-                                                if degree == -1 {
-                                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath)\"快照对比失败,生成快照失败或无比对文件\n",
-                                                                                                             attributes:[.foregroundColor : NSColor.red]))
-                                                }else {
-                                                    var color = NSColor.black
-                                                    if fabs(degree-100.0) >= 0.01 {
-                                                        color = NSColor.red
+                                                        processCount = processCount+1
+                                                        
+                                                        if (processCount >= items.count) {
+                                                            if subCount != 0 {
+                                                                subDegree = subDegree/Double(subCount)
+                                                            }else {
+                                                                subDegree = 0.0
+                                                            }
+                                                            
+                                                            TestDegreeManager.shared().set(subDegree,
+                                                                                           fileType: self.fileType(),
+                                                                                           type: self.type(),
+                                                                                           fileName: fileName)
+                                                            tDegree += subDegree;
+                                                            tCount += 1
+                                                            
+                                                            DispatchQueue.global().async {
+                                                                autoreleasepool {
+                                                                    // 执行下一个文件转档
+                                                                    convertFileBlock(files, fileIndex + 1)
+                                                                }
+                                                            }
+                                                        }
                                                     }
-                                                    subDegree += degree
-                                                    subCount += 1
-                                                    
-                                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath)\"快照对比完成,图像相似度 \(degree)%\n",
-                                                                                                             attributes:[.foregroundColor : color]))
                                                 }
                                             }
-                                        }else {
-                                            self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(subResultPath)\"快照生成失败\n",
-                                                                                                     attributes:[.foregroundColor : NSColor.red]))
                                         }
-                                        
-                                        processThumbSemaphore.signal()
                                     }
-                                    processThumbSemaphore.wait()
+                                    if (items.count != 0) {
+                                        return
+                                    }
+                                    
+                                    if subCount != 0 {
+                                        subDegree = subDegree/Double(subCount)
+                                    }else {
+                                        subDegree = 0.0
+                                    }
+                                    
+                                    TestDegreeManager.shared().set(subDegree,
+                                                                   fileType: self.fileType(),
+                                                                   type: self.type(),
+                                                                   fileName: fileName)
+                                    tDegree += subDegree;
+                                    tCount += 1
                                 }
-                            }
-                            
-                            if subCount != 0 {
-                                subDegree = subDegree/Double(subCount)
                             }else {
-                                subDegree = 0.0
+                                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]))
+                                }
+                                
                             }
                             
-                            TestDegreeManager.shared().set(subDegree,
-                                                           fileType: self.fileType(),
-                                                           type: self.type(),
-                                                           fileName: fileName)
-                            tDegree += subDegree;
-                            tCount += 1
-                        }
-                    }else {
-                        if (status == 0) {
-                            reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档失败!\n",
-                                                                                attributes:[.foregroundColor : NSColor.red]))
-                        }else if (status == -1 || status == -2) {
-                            reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"文档无法打开!\n",
-                                                                                attributes:[.foregroundColor : NSColor.red]))
-                        }else if (status == -3) {
-                            reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档中 Crash!\n",
-                                                                                attributes:[.foregroundColor : NSColor.red]))
+                            DispatchQueue.global().async {
+                                autoreleasepool {
+                                    // 执行下一个文件转档
+                                    convertFileBlock(files, fileIndex + 1)
+                                }
+                            }
                         }
                     }
                 }
+                // 启动第0号任务
+                convertFileBlock(files, 0);
             }
             
-            TestDegreeManager.shared().set(((tCount != 0) ? tDegree/Double(tCount) : 0.0),
-                                           fileType: _fileType,
-                                           type: _type)
-    
-            _status = .Finished
+            
         }else {
             _status = .Normal
+            
+            DispatchQueue.main.async {
+                complention(self, nil)
+            }
         }
     }
     
-    func process(_ originPath:String, resultPath:String) -> Int {
-        return process(originPath, resultPath: resultPath, params: self.params())
+    func process(_ originPath:String, resultPath:String, complention:@escaping (_ status:Int) -> ()) {
+        return process(originPath, resultPath: resultPath, params: self.params(), complention: complention)
     }
     
-    func process(_ originPath:String, resultPath:String, params:NSDictionary) -> Int {
-        // ...
-        // 执行转换过程
-        let convertSemaphore = DispatchSemaphore(value: 0)
-        var status = Int(1)
-        let convertQueue = DispatchQueue.global()
-        operateQueue.addOperation {
-            autoreleasepool {
-                status = FileConverter.shared().converter(originPath, inDesPath: resultPath, params: params)
-                
-                // 修复转 PNG 实际图片为 JPG 问题, 导致无法匹配问题
-                if (NSArray(array: ["png", "PNG"]).contains(NSString(string: resultPath).pathExtension)) {
-                    let items = (FileManager.default.subpaths(atPath: resultPath) ?? []) as [String]
-                    for item in items {
-                        if NSArray(array: ["jpg", "JPG"]).contains(NSString(string:item).pathExtension) {
-                            let path = NSString(string: resultPath).appendingPathComponent(item);
-                            
-                            try? FileManager.default.moveItem(atPath: path,
-                                                              toPath: NSString(string: path).deletingPathExtension+".png");
-                        }
+    func process(_ originPath:String, resultPath:String, params:NSDictionary, complention:@escaping (_ status:Int) -> ()) {
+        FileConverter.shared().converter(originPath, inDesPath: resultPath, params: params) { status in
+            // 修复转 PNG 实际图片为 JPG 问题, 导致无法匹配问题
+            if (NSArray(array: ["png", "PNG"]).contains(NSString(string: resultPath).pathExtension)) {
+                let items = (FileManager.default.subpaths(atPath: resultPath) ?? []) as [String]
+                for item in items {
+                    if NSArray(array: ["jpg", "JPG"]).contains(NSString(string:item).pathExtension) {
+                        let path = NSString(string: resultPath).appendingPathComponent(item);
+                        
+                        try? FileManager.default.moveItem(atPath: path,
+                                                          toPath: NSString(string: path).deletingPathExtension+".png");
                     }
                 }
-                
-                convertSemaphore.signal()
             }
+            
+            complention(status)
         }
-        convertSemaphore.wait()
-        
-        return status
     }
     
     func testReport() -> NSAttributedString? {
@@ -381,14 +417,14 @@ class AutoTest : NSObject, AutoTestProtocal {
         return TestDegreeManager.shared().degreeFor(self.fileType(), type: self.type())
     }
     
-//    func testReportOfFile(_ fileName:String) -> NSAttributedString? {
-//        
-//    }
+    //    func testReportOfFile(_ fileName:String) -> NSAttributedString? {
+    //
+    //    }
     
     func degreeOfFile(_ fileName:String) -> Double {
         return TestDegreeManager.shared().degreeFor(self.fileType(), type: self.type(), fileName: fileName)
     }
-
+    
     func degreeOfFile(_ fileName:String, refFilePath:String?) -> Double {
         if refFilePath != nil {
             return TestDegreeManager.shared().degreeFor(self.fileType(), type: self.type(), fileName: fileName, refFilePath: refFilePath)
@@ -402,14 +438,14 @@ class AutoTest : NSObject, AutoTestProtocal {
     func canUpdateRefImage() -> Bool {
         let files = DataModel.shared.originFilesFor(_fileType, type: _type) as [String]
         let checkDirectory = self.checkFileDirectory()
-//        let originDirectory = self.originFileDirectory()
+        //        let originDirectory = self.originFileDirectory()
         let resultDirectory = self.resultFileDirectory()
         
         for fileName in files {
             let fName = NSString(string: fileName).deletingPathExtension
-//            let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
+            //            let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
             let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+_extention)
-//            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
+            //            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
             
             
             var isDirectory = ObjCBool(false)
@@ -462,13 +498,13 @@ class AutoTest : NSObject, AutoTestProtocal {
     
     func canUpdateRefImage(_ fileName:String) -> Bool {
         let checkDirectory = self.checkFileDirectory()
-//        let originDirectory = self.originFileDirectory()
+        //        let originDirectory = self.originFileDirectory()
         let resultDirectory = self.resultFileDirectory()
         
         let fName = NSString(string: fileName).deletingPathExtension
-//        let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
+        //        let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
         let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+_extention)
-//        let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
+        //        let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
         
         
         var isDirectory = ObjCBool(false)
@@ -512,13 +548,13 @@ class AutoTest : NSObject, AutoTestProtocal {
     
     func updateRefImage(_ fileName:String) {
         let checkDirectory = self.checkFileDirectory()
-//        let originDirectory = self.originFileDirectory()
+        //        let originDirectory = self.originFileDirectory()
         let resultDirectory = self.resultFileDirectory()
         
         let fName = NSString(string: fileName).deletingPathExtension
-//        let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
+        //        let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
         let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+_extention)
-//        let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
+        //        let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
         
         
         var isDirectory = ObjCBool(false)
@@ -558,7 +594,7 @@ class AutoTest : NSObject, AutoTestProtocal {
     func compareFiles() -> NSArray? {
         let items = NSMutableArray()
         let files = DataModel.shared.originFilesFor(_fileType, type: _type) as [String]
-       
+        
         for fileName in files {
             let sItems = compareFiles(fileName)
             if sItems != nil && sItems!.count != 0 {
@@ -573,13 +609,13 @@ class AutoTest : NSObject, AutoTestProtocal {
         let files = NSMutableArray()
         
         let checkDirectory = self.checkFileDirectory()
-//        let originDirectory = self.originFileDirectory()
+        //        let originDirectory = self.originFileDirectory()
         let resultDirectory = self.resultFileDirectory()
         
         let fName = NSString(string: fileName).deletingPathExtension
-//        let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
+        //        let originPath = NSString(string: originDirectory).appendingPathComponent(fName+".pdf")
         let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+_extention)
-//        let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
+        //        let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
         
         
         var isDirectory = ObjCBool(false)
@@ -738,3 +774,4 @@ extension AutoTest {
                 NSString(string: _extention).isEqual(to: object._extention))
     }
 }
+

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

@@ -25,6 +25,7 @@ protocol AutoTestProtocal : NSObjectProtocol {
     func fileType() -> String // PPT/RTF/EXCEL/Word/....
     func type() -> String
     func name() -> String
+    func extention() -> String
     func params() -> NSDictionary
     
     func keys() -> NSArray
@@ -34,7 +35,7 @@ protocol AutoTestProtocal : NSObjectProtocol {
     // 是否勾选了快照测试
     func needCompareTest() -> Bool
     
-    func autoTest()
+//    func autoTest()
     func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ())
     
     func testReport() -> NSAttributedString?

+ 3 - 1
KdanAutoTest/KdanAuto/Class/AutoTestCase/FontAutoTest.swift

@@ -27,13 +27,15 @@ class FontAutoTest : AutoTest {
     
     
     // Auto Test refrence Check File
-    override func autoTest() {
+    override func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ()) {
         clearCacheFiles()
         
         _status = .Process
         
         
         _status = .Finished
+        
+        complention(self, reportString)
     }
     
 }

+ 3 - 4
KdanAutoTest/KdanAuto/Class/AutoTestCase/PDFCompareTest.swift

@@ -19,16 +19,15 @@ class PDFCompareTest : AutoTest {
         
     }
    
-    override func process(_ originPath:String, resultPath:String) -> Int {
-        
-        return 1
+    override func process(_ originPath:String, resultPath:String, complention:@escaping (_ status:Int) -> ()) {
+        complention(1)
     }
     
     override func compareFiles(_ fileName: String) -> NSArray? {
         let files = NSMutableArray()
         
         let checkDirectory = self.checkFileDirectory()
-        let originDirectory = self.originFileDirectory()
+//        let originDirectory = self.originFileDirectory()
         let resultDirectory = self.resultFileDirectory()
         
         let fName = NSString(string: fileName).deletingPathExtension

+ 223 - 212
KdanAutoTest/KdanAuto/Class/AutoTestCase/StringAutoTest.swift

@@ -29,7 +29,7 @@ class CharacterAutoTest : AutoTest {
     
     
     // Auto Test refrence Check File
-    override func autoTest() {
+    override func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ()) {
         clearCacheFiles()
         
         let checkString = self.selectedKeys().contains("字符")
@@ -37,6 +37,7 @@ class CharacterAutoTest : AutoTest {
         
         if !needCompare && !checkString {
             _status = .Finished
+            complention(self, self.reportString)
             return
         }
         
@@ -57,247 +58,257 @@ class CharacterAutoTest : AutoTest {
         var tDegree = Double(0);
         var tCount = Int(0)
         
-        for fileName in files {
+        var convertFileBlock = { (files:[String], fileIndex:Int) in }
+        convertFileBlock = { (files:[String], fileIndex:Int) 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 {
+                    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+"."+_extention)
-            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
+            let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+self.extention())
+            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+self.extention())
             
             
-            reportString?.append(NSMutableAttributedString.init(string: "\n【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
-                                                               attributes:[.foregroundColor : NSColor.black]))
+            self.reportString?.append(NSMutableAttributedString.init(string: "\n【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
+                                                                attributes:[.foregroundColor : NSColor.black]))
             // ...
             // 执行转换过程
-            var status = process(originPath, resultPath: resultPath)
-            
-            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)
-                    
-                    
+            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))
+                        //识别字符串 \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
+                        
+                        //识别所有 【空格 ~ \】 之间的值,并进行缝合
+                        // 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 = 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)
+                        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
+                        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
                         
-                        if subc.isEqual(to: subr) { // (A0 = B0)
-                                                    // Check Success
-                            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)) {
-                            appendErrorInfo(skipString, failString: failString)
-                            skipString = NSString()
-                            failString = NSString()
-                            
-                            let cRange = checkString.range(of: subr as String)
-                            let rRange = resultStr.range(of: subc as String)
+                        //                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 (cRange.location < rRange.location) {
-                                let cacheString = checkString.substring(to:cRange.location + cRange.length)
-                                reportString?.append(NSMutableAttributedString.init(string: "对照字符串【\(cacheString)】未识别到\n",
-                                                                                    attributes:[.foregroundColor : NSColor.red]))
-                                checkString = checkString.substring(from:cRange.location) 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
+                                }
+                                
+                            }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 {
-                                let cacheString = resultStr.substring(to:rRange.location)
-                                reportString?.append(NSMutableAttributedString.init(string: "字符串【\(cacheString)】识别出错\n",
-                                                                                    attributes:[.foregroundColor : NSColor.red]))
-                                resultStr = resultStr.substring(from:rRange.location + rRange.length) as NSString
+                                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
                             }
-                            
-                        }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
-                            
-                            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]))
+                        
                     }
-                    
-                    skipString = skipString.appending(checkString as String) as NSString
-                    failString = failString.appending(resultStr as String) as NSString
-                    
-                    
-                    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
-                    }
-                    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 {
-                    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 {
-                        processSuccess = ProcessThumbnal.process(resultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048))
+                    // 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")
                         
-                        if (processSuccess &&
-                            FileManager.default.fileExists(atPath: rComparePath)) {
+                        let processThumbSemaphore = DispatchSemaphore(value: 0)
+                        var processSuccess = false
+                        let thumbnailQueue = DispatchQueue.global()
+                        thumbnailQueue.async {
+                            processSuccess = ProcessThumbnal.process(resultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048))
                             
-                            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");
+                            if (processSuccess &&
+                                FileManager.default.fileExists(atPath: rComparePath)) {
                                 
-                                tDegree += degree
-                                tCount += 1
+                                let degree = ImageProcess.compareJPEG(rComparePath, checkPath: cComparePath, processCover: true)
                                 
-                                self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照对比完成,图像相似度 \(degree)%\n",
-                                                                                         attributes:[.foregroundColor : color]))
+                                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
+                                    
+                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照对比完成,图像相似度 \(degree)%\n",
+                                                                                             attributes:[.foregroundColor : color]))
+                                }
+                            }else {
+                                self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照生成失败\n",
+                                                                                         attributes:[.foregroundColor : NSColor.red]))
                             }
-                        }else {
-                            self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照生成失败\n",
-                                                                                     attributes:[.foregroundColor : NSColor.red]))
+                            processThumbSemaphore.signal()
                         }
-                        processThumbSemaphore.signal()
+                        processThumbSemaphore.wait()
+                    }
+                }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]))
                     }
-                    processThumbSemaphore.wait()
-                }
-            }else {
-                if (status == 0) {
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档失败!\n",
-                                                                        attributes:[.foregroundColor : NSColor.red]))
-                }else if (status == -1 || status == -2) {
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"文档无法打开!\n",
-                                                                        attributes:[.foregroundColor : NSColor.red]))
-                }else if (status == -3) {
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档中 Crash!\n",
-                                                                        attributes:[.foregroundColor : NSColor.red]))
                 }
+                
+                convertFileBlock(files, fileIndex + 1);
             }
-            
         }
-        
-        TestDegreeManager.shared().set(((tCount != 0) ? tDegree/Double(tCount) : 0.0),
-                                       fileType: _fileType,
-                                       type: _type)
-        
-        NSLog("\(reportString)")
-        
-        
-        _status = .Finished
+        convertFileBlock(files, 0);
     }
     
+    ///Compare
+    
+    /// Tools
     func appendErrorInfo(_ skipString:NSString, failString: NSString) {
         if skipString.length > 0  && failString.length > 0 {
             reportString?.append(NSMutableAttributedString.init(string: "对比字符串【\(skipString)】错识别为【\(failString)】\n",

+ 231 - 219
KdanAutoTest/KdanAuto/Class/AutoTestCase/TextColorAutoTest.swift

@@ -29,7 +29,7 @@ class TextColorAutoTest : AutoTest {
     
     
     // Auto Test refrence Check File
-    override func autoTest() {
+    override func autoTest(_ complention:@escaping (_ object:AutoTest, _ report:NSAttributedString?) -> ()) {
         clearCacheFiles()
         
         let checkRGB = self.selectedKeys().contains("RGB")
@@ -38,6 +38,7 @@ class TextColorAutoTest : AutoTest {
         
         if !checkRGB && !checkAlpha && !needCompare {
             _status = .Finished
+            complention(self, self.reportString)
             return
         }
         
@@ -55,6 +56,7 @@ class TextColorAutoTest : AutoTest {
                 
                 if (!needCompare) {
                     _status = .Finished
+                    complention(self, self.reportString)
                     return
                 }
             }
@@ -77,262 +79,272 @@ class TextColorAutoTest : AutoTest {
         var tDegree = Double(0);
         var tCount = Int(0)
         
-        for fileName in files {
+        var convertFileBlock = { (files:[String], fileIndex:Int) in }
+        convertFileBlock = { (files:[String], fileIndex:Int) 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 {
+                    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+"."+_extention)
-//            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
+            let resultPath = NSString(string: resultDirectory).appendingPathComponent(fName+"."+self.extention())
+            //            let checkPath = NSString(string: checkDirectory).appendingPathComponent(fName+"."+_extention)
             
             
             
-            reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
-                                                          attributes:[.foregroundColor : NSColor.blue]))
+            self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】开始转换文件 \"\(fName)\"\n",
+                                                                attributes:[.foregroundColor : NSColor.blue]))
             // ...
             // 执行转换过程
-            var status = process(originPath, resultPath: resultPath)
-            
-            
-            var maxCount = 0;
-            var succCount = 0;
-            
-            if FileManager.default.fileExists(atPath: resultPath) && status == 1 {
-                // 转换成功
-                if (checkRGB) {
+            self.process(originPath, resultPath: resultPath) { status in
+                var maxCount = 0;
+                var succCount = 0;
+                
+                if FileManager.default.fileExists(atPath: resultPath) && status == 1 {
+                    // 转换成功
+                    if (checkRGB) {
 #if true // 新文档框排形式
-                    
-                    /// 转换结果信息
-                    //            let resultData = NSData.init(contentsOfFile: resultPath) as! Data
-                    //            var rDocumentAttributes:NSDictionary!
-                    //            let resultAttString = NSAttributedString.init(rtf: resultData, documentAttributes: &rDocumentAttributes)
-                    //            let resultStr = NSString.init(data: resultData, encoding: 0)
-                    let resultString = try? NSString.init(contentsOfFile: resultPath, encoding: 0)
-                    
-                    // 识别颜色
-                    // \colortbl ... }
-                    let colorSRange = resultString!.range(of: "\\colortbl")
-                    var colorString = resultString!.substring(from: Int(colorSRange.location + colorSRange.length)) as NSString
-                    let colorERange = colorString.range(of: "}")
-                    colorString = colorString.substring(to: Int(colorERange.location)) as NSString
-                    
-                    let colorItems = colorString.components(separatedBy: ";") as [String]
-                    var colors = NSMutableArray() //存储的颜色数组
-                    
-                    for ci in colorItems {
-                        var colorItem = ci as! NSString
-                        if colorItem.length > 0 {
-                            colorItem = colorItem.replacingOccurrences(of: "\\red", with: "(") as NSString
-                            colorItem = colorItem.replacingOccurrences(of: "\\green", with: ",") as NSString
-                            colorItem = colorItem.replacingOccurrences(of: "\\blue", with: ",") as NSString
-                            colorItem = colorItem.replacingOccurrences(of: "\\alpha", with: ",") as NSString
-                            
-                            colors.add(self.colorStringWithString(String(colorItem), withAlpha: false))
-                        }
-                    }
-                    
-                    //识别字符串 \shptxt\shptxt ... }
-                    let pageInfoStrings = resultString!.components(separatedBy: "\\shptxt\\shptxt")
-                    var finalString = ""
-                    for pageInfoString in pageInfoStrings {
-                        let endRange = NSString(string: pageInfoString).range(of: "}")
-                        finalString = finalString.appending(NSString(string: pageInfoString).substring(to: endRange.location))
-                    }
-                    
-                    let oItems = finalString.components(separatedBy: ")") // 用 ) 区分字符段落
-                    
-                    // 识别
-                    for oi in oItems {
-                        var oItem = oi as NSString
-                        if oItem.contains("[") {
-                            oItem = oItem.replacingOccurrences(of: "Color ", with: "Color") as NSString
-                            
-                            // 识别所有颜色值, 即带 \\s 标准整形值
-                            // Detect all color values, those with \\cf tags
-                            var cColors = NSMutableArray()
-                            var tItem = oItem as NSString
-                            while (tItem.contains("\\cf")) {
-                                let range = tItem.range(of: "\\cf") as NSRange
-                                tItem = tItem.substring(from: Int(range.location + range.length)) as NSString
+                        
+                        /// 转换结果信息
+                        //            let resultData = NSData.init(contentsOfFile: resultPath) as! Data
+                        //            var rDocumentAttributes:NSDictionary!
+                        //            let resultAttString = NSAttributedString.init(rtf: resultData, documentAttributes: &rDocumentAttributes)
+                        //            let resultStr = NSString.init(data: resultData, encoding: 0)
+                        let resultString = try? NSString.init(contentsOfFile: resultPath, encoding: 0)
+                        
+                        // 识别颜色
+                        // \colortbl ... }
+                        let colorSRange = resultString!.range(of: "\\colortbl")
+                        var colorString = resultString!.substring(from: Int(colorSRange.location + colorSRange.length)) as NSString
+                        let colorERange = colorString.range(of: "}")
+                        colorString = colorString.substring(to: Int(colorERange.location)) as NSString
+                        
+                        let colorItems = colorString.components(separatedBy: ";") as [String]
+                        var colors = NSMutableArray() //存储的颜色数组
+                        
+                        for ci in colorItems {
+                            var colorItem = ci as! NSString
+                            if colorItem.length > 0 {
+                                colorItem = colorItem.replacingOccurrences(of: "\\red", with: "(") as NSString
+                                colorItem = colorItem.replacingOccurrences(of: "\\green", with: ",") as NSString
+                                colorItem = colorItem.replacingOccurrences(of: "\\blue", with: ",") as NSString
+                                colorItem = colorItem.replacingOccurrences(of: "\\alpha", with: ",") as NSString
                                 
-                                let colorValue = tItem.intValue
+                                colors.add(self.colorStringWithString(String(colorItem), withAlpha: false))
+                            }
+                        }
+                        
+                        //识别字符串 \shptxt\shptxt ... }
+                        let pageInfoStrings = resultString!.components(separatedBy: "\\shptxt\\shptxt")
+                        var finalString = ""
+                        for pageInfoString in pageInfoStrings {
+                            let endRange = NSString(string: pageInfoString).range(of: "}")
+                            finalString = finalString.appending(NSString(string: pageInfoString).substring(to: endRange.location))
+                        }
+                        
+                        let oItems = finalString.components(separatedBy: ")") // 用 ) 区分字符段落
+                        
+                        // 识别
+                        for oi in oItems {
+                            var oItem = oi as NSString
+                            if oItem.contains("[") {
+                                oItem = oItem.replacingOccurrences(of: "Color ", with: "Color") as NSString
                                 
-                                if !cColors.contains("\(colorValue)") {
-                                    cColors.add("\(colorValue)")
+                                // 识别所有颜色值, 即带 \\s 标准整形值
+                                // Detect all color values, those with \\cf tags
+                                var cColors = NSMutableArray()
+                                var tItem = oItem as NSString
+                                while (tItem.contains("\\cf")) {
+                                    let range = tItem.range(of: "\\cf") as NSRange
+                                    tItem = tItem.substring(from: Int(range.location + range.length)) as NSString
+                                    
+                                    let colorValue = tItem.intValue
+                                    
+                                    if !cColors.contains("\(colorValue)") {
+                                        cColors.add("\(colorValue)")
+                                    }
                                 }
-                            }
-                            
-                            //识别所有 【空格 ~ \】 之间的值,并进行缝合
-                            // Detect all strings between Spaces and \ and stitch
-                            let strings = oItem.components(separatedBy: " ")
-                            var resultStr = "" as NSString
-                            for str in strings {
-                                let markStr = str as NSString
                                 
-                                if (markStr.contains("\\")) {
-                                    let endRange = markStr.range(of: "\\")
-                                    resultStr = resultStr.appending(markStr.substring(to: endRange.location)) as NSString
-                                }else {
-                                    resultStr = resultStr.appending(markStr as String) as NSString
+                                //识别所有 【空格 ~ \】 之间的值,并进行缝合
+                                // Detect all strings between Spaces and \ and stitch
+                                let strings = oItem.components(separatedBy: " ")
+                                var resultStr = "" as NSString
+                                for str in strings {
+                                    let markStr = str as NSString
+                                    
+                                    if (markStr.contains("\\")) {
+                                        let endRange = markStr.range(of: "\\")
+                                        resultStr = resultStr.appending(markStr.substring(to: endRange.location)) as NSString
+                                    }else {
+                                        resultStr = resultStr.appending(markStr as String) as NSString
+                                    }
                                 }
-                            }
-                            
-                            // 识别 Mark 值
-                            let markRange = resultStr.range(of: "[")
-                            let markValue = NSString(string: resultStr.substring(from: Int(markRange.location + markRange.length))).intValue
-                            let colorRange = resultStr.range(of: "ColorCheck")
-                            let checkColor = self.colorStringWithString(resultStr.substring(from: Int(colorRange.location + colorRange.length)), withAlpha: false)
-                            maxCount = maxCount + 1
-                            
-                            //颜色值对比
-                            if cColors.count != 1 || nil == checkColor {
-                                reportString?.append(NSAttributedString.init(string: "【\(markValue)】识别颜色出错, 文本识别颜色:\(checkColor) 对照文档颜色:\(cColors)\n",
-                                                                             attributes:[.foregroundColor : NSColor.red]))
                                 
-                                NSLog("\(resultStr):\(cColors)")
-                            }else {
-                                let colorValue = cColors[0] as! String
-                                let detectColor = colors[Int(NSString(string: colorValue).intValue)] as! NSString
-                                if detectColor.isEqual(to: checkColor) {
-                                    succCount = succCount+1
-                                }else {
-                                    reportString?.append(NSAttributedString.init(string: "【\(markValue)】识别颜色出错, 文本识别颜色:\(checkColor ?? "") 对照文档颜色:\(detectColor)\n",
+                                // 识别 Mark 值
+                                let markRange = resultStr.range(of: "[")
+                                let markValue = NSString(string: resultStr.substring(from: Int(markRange.location + markRange.length))).intValue
+                                let colorRange = resultStr.range(of: "ColorCheck")
+                                let checkColor = self.colorStringWithString(resultStr.substring(from: Int(colorRange.location + colorRange.length)), withAlpha: false)
+                                maxCount = maxCount + 1
+                                
+                                //颜色值对比
+                                if cColors.count != 1 || nil == checkColor {
+                                    self.reportString?.append(NSAttributedString.init(string: "【\(markValue)】识别颜色出错, 文本识别颜色:\(checkColor) 对照文档颜色:\(cColors)\n",
                                                                                  attributes:[.foregroundColor : NSColor.red]))
                                     
                                     NSLog("\(resultStr):\(cColors)")
-                                    
+                                }else {
+                                    let colorValue = cColors[0] as! String
+                                    let detectColor = colors[Int(NSString(string: colorValue).intValue)] as! NSString
+                                    if detectColor.isEqual(to: checkColor) {
+                                        succCount = succCount+1
+                                    }else {
+                                        self.reportString?.append(NSAttributedString.init(string: "【\(markValue)】识别颜色出错, 文本识别颜色:\(checkColor ?? "") 对照文档颜色:\(detectColor)\n",
+                                                                                     attributes:[.foregroundColor : NSColor.red]))
+                                        
+                                        NSLog("\(resultStr):\(cColors)")
+                                        
+                                    }
                                 }
                             }
                         }
-                    }
-                    
+                        
 #else   // 原富文本形式
         /// 检测信息
-                    let resultData = NSData.init(contentsOfFile: resultPath)! as Data
-                    var rDocumentAttributes:NSDictionary!
-                    let resultAttString = NSAttributedString.init(rtf: resultData, documentAttributes: &rDocumentAttributes)
-                    
-                    let string = resultAttString?.string
-                    
-                    
-                    var maxCount = 0 as Int
-                    var succCount = 0 as Int
-                    let semaphore = DispatchSemaphore.init(value: 1)
-                    let items = resultAttString!.string.components(separatedBy: "\n")
-                    
-                    for item in items {
-                        let cItem = item as String
-                        if NSString(string: cItem).contains("Color Check(") {
-                            
-                            maxCount = maxCount+1
-                            
-                            var itemRange = NSString(string: string!).range(of: cItem)
-                            let subAttrString = (resultAttString?.attributedSubstring(from: itemRange))! as NSAttributedString
-                            
-                            let keys = resultAttString?.attributeKeys
-                            let attributes = resultAttString?.attributes(at: 1, effectiveRange: &itemRange)
-                            
-                            NSLog("\(attributes)")
-                            
-                            let currentString = cItem as! NSString
-                            
-                            let cColor = subAttrString.at
-                            let cColorString = self.colorStringWithColor(cColor, withAlpha: false) as! NSString
-                            
-                            let dRange = currentString.range(of: "Color Check(") as NSRange
-                            let mRange = currentString.range(of: "[") as NSRange
-                            let markString = currentString.substring(from: Int(mRange.location+mRange.length)) as! NSString
-                            let mark = markString.intValue
-                            let dColorString = self.colorStringWithString(currentString.substring(from: Int(dRange.location + dRange.length)), withAlpha: false)! as  NSString
-                            
-                            if dColorString.isEqual(to: cColorString) {
-                                succCount = succCount+1
-                            }else {
-                                reportString?.append(NSAttributedString.init(string: "【\(mark)】识别颜色出错, 文本识别颜色:\(dColorString) RTF文档颜色:\(cColorString)\n",
-                                                                             attributes:[.foregroundColor : NSColor.red]))
+                        let resultData = NSData.init(contentsOfFile: resultPath)! as Data
+                        var rDocumentAttributes:NSDictionary!
+                        let resultAttString = NSAttributedString.init(rtf: resultData, documentAttributes: &rDocumentAttributes)
+                        
+                        let string = resultAttString?.string
+                        
+                        
+                        var maxCount = 0 as Int
+                        var succCount = 0 as Int
+                        let semaphore = DispatchSemaphore.init(value: 1)
+                        let items = resultAttString!.string.components(separatedBy: "\n")
+                        
+                        for item in items {
+                            let cItem = item as String
+                            if NSString(string: cItem).contains("Color Check(") {
+                                
+                                maxCount = maxCount+1
+                                
+                                var itemRange = NSString(string: string!).range(of: cItem)
+                                let subAttrString = (resultAttString?.attributedSubstring(from: itemRange))! as NSAttributedString
                                 
-                                NSLog("\(item):\(dColorString)")
+                                let keys = resultAttString?.attributeKeys
+                                let attributes = resultAttString?.attributes(at: 1, effectiveRange: &itemRange)
                                 
+                                NSLog("\(attributes)")
+                                
+                                let currentString = cItem as! NSString
+                                
+                                let cColor = subAttrString.at
+                                let cColorString = self.colorStringWithColor(cColor, withAlpha: false) as! NSString
+                                
+                                let dRange = currentString.range(of: "Color Check(") as NSRange
+                                let mRange = currentString.range(of: "[") as NSRange
+                                let markString = currentString.substring(from: Int(mRange.location+mRange.length)) as! NSString
+                                let mark = markString.intValue
+                                let dColorString = self.colorStringWithString(currentString.substring(from: Int(dRange.location + dRange.length)), withAlpha: false)! as  NSString
+                                
+                                if dColorString.isEqual(to: cColorString) {
+                                    succCount = succCount+1
+                                }else {
+                                    reportString?.append(NSAttributedString.init(string: "【\(mark)】识别颜色出错, 文本识别颜色:\(dColorString) RTF文档颜色:\(cColorString)\n",
+                                                                                 attributes:[.foregroundColor : NSColor.red]))
+                                    
+                                    NSLog("\(item):\(dColorString)")
+                                    
+                                }
                             }
                         }
-                    }
-                    
-                    semaphore.wait()
+                        
+                        semaphore.wait()
 #endif
+                        
+                        self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"颜色对比完成,准确率\(Float(succCount)/Float(maxCount) * 100)%(\(succCount)/\(maxCount))\n",
+                                                                            attributes:[.foregroundColor : NSColor.blue]))
+                    }
                     
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"颜色对比完成,准确率\(Float(succCount)/Float(maxCount) * 100)%(\(succCount)/\(maxCount))\n",
-                                                                        attributes:[.foregroundColor : NSColor.blue]))
-                }
-                
-                
-                if needCompare {
-                    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 {
-//                        processSuccess =
-                        if (ProcessThumbnal.process(resultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048)) &&
-                            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");
+                    if needCompare && status == 1 {
+                        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 {
+                            //                        processSuccess =
+                            if (ProcessThumbnal.process(resultPath, desPath: rComparePath, outputSize: CGSize.init(width: 2048, height: 2048)) &&
+                                FileManager.default.fileExists(atPath: rComparePath)) {
                                 
-                                tDegree += degree
-                                tCount += 1
+                                let degree = ImageProcess.compareJPEG(rComparePath, checkPath: cComparePath, processCover: true)
                                 
-                                self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照对比完成,图像相似度 \(degree)%\n",
-                                                                                    attributes:[.foregroundColor : color]))
+                                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
+                                    
+                                    self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照对比完成,图像相似度 \(degree)%\n",
+                                                                                             attributes:[.foregroundColor : color]))
+                                }
+                            }else {
+                                self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照生成失败\n",
+                                                                                         attributes:[.foregroundColor : NSColor.red]))
                             }
-                        }else {
-                            self.reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"快照生成失败\n",
-                                                                                attributes:[.foregroundColor : NSColor.red]))
+                            
+                            processThumbSemaphore.signal()
                         }
+                        processThumbSemaphore.wait()
                         
-                        processThumbSemaphore.signal()
                     }
-                    processThumbSemaphore.wait()
-                    
-                }
-            }else {
-                if (status == 0) {
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档失败!\n",
-                                                                        attributes:[.foregroundColor : NSColor.red]))
-                }else if (status == -1 || status == -2) {
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"文档无法打开!\n",
-                                                                        attributes:[.foregroundColor : NSColor.red]))
-                }else if (status == -3) {
-                    reportString?.append(NSMutableAttributedString.init(string: "【\(String(self.fileType())) - \(self.name())】文件 \"\(fName)\"转档中 Crash!\n",
-                                                                        attributes:[.foregroundColor : NSColor.red]))
+                }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]))
+                    }
                 }
+                
+                convertFileBlock(files, fileIndex + 1);
             }
         }
-        
-        TestDegreeManager.shared().set(((tCount != 0) ? tDegree/Double(tCount) : 0.0),
-                                       fileType: _fileType,
-                                       type: _type)
-        
-        _status = .Finished
+        convertFileBlock(files, 0);
     }
     
     // Change String(Red, Green, Blue) to Color

+ 2 - 5
KdanAutoTest/KdanAuto/Class/Setting/SettingViewController.swift

@@ -43,19 +43,16 @@ class SettingViewController : NSViewController, NSTextFieldDelegate, NSWindowDel
     }
     
     override func viewWillAppear() {
-        self.originPathTF.stringValue = DataModel.shared.directoryPath() ?? "";
+        self.originPathTF.stringValue = DataModel.shared.directoryPath() ;
     }
     
     // IBAction
     @IBAction func pathSelected(_ sender:NSButton) {
-        var openPanel = NSOpenPanel()
+        let openPanel = NSOpenPanel()
         
         openPanel.canChooseFiles = false
         openPanel.canChooseDirectories = true
         
-        var pt:PathType = .Origin
-        
-        
         if openPanel.runModal() == NSApplication.ModalResponse.OK {
             let path = openPanel.directoryURL?.relativePath
             

+ 6 - 7
KdanAutoTest/KdanAuto/Class/Tools/FileConveter/FileConverter.swift

@@ -163,13 +163,14 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
                 }
             }else if !useOldLib && NSArray(array: ["csv", "CSV"]).contains(self.pathExtension) {
                 autoreleasepool {
+                    let cachePath = NSString(string: self.desPath).deletingPathExtension+".zip"
                     self.pdfConverter = CPDFConverterCsv.init(url: url, password: nil)
                     if (nil == self.pdfConverter && nil != password) {
                         self.pdfConverter = CPDFConverterCsv.init(url: url, password: password as? String)
                     }
                     self.pdfConverter?.delegate = self
                     self.options = CPDFConvertCsvOptions()
-                    self.pdfConverter?.convert(toFilePath: self.desPath,
+                    self.pdfConverter?.convert(toFilePath: cachePath,
                                                pageIndexs: self.pages, options: self.options)
                 }
             }else if !useOldLib && NSArray(array: ["html", "HTML"]).contains(self.pathExtension) {
@@ -268,10 +269,10 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
     func converter(_ converter: CPDFConverter!, didEndConvert error: Error!) {
         didSuccess = nil == error ? 1 : 0
         
+        Thread.sleep(forTimeInterval: 0.1)
+        
         autoreleasepool {
-            sleep(2)
-            
-            if NSArray(array: ["jpg", "JPG", "png", "PNG", "HTML", "html"]).contains(self.pathExtension) {
+            if NSArray(array: ["jpg", "JPG", "png", "PNG", "HTML", "html", "csv", "CSV"]).contains(self.pathExtension) {
                 let cachePath = NSString(string: self.desPath).deletingPathExtension+".zip"
                 
                 let zip = ZipArchive.init()
@@ -282,8 +283,6 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
                 try? FileManager.default.removeItem(atPath: cachePath)
             }
             
-            sleep(1)
-            
             if self.pdfConverter?.isConverting == true {
                 self.pdfConverter?.cancel()
             }
@@ -304,7 +303,7 @@ class FileConverter : NSObject, CPDFConverterDelegate, CPDFConverterFPDelegate {
             didSuccess = nil == error ? 1 : 0
             self.fpConverter?.stopConvertsionIfNeed()
             
-            sleep(2)
+            Thread.sleep(forTimeInterval: 0.3)
             
             self.complention(didSuccess)
         }

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

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

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

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

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

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

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

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

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


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

@@ -0,0 +1,20 @@
+//
+//  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
+
+@end

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

@@ -0,0 +1,42 @@
+//
+//  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;
+
+@end

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

@@ -0,0 +1,37 @@
+//
+//  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;
+
+@end

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

@@ -0,0 +1,32 @@
+//
+//  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;
+
+@end

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

@@ -0,0 +1,42 @@
+//
+//  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;
+
+@end

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

@@ -0,0 +1,20 @@
+//
+//  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>
+
+/**
+ * This is the base class for all conversion parameters.
+ */
+@interface CPDFConvertOptions : NSObject
+
+@end

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

@@ -0,0 +1,20 @@
+//
+//  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
+
+@end

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

@@ -0,0 +1,20 @@
+//
+//  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
+
+@end

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

@@ -0,0 +1,20 @@
+//
+//  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
+
+@end

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

@@ -0,0 +1,20 @@
+//
+//  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>
+
+/**
+ * PDF to Word conversion parameter object(derived class of CPDFConvertOptions).
+ */
+@interface CPDFConvertWordOptions : CPDFConvertOptions
+
+@end

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

@@ -0,0 +1,93 @@
+//
+//  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) {
+    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.5.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.5.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.5.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
+
+// 将要开始转换
+- (void)FPPDFConverter:(id)converter didStartConversion:(NSError *)error;
+
+// 完成转换
+- (void)FPPDFConverter:(id)converter didEndConversion:(NSError *)error;
+
+// 该页进度 - OCR
+- (void)FPPDFConverter:(id)converter
+             pageIndex:(NSUInteger)pageIndexA
+              progress:(NSUInteger)progress;
+
+// 完成某一页得解析
+- (void)FPPDFConverter:(id)converter
+   convertPDFPageIndex:(NSUInteger)pdfPageIndexA
+    writeWordPageIndex:(NSUInteger)wordPageIndexA
+  finshedWordPageCount:(NSUInteger)wordPageCountA;
+
+// 某一页不能转换
+- (void)FPPDFConverter:(id)converter
+   convertPDFPageIndex:(NSUInteger)pdfPageIndexA
+        faildWithError:(NSError *)error;
+
+// 将要保存文档到磁盘
+- (void)FPPDFConverter:(id)converter willSaveDoc:(NSError *)error;
+
+// 扑捉到异常
+- (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

+ 29 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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.5.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.5.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.5.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.5.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.5.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.5.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/CPDFConverterFP.h>

+ 6 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.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.5.0).framework/Versions/A/Resources/Data/source/AnalysisPPT/Res/thumbnail.jpeg


+ 18 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/_rels/.rels


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


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


+ 10 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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.5.0).framework/Versions/A/Resources/Data/source/AnalysisWord/Res/word/document.xml


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


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


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


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


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


+ 46 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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>21F79</string>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>ComPDFKit_Conversion</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.compdfkit.conversion</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.5.0</string>
+	<key>CFBundleSupportedPlatforms</key>
+	<array>
+		<string>MacOSX</string>
+	</array>
+	<key>CFBundleVersion</key>
+	<string>150</string>
+	<key>DTCompiler</key>
+	<string>com.apple.compilers.llvm.clang.1_0</string>
+	<key>DTPlatformBuild</key>
+	<string>13F100</string>
+	<key>DTPlatformName</key>
+	<string>macosx</string>
+	<key>DTPlatformVersion</key>
+	<string>12.3</string>
+	<key>DTSDKBuild</key>
+	<string>21E226</string>
+	<key>DTSDKName</key>
+	<string>macosx12.3</string>
+	<key>DTXcode</key>
+	<string>1341</string>
+	<key>DTXcodeBuild</key>
+	<string>13F100</string>
+	<key>LSMinimumSystemVersion</key>
+	<string>10.10</string>
+</dict>
+</plist>

+ 16 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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.5.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.5.0).framework/Versions/A/Resources/PDF2Excel.bundle/thumbnail.jpeg


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


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


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


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


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


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


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


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


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


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


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


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


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


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


Разница между файлами не показана из-за своего большого размера
+ 433 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.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.5.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.5.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>

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

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<w:webSettings xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
+    <w:optimizeForBrowser/>
+</w:webSettings>

Разница между файлами не показана из-за своего большого размера
+ 14676 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDF2Word.bundle/word-line-height.plist


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


+ 107 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/FontBook_Replace.plist

@@ -0,0 +1,107 @@
+<?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>KaiTi</key>
+	<array>
+		<string>楷体</string>
+		<string>KaiTi</string>
+		<string>KaiTi_GB2312</string>
+		<string>楷体_GB2312</string>
+		<string>标楷体</string>
+		<string>標楷體</string>
+		<string>DFKai-SB</string>
+		<string>BiauKai</string>
+		<string>STKaiti</string>
+		<string>华文楷体</string>
+		<string>STXingkai</string>
+		<string>华文行楷</string>
+		<string>FZKaiti</string>
+		<string>方正楷体</string>
+		<string>方正楷体_GBK</string>
+		<string>FZKTK--GBK1-0</string>
+		<string>方正楷体简体</string>
+		<string>FZKTJW--GB1-0</string>
+		<string>方正行楷简体</string>
+		<string>FZXKJW--GB1-0</string>
+		<string>DFBiaoKaiShu</string>
+		<string>DFKaiChuIn</string>
+	</array>
+	<key>FangSong</key>
+	<array>
+		<string>FangSong</string>
+		<string>仿宋</string>
+		<string>FangSong_GB2312</string>
+		<string>仿宋_GB2312</string>
+		<string>STFangsong</string>
+		<string>华文仿宋</string>
+		<string>FZFangsong</string>
+		<string>方正仿宋</string>
+		<string>FZFSJW--GB1-0</string>
+		<string>方正仿宋简体</string>
+		<string>方正仿宋_GBK</string>
+		<string>FZFSK--GBK1-0</string>
+	</array>
+	<key>SimHei</key>
+	<array>
+		<string>黑体</string>
+		<string>SimHei</string>
+		<string>等线</string>
+		<string>DengXian</string>
+		<string>Microsoft YaHei</string>
+		<string>微软雅黑</string>
+		<string>Microsoft JhengHei</string>
+		<string>微软正黑体</string>
+		<string>微軟正黑體</string>
+		<string>华文细黑</string>
+		<string>STHeiti Light</string>
+		<string>STXihei</string>
+		<string>华文黑体</string>
+		<string>STHeiti</string>
+		<string>方正黑体</string>
+		<string>FZHeiti</string>
+		<string>LiHei Pro Medium</string>
+		<string>丽黑 Pro</string>
+		<string>儷黑 Pro</string>
+		<string>Apple LiGothic Medium</string>
+		<string>苹果丽中黑</string>
+		<string>蘋果儷中黑</string>
+		<string>方正大黑简体</string>
+		<string>FZDHTJW--GB1-0</string>
+		<string>方正黑体_GBK</string>
+		<string>FZHTK--GBK1-0</string>
+		<string>方正黑体简体</string>
+		<string>FZHTJW--GB1-0</string>
+		<string>方正超粗黑简体</string>
+		<string>FZCCHJW--GB1-0</string>
+		<string>DFYuan</string>
+	</array>
+	<key>SimSun</key>
+	<array>
+		<string>SimSun</string>
+		<string>宋体</string>
+		<string>NSimSun</string>
+		<string>新宋体</string>
+		<string>Apple LiSung Light</string>
+		<string>苹果丽细宋</string>
+		<string>蘋果儷細宋</string>
+		<string>华文宋体</string>
+		<string>STSong</string>
+		<string>丽宋 Pro</string>
+		<string>儷宋 Pro</string>
+		<string>LiSong Pro Light</string>
+		<string>STZhongsong</string>
+		<string>华文中宋</string>
+		<string>FZsong</string>
+		<string>方正宋体</string>
+		<string>FZDBSJW--GB1-0</string>
+		<string>方正大标宋简体</string>
+		<string>FZCSJW--GB1-0</string>
+		<string>方正粗宋简体</string>
+		<string>方正小标宋_GBK</string>
+		<string>FZXBSK--GBK1-0</string>
+		<string>方正粗黑宋简体</string>
+		<string>FZCHSJW--GB1-0</string>
+	</array>
+</dict>
+</plist>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/90ms-RKSJ-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/90pv-RKSJ-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/90pv-RKSJ-UCS2C


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-CNS1-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-GB1-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-Japan1-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/Adobe-Korea1-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/B5pc-UCS2


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/B5pc-UCS2C


Разница между файлами не показана из-за своего большого размера
+ 18846 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/CIDToUnicode/Adobe-CNS1.cidToUnicode


Разница между файлами не показана из-за своего большого размера
+ 29064 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/CIDToUnicode/Adobe-GB1.cidToUnicode


+ 0 - 0
KdanAutoTest/KdanAuto/Third Part Library/ComPDFKit_Conversion(1.5.0).framework/Versions/A/Resources/PDFParser.bundle/PDFEncodings/CIDToUnicode/CIDToUnicode/Adobe-Japan1.cidToUnicode


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