Browse Source

综合 - 修改工程配置

dinglingui 1 year ago
parent
commit
1abd272b7a
100 changed files with 4771 additions and 2892 deletions
  1. 0 462
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/project.pbxproj
  2. 0 7
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  3. 0 8
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  4. 0 78
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/xcshareddata/xcschemes/Annotation-Ctrl-Demo.xcscheme
  5. 0 14
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/xcuserdata/kdanmobile_2.xcuserdatad/xcschemes/xcschememanagement.plist
  6. 0 24
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/AppDelegate.h
  7. 0 112
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/AppDelegate.m
  8. 0 21
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/CPDFViewController.h
  9. 0 549
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/CPDFViewController.m
  10. 0 20
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/SceneDelegate.h
  11. 0 63
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/SceneDelegate.m
  12. 0 23
      Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/main.m
  13. 466 0
      Annotations/Annotations.xcodeproj/project.pbxproj
  14. 24 0
      Annotations/Annotations/AppDelegate.h
  15. 112 0
      Annotations/Annotations/AppDelegate.m
  16. 0 0
      Annotations/Annotations/Assets.xcassets/AccentColor.colorset/Contents.json
  17. 0 0
      Annotations/Annotations/Assets.xcassets/AppIcon.appiconset/Contents.json
  18. 0 0
      Annotations/Annotations/Assets.xcassets/AppIcon.appiconset/icon-1024.png
  19. 0 0
      Annotations/Annotations/Assets.xcassets/CPDFThunbnailImageEnter.imageset/Contents.json
  20. 0 0
      Annotations/Annotations/Assets.xcassets/CPDFThunbnailImageEnter.imageset/thumbnail.pdf
  21. 0 0
      Annotations/Annotations/Assets.xcassets/CPDFThunbnailImageEnter.imageset/thumbnaill.pdf
  22. 0 0
      Annotations/Annotations/Assets.xcassets/Contents.json
  23. 0 0
      Annotations/Annotations/Assets.xcassets/syasarrow.imageset/Contents.json
  24. 0 0
      Annotations/Annotations/Assets.xcassets/syasarrow.imageset/syasarrow.pdf
  25. 0 0
      Annotations/Annotations/Assets.xcassets/syasarrow.imageset/syasarrowl.pdf
  26. 0 0
      Annotations/Annotations/Base.lproj/LaunchScreen.storyboard
  27. 0 0
      Annotations/Annotations/Base.lproj/Main.storyboard
  28. 21 0
      Annotations/Annotations/CPDFViewController.h
  29. 549 0
      Annotations/Annotations/CPDFViewController.m
  30. 0 0
      Annotations/Annotations/Info.plist
  31. 20 0
      Annotations/Annotations/SceneDelegate.h
  32. 63 0
      Annotations/Annotations/SceneDelegate.m
  33. 23 0
      Annotations/Annotations/main.m
  34. 0 467
      ComPDFKit/ComPDFKit.xcodeproj/project.pbxproj
  35. 0 7
      ComPDFKit/ComPDFKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  36. 0 8
      ComPDFKit/ComPDFKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  37. 0 78
      ComPDFKit/ComPDFKit.xcodeproj/xcshareddata/xcschemes/ComPDFKit.xcscheme
  38. 0 110
      ComPDFKit/ComPDFKit/AppDelegate.m
  39. 0 21
      ComPDFKit/ComPDFKit/CPDFViewController.h
  40. 0 820
      ComPDFKit/ComPDFKit/CPDFViewController.m
  41. 2118 0
      ComPDFKit_Tools/ComPDFKit_Tools.xcodeproj/project.pbxproj
  42. 24 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CAnnotListHeaderInSection.h
  43. 117 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CAnnotListHeaderInSection.m
  44. 34 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationListCell.h
  45. 295 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationListCell.m
  46. 37 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationViewController.h
  47. 319 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationViewController.m
  48. 33 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotionColorDrawView.h
  49. 58 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotionColorDrawView.m
  50. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/Contents.json
  51. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/ic 1.pdf
  52. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/ic.pdf
  53. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationHighlight.imageset/Contents.json
  54. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationHighlight.imageset/ic.pdf
  55. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/Contents.json
  56. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/note 1.pdf
  57. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/note.pdf
  58. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/Contents.json
  59. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/nor 1.pdf
  60. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/nor.pdf
  61. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/Contents.json
  62. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/music 1.pdf
  63. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/music.pdf
  64. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/Contents.json
  65. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/arrow 1.pdf
  66. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/arrow.pdf
  67. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/Contents.json
  68. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/oval 1.pdf
  69. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/oval.pdf
  70. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/Contents.json
  71. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/line 1.pdf
  72. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/line.pdf
  73. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/Contents.json
  74. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/rec 1.pdf
  75. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/rec.pdf
  76. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/Contents.json
  77. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/nor 1.pdf
  78. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/nor.pdf
  79. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/Contents.json
  80. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/nor 1.pdf
  81. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/nor.pdf
  82. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/Contents.json
  83. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/ic 1.pdf
  84. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/ic.pdf
  85. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/Contents.json
  86. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/text 1.pdf
  87. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/text.pdf
  88. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/Contents.json
  89. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/ic 1.pdf
  90. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/ic.pdf
  91. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/Contents.json
  92. 61 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotationManage/CAnnotationManage.h
  93. 112 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotationManage/CAnnotationManage.m
  94. 27 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/CPDFAnnotationBaseViewController.h
  95. 211 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/CPDFAnnotationBaseViewController.m
  96. 47 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/CPDFAnnotationBaseViewController_Header.h
  97. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/Image.xcassets/CPDFAnnotationBaseImageBack.imageset/Close Button.pdf
  98. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/Image.xcassets/CPDFAnnotationBaseImageBack.imageset/Contents.json
  99. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/Image.xcassets/Contents.json
  100. 0 0
      ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFFreeText/CPDFFreeTextViewController.h

+ 0 - 462
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/project.pbxproj

@@ -1,462 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 55;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		4F06AB5D29F6852C007797E4 /* CPDFViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F06AB5C29F6852C007797E4 /* CPDFViewController.m */; };
-		C918CEB229F903CF00D43974 /* compdfkit_tools.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C918CEB129F903CF00D43974 /* compdfkit_tools.framework */; };
-		C918CEB329F903CF00D43974 /* compdfkit_tools.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C918CEB129F903CF00D43974 /* compdfkit_tools.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		C9AF185129F267DD00EC4979 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF185029F267DD00EC4979 /* AppDelegate.m */; };
-		C9AF185429F267DD00EC4979 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF185329F267DD00EC4979 /* SceneDelegate.m */; };
-		C9AF185A29F267DD00EC4979 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9AF185829F267DD00EC4979 /* Main.storyboard */; };
-		C9AF185C29F267E000EC4979 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9AF185B29F267E000EC4979 /* Assets.xcassets */; };
-		C9AF185F29F267E000EC4979 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9AF185D29F267E000EC4979 /* LaunchScreen.storyboard */; };
-		C9AF186229F267E000EC4979 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF186129F267E000EC4979 /* main.m */; };
-		C9AF187429F26AD200EC4979 /* SDKLicense.xml in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187129F26AD200EC4979 /* SDKLicense.xml */; };
-		C9AF187529F26AD200EC4979 /* XPDXMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF187229F26AD200EC4979 /* XPDXMLElement.m */; };
-		C9AF187629F26AD200EC4979 /* XMLParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF187329F26AD200EC4979 /* XMLParseManager.m */; };
-		C9AF187C29F26ADF00EC4979 /* Form_Widgets_Test.pdf in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187829F26ADF00EC4979 /* Form_Widgets_Test.pdf */; };
-		C9AF187D29F26ADF00EC4979 /* PDF32000_2008.pdf in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187929F26ADF00EC4979 /* PDF32000_2008.pdf */; };
-		C9AF187F29F26ADF00EC4979 /* Quick Start Guide.pdf in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187B29F26ADF00EC4979 /* Quick Start Guide.pdf */; };
-		F32776912A04A6D900C5F0A6 /* ComPDFKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */; };
-		F32776922A04A6D900C5F0A6 /* ComPDFKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		C9AF188429F26B4D00EC4979 /* Embed Frameworks */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-				C918CEB329F903CF00D43974 /* compdfkit_tools.framework in Embed Frameworks */,
-				F32776922A04A6D900C5F0A6 /* ComPDFKit.xcframework in Embed Frameworks */,
-			);
-			name = "Embed Frameworks";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		4F06AB5B29F6852C007797E4 /* CPDFViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFViewController.h; sourceTree = "<group>"; };
-		4F06AB5C29F6852C007797E4 /* CPDFViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFViewController.m; sourceTree = "<group>"; };
-		C918CEB129F903CF00D43974 /* compdfkit_tools.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = compdfkit_tools.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = ComPDFKit.xcframework; path = ../Lib/ComPDFKit.xcframework; sourceTree = "<group>"; };
-		C9AF184C29F267DD00EC4979 /* Annotation-Ctrl-Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Annotation-Ctrl-Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
-		C9AF184F29F267DD00EC4979 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
-		C9AF185029F267DD00EC4979 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
-		C9AF185229F267DD00EC4979 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
-		C9AF185329F267DD00EC4979 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
-		C9AF185929F267DD00EC4979 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
-		C9AF185B29F267E000EC4979 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
-		C9AF185E29F267E000EC4979 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		C9AF186029F267E000EC4979 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		C9AF186129F267E000EC4979 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-		C9AF186F29F26AD200EC4979 /* XPDXMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPDXMLElement.h; sourceTree = "<group>"; };
-		C9AF187029F26AD200EC4979 /* XMLParseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLParseManager.h; sourceTree = "<group>"; };
-		C9AF187129F26AD200EC4979 /* SDKLicense.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = SDKLicense.xml; sourceTree = "<group>"; };
-		C9AF187229F26AD200EC4979 /* XPDXMLElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPDXMLElement.m; sourceTree = "<group>"; };
-		C9AF187329F26AD200EC4979 /* XMLParseManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLParseManager.m; sourceTree = "<group>"; };
-		C9AF187829F26ADF00EC4979 /* Form_Widgets_Test.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Form_Widgets_Test.pdf; sourceTree = "<group>"; };
-		C9AF187929F26ADF00EC4979 /* PDF32000_2008.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = PDF32000_2008.pdf; sourceTree = "<group>"; };
-		C9AF187B29F26ADF00EC4979 /* Quick Start Guide.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "Quick Start Guide.pdf"; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		C9AF184929F267DD00EC4979 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				C918CEB229F903CF00D43974 /* compdfkit_tools.framework in Frameworks */,
-				F32776912A04A6D900C5F0A6 /* ComPDFKit.xcframework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		C918CEB029F903CF00D43974 /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */,
-				C918CEB129F903CF00D43974 /* compdfkit_tools.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		C9AF184329F267DD00EC4979 = {
-			isa = PBXGroup;
-			children = (
-				C9AF187729F26ADF00EC4979 /* TestFile */,
-				C9AF186E29F26AD200EC4979 /* SDKLicense */,
-				C9AF184E29F267DD00EC4979 /* Annotation-Ctrl-Demo */,
-				C9AF184D29F267DD00EC4979 /* Products */,
-				C918CEB029F903CF00D43974 /* Frameworks */,
-			);
-			sourceTree = "<group>";
-		};
-		C9AF184D29F267DD00EC4979 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				C9AF184C29F267DD00EC4979 /* Annotation-Ctrl-Demo.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		C9AF184E29F267DD00EC4979 /* Annotation-Ctrl-Demo */ = {
-			isa = PBXGroup;
-			children = (
-				C9AF184F29F267DD00EC4979 /* AppDelegate.h */,
-				C9AF185029F267DD00EC4979 /* AppDelegate.m */,
-				C9AF185229F267DD00EC4979 /* SceneDelegate.h */,
-				C9AF185329F267DD00EC4979 /* SceneDelegate.m */,
-				4F06AB5B29F6852C007797E4 /* CPDFViewController.h */,
-				4F06AB5C29F6852C007797E4 /* CPDFViewController.m */,
-				C9AF185829F267DD00EC4979 /* Main.storyboard */,
-				C9AF185B29F267E000EC4979 /* Assets.xcassets */,
-				C9AF185D29F267E000EC4979 /* LaunchScreen.storyboard */,
-				C9AF186029F267E000EC4979 /* Info.plist */,
-				C9AF186129F267E000EC4979 /* main.m */,
-			);
-			path = "Annotation-Ctrl-Demo";
-			sourceTree = "<group>";
-		};
-		C9AF186E29F26AD200EC4979 /* SDKLicense */ = {
-			isa = PBXGroup;
-			children = (
-				C9AF187129F26AD200EC4979 /* SDKLicense.xml */,
-				C9AF187029F26AD200EC4979 /* XMLParseManager.h */,
-				C9AF187329F26AD200EC4979 /* XMLParseManager.m */,
-				C9AF186F29F26AD200EC4979 /* XPDXMLElement.h */,
-				C9AF187229F26AD200EC4979 /* XPDXMLElement.m */,
-			);
-			name = SDKLicense;
-			path = ../SDKLicense;
-			sourceTree = "<group>";
-		};
-		C9AF187729F26ADF00EC4979 /* TestFile */ = {
-			isa = PBXGroup;
-			children = (
-				C9AF187829F26ADF00EC4979 /* Form_Widgets_Test.pdf */,
-				C9AF187929F26ADF00EC4979 /* PDF32000_2008.pdf */,
-				C9AF187B29F26ADF00EC4979 /* Quick Start Guide.pdf */,
-			);
-			name = TestFile;
-			path = ../TestFile;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		C9AF184B29F267DD00EC4979 /* Annotation-Ctrl-Demo */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = C9AF186529F267E000EC4979 /* Build configuration list for PBXNativeTarget "Annotation-Ctrl-Demo" */;
-			buildPhases = (
-				C9AF184829F267DD00EC4979 /* Sources */,
-				C9AF184929F267DD00EC4979 /* Frameworks */,
-				C9AF184A29F267DD00EC4979 /* Resources */,
-				C9AF188429F26B4D00EC4979 /* Embed Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "Annotation-Ctrl-Demo";
-			productName = "Annotation-Ctrl-Demo";
-			productReference = C9AF184C29F267DD00EC4979 /* Annotation-Ctrl-Demo.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		C9AF184429F267DD00EC4979 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				BuildIndependentTargetsInParallel = 1;
-				LastUpgradeCheck = 1420;
-				TargetAttributes = {
-					C9AF184B29F267DD00EC4979 = {
-						CreatedOnToolsVersion = 14.2;
-					};
-				};
-			};
-			buildConfigurationList = C9AF184729F267DD00EC4979 /* Build configuration list for PBXProject "Annotation-Ctrl-Demo" */;
-			compatibilityVersion = "Xcode 13.0";
-			developmentRegion = en;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				Base,
-			);
-			mainGroup = C9AF184329F267DD00EC4979;
-			productRefGroup = C9AF184D29F267DD00EC4979 /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				C9AF184B29F267DD00EC4979 /* Annotation-Ctrl-Demo */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		C9AF184A29F267DD00EC4979 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				C9AF187C29F26ADF00EC4979 /* Form_Widgets_Test.pdf in Resources */,
-				C9AF185F29F267E000EC4979 /* LaunchScreen.storyboard in Resources */,
-				C9AF185C29F267E000EC4979 /* Assets.xcassets in Resources */,
-				C9AF187429F26AD200EC4979 /* SDKLicense.xml in Resources */,
-				C9AF185A29F267DD00EC4979 /* Main.storyboard in Resources */,
-				C9AF187F29F26ADF00EC4979 /* Quick Start Guide.pdf in Resources */,
-				C9AF187D29F26ADF00EC4979 /* PDF32000_2008.pdf in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		C9AF184829F267DD00EC4979 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				C9AF187529F26AD200EC4979 /* XPDXMLElement.m in Sources */,
-				4F06AB5D29F6852C007797E4 /* CPDFViewController.m in Sources */,
-				C9AF185129F267DD00EC4979 /* AppDelegate.m in Sources */,
-				C9AF187629F26AD200EC4979 /* XMLParseManager.m in Sources */,
-				C9AF186229F267E000EC4979 /* main.m in Sources */,
-				C9AF185429F267DD00EC4979 /* SceneDelegate.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		C9AF185829F267DD00EC4979 /* Main.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				C9AF185929F267DD00EC4979 /* Base */,
-			);
-			name = Main.storyboard;
-			sourceTree = "<group>";
-		};
-		C9AF185D29F267E000EC4979 /* LaunchScreen.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				C9AF185E29F267E000EC4979 /* Base */,
-			);
-			name = LaunchScreen.storyboard;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		C9AF186329F267E000EC4979 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
-				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
-				MTL_FAST_MATH = YES;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = iphoneos;
-			};
-			name = Debug;
-		};
-		C9AF186429F267E000EC4979 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				MTL_FAST_MATH = YES;
-				SDKROOT = iphoneos;
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
-		C9AF186629F267E000EC4979 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
-				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
-				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = Q43DRF894U;
-				ENABLE_BITCODE = NO;
-				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
-				GENERATE_INFOPLIST_FILE = YES;
-				INFOPLIST_FILE = "Annotation-Ctrl-Demo/Info.plist";
-				INFOPLIST_KEY_NSCameraUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSMicrophoneUsageDescription = "Your consent is required before you could access the function.";
-				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Enable photo access so that you can create scans with your photos.";
-				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
-				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
-				INFOPLIST_KEY_UIMainStoryboardFile = Main;
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				MARKETING_VERSION = 1.0;
-				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.demo.annotation;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_EMIT_LOC_STRINGS = YES;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
-		C9AF186729F267E000EC4979 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
-				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
-				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = Q43DRF894U;
-				ENABLE_BITCODE = NO;
-				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
-				GENERATE_INFOPLIST_FILE = YES;
-				INFOPLIST_FILE = "Annotation-Ctrl-Demo/Info.plist";
-				INFOPLIST_KEY_NSCameraUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSMicrophoneUsageDescription = "Your consent is required before you could access the function.";
-				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Enable photo access so that you can create scans with your photos.";
-				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
-				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
-				INFOPLIST_KEY_UIMainStoryboardFile = Main;
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				MARKETING_VERSION = 1.0;
-				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.demo.annotation;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_EMIT_LOC_STRINGS = YES;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		C9AF184729F267DD00EC4979 /* Build configuration list for PBXProject "Annotation-Ctrl-Demo" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C9AF186329F267E000EC4979 /* Debug */,
-				C9AF186429F267E000EC4979 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		C9AF186529F267E000EC4979 /* Build configuration list for PBXNativeTarget "Annotation-Ctrl-Demo" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C9AF186629F267E000EC4979 /* Debug */,
-				C9AF186729F267E000EC4979 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = C9AF184429F267DD00EC4979 /* Project object */;
-}

+ 0 - 7
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "self:">
-   </FileRef>
-</Workspace>

+ 0 - 8
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -1,8 +0,0 @@
-<?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>IDEDidComputeMac32BitWarning</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 78
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/xcshareddata/xcschemes/Annotation-Ctrl-Demo.xcscheme

@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1420"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "C9AF184B29F267DD00EC4979"
-               BuildableName = "Annotation-Ctrl-Demo.app"
-               BlueprintName = "Annotation-Ctrl-Demo"
-               ReferencedContainer = "container:Annotation-Ctrl-Demo.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "C9AF184B29F267DD00EC4979"
-            BuildableName = "Annotation-Ctrl-Demo.app"
-            BlueprintName = "Annotation-Ctrl-Demo"
-            ReferencedContainer = "container:Annotation-Ctrl-Demo.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "C9AF184B29F267DD00EC4979"
-            BuildableName = "Annotation-Ctrl-Demo.app"
-            BlueprintName = "Annotation-Ctrl-Demo"
-            ReferencedContainer = "container:Annotation-Ctrl-Demo.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 0 - 14
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo.xcodeproj/xcuserdata/kdanmobile_2.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -1,14 +0,0 @@
-<?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>SchemeUserState</key>
-	<dict>
-		<key>Annotation-Ctrl-Demo.xcscheme_^#shared#^_</key>
-		<dict>
-			<key>orderHint</key>
-			<integer>1</integer>
-		</dict>
-	</dict>
-</dict>
-</plist>

+ 0 - 24
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/AppDelegate.h

@@ -1,24 +0,0 @@
-//
-//  AppDelegate.h
-//  Annotation-Ctrl-Demo
-//
-//  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 <UIKit/UIKit.h>
-
-@interface AppDelegate : UIResponder <UIApplicationDelegate>
-
-@property (nonatomic, readonly) UIWindow *window;
-
-+ (AppDelegate *)sharedAppDelegate;
-
-- (void)configWindow:(UIWindow *)window;
-
-@end
-

+ 0 - 112
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/AppDelegate.m

@@ -1,112 +0,0 @@
-//
-//  AppDelegate.m
-//  Annotation-Ctrl-Demo
-//
-//  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 "AppDelegate.h"
-
-#import <ComPDFKit/ComPDFKit.h>
-#import <compdfkit_tools/compdfkit_tools.h>
-
-#import "CPDFViewController.h"
-#import "XMLParseManager.h"
-
-static AppDelegate *appDelegate = NULL;
-
-@interface AppDelegate ()
-
-@property (nonatomic, strong) UIWindow *window;
-
-@property (nonatomic, strong) XMLParseManager *manager;
-
-@end
-
-
-@implementation AppDelegate
-
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-    // Override point for customization after application launch.
-    NSString *path = [[NSBundle mainBundle]pathForResource:@"SDKLicense" ofType:@"xml"];
-    NSURL *url = [NSURL fileURLWithPath:path];
-    _manager = [[XMLParseManager alloc]init];
-    [_manager parseXMLWithURL:url completion:^(BOOL SUC, XPDXMLElement *data,NSError *error) {
-        if (SUC) {
-            NSDictionary * attribute = data.attribute;
-            NSString * key = attribute[@"key"];
-            NSString * secret = attribute[@"secret"];
-            [CPDFKit setLicenseKey:key secret:secret];
-            
-            if (@available(iOS 13.0, *)) {
-                
-            } else {
-                UIWindow *windows = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
-                [self configWindow:windows];
-
-            }
-            
-        }else{
-            NSLog(@"error = %@",error);
-        }
-    }];
-
-    return YES;
-}
-
-- (void)configWindow:(UIWindow *)window {
-    self.window = window;
-    self.window.backgroundColor = [UIColor whiteColor];
-    
-    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"PDF32000_2008" ofType:@"pdf"];
-    
-    NSString *documentFolder = [NSHomeDirectory() stringByAppendingFormat:@"/%@/%@", @"Documents",@"Samples"];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:documentFolder])
-        [[NSFileManager defaultManager] createDirectoryAtURL:[NSURL fileURLWithPath:documentFolder] withIntermediateDirectories:YES attributes:nil error:nil];
-    
-    NSString * documentPath = [documentFolder stringByAppendingPathComponent:filePath.lastPathComponent];
-    if (![[NSFileManager defaultManager] fileExistsAtPath:documentPath])
-        [[NSFileManager defaultManager] copyItemAtURL:[NSURL fileURLWithPath:filePath] toURL:[NSURL fileURLWithPath:documentPath] error:nil];
-
-    CPDFViewController *pdfViewController = [[CPDFViewController alloc] initWithFilePath:documentPath password:nil];
-    CNavigationController *navController = [[CNavigationController alloc]initWithRootViewController:pdfViewController];
-
-    self.window.rootViewController = navController;
-    
-    [self.window makeKeyAndVisible];
-
-}
-
-+ (AppDelegate *)sharedAppDelegate {
-    if (!appDelegate)
-        appDelegate = [[AppDelegate alloc] init];
-    
-    return appDelegate;
-}
-
-
-#pragma mark - UISceneSession lifecycle
-
-
-- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options API_AVAILABLE(ios(13.0)){
-    // Called when a new scene session is being created.
-    // Use this method to select a configuration to create the new scene with.
-    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
-}
-
-
-- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions API_AVAILABLE(ios(13.0)){
-    // Called when the user discards a scene session.
-    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
-    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
-}
-
-
-@end

+ 0 - 21
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/CPDFViewController.h

@@ -1,21 +0,0 @@
-//
-//  ViewController.h
-//  Edit-Ctrl-Demo
-//
-//  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_tools/compdfkit_tools.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CPDFViewController : CPDFViewBaseController
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 549
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/CPDFViewController.m

@@ -1,549 +0,0 @@
-//
-//  CPDFViewController.m
-//   Edit-Ctrl-Demo
-//
-//  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 "CPDFViewController.h"
-
-#import <ComPDFKit/ComPDFKit.h>
-#import <compdfkit_tools/compdfkit_tools.h>
-#import <AVFAudio/AVFAudio.h>
-#import <AVFoundation/AVFoundation.h>
-
-@interface CPDFViewController () <CPDFSoundPlayBarDelegate,CPDFAnnotationBarDelegate,CPDFToolsViewControllerDelegate,CPDFNoteOpenViewControllerDelegate,CPDFBOTAViewControllerDelegate,CPDFKeyboardToolbarDelegate>
-
-@property(nonatomic, strong) CPDFAnnotationBar *annotationBar;
-
-@property(nonatomic, strong) CPDFSoundPlayBar *soundPlayBar;
-
-@property(nonatomic, strong) CAnnotationManage *annotationManage;
-
-@end
-
-@implementation CPDFViewController
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    
-    self.pdfListView.toolModel = CToolModelAnnotation;
-    self.view.backgroundColor = [CPDFColorUtils CPDFViewControllerBackgroundColor];
-    
-    [self initAnnotationBar];
-
-    [self enterAnnotationMode];
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(PDFPageDidRemoveAnnotationNotification:) name:CPDFPageDidRemoveAnnotationNotification object:nil];
-}
-
-- (void)initAnnotationBar {
-    self.annotationManage = [[CAnnotationManage alloc] initWithPDFView:self.pdfListView];
-        
-    self.annotationBar = [[CPDFAnnotationBar alloc] initAnnotationManage:self.annotationManage];
-    
-    CGFloat height = 44.0;
-    if (@available(iOS 11.0, *))
-        height += self.view.safeAreaInsets.bottom;
-    
-    self.annotationBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
-    self.annotationBar.delegate = self;
-    [self.annotationBar setParentVC:self];
-    [self.view addSubview:self.annotationBar];
-}
-
-- (void)initWitNavigationTitle {
-    //titleButton
-    CNavigationBarTitleButton * navTitleButton = [[CNavigationBarTitleButton alloc] init];
-    self.titleButton = navTitleButton;
-    self.navigationTitle = NSLocalizedString(@"Annotation", nil);
-    [navTitleButton setImage:[UIImage imageNamed:@"syasarrow"] forState:UIControlStateNormal];
-    [navTitleButton addTarget:self action:@selector(titleButtonClickd:) forControlEvents:UIControlEventTouchUpInside];
-    [navTitleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-    [navTitleButton setTitleColor:[CPDFColorUtils CAnyReverseBackgooundColor] forState:UIControlStateNormal];
-    self.titleButton.frame = CGRectMake(0, 0, 50, 30);
-    self.navigationItem.titleView = self.titleButton;
-}
-
-- (void)viewWillLayoutSubviews {
-    [super viewWillLayoutSubviews];
-    
-    if([self.popMenu superview]) {
-        if (@available(iOS 11.0, *)) {
-            [self.popMenu showMenuInRect:CGRectMake(self.view.frame.size.width - self.view.safeAreaInsets.right - 250, CGRectGetMaxY(self.navigationController.navigationBar.frame), 250, 250)];
-        } else {
-            // Fallback on earlier versions
-            [self.popMenu showMenuInRect:CGRectMake(self.view.frame.size.width - 250, CGRectGetMaxY(self.navigationController.navigationBar.frame), 250, 250)];
-        }
-    }
-    
-    CGFloat height = 44.0;
-    
-    if (@available(iOS 11.0, *))
-        height += self.view.safeAreaInsets.bottom;
-
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        if (@available(iOS 11.0, *)) {
-            self.annotationBar.frame = CGRectMake(self.view.safeAreaInsets.left, self.view.frame.size.height - height, self.view.frame.size.width- self.view.safeAreaInsets.left - self.view.safeAreaInsets.right, height);
-        } else {
-            self.annotationBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
-        }
-    } else {
-        self.annotationBar.frame = CGRectMake(0, self.view.bounds.size.height, self.view.frame.size.width, height);
-    }
-    
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        if (!self.navigationController.navigationBarHidden) {
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height-frame.size.height;
-                self.annotationBar.frame = frame;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-            
-            tBottomY = self.annotationBar.frame.size.height;
-        } else {
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height;
-                self.annotationBar.frame = frame;
-            }];
-        }
-    } else {
-        tPosY = 0;
-        if (!self.navigationController.navigationBarHidden) {
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-        }
-    }
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-}
-
-#pragma mark - Public Methods
-
-- (void)selectDocumentRefresh {
-    self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
-    [self.annotationBar updatePropertiesButtonState];
-    [self.annotationBar reloadData];
-    [self.annotationBar updateUndoRedoState];
-}
-
-#pragma mark - Private Methods
-
-- (void)enterAnnotationMode {
-    self.pdfListView.toolModel = CToolModelAnnotation;
-    self.navigationTitle = NSLocalizedString(@"Annotation", nil);
-    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-    
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-    CGRect frame = self.annotationBar.frame;
-    frame.origin.y = self.view.bounds.size.height-frame.size.height;
-    self.annotationBar.frame = frame;
-    
-    CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-    tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-    tBottomY = self.annotationBar.frame.size.height;
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-}
-
-- (void)enterViewerMode {
-    
-    if (self.pdfListView.isEdited) {
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-            [self.pdfListView commitEditing];
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [self.pdfListView endOfEditing];
-            });
-        });
-    } else {
-        [self.pdfListView endOfEditing];
-    }
-    
-    self.pdfListView.toolModel = CToolModelViewer;
-    self.navigationTitle = NSLocalizedString(@"Viewer", nil);
-    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-    
-    CGRect frame = self.annotationBar.frame;
-    frame.origin.y = self.view.bounds.size.height;
-    self.annotationBar.frame = frame;
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-}
-
-- (void)titleButtonClickd:(UIButton *) button {
-    CPDFToolsViewController * toolsVc = [[CPDFToolsViewController alloc] initCustomizeWithToolArrays:@[@(CToolModelViewer),@(CToolModelAnnotation)]];
-    toolsVc.delegate = self;
-    AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
-    presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:toolsVc presentingViewController:self];
-    toolsVc.transitioningDelegate = presentationController;
-    [self presentViewController:toolsVc animated:YES completion:nil];
-}
-
-- (void)navigationRightItemBota {
-    CPDFBOTAViewController *botaViewController = [[CPDFBOTAViewController alloc] initCustomizeWithPDFView:self.pdfListView navArrays:@[@(CPDFBOTATypeStateOutline),@(CPDFBOTATypeStateBookmark),@(CPDFBOTATypeStateAnnotation)]];
-    botaViewController.delegate = self;
-    
-    AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
-   
-    presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:botaViewController presentingViewController:self];
-    botaViewController.transitioningDelegate = presentationController;
-    
-    [self presentViewController:botaViewController animated:YES completion:nil];
-}
-
-- (void)setTitleRefresh {
-    if (CToolModelAnnotation == self.pdfListView.toolModel) {
-        [self enterAnnotationMode];
-    } else if (CToolModelViewer == self.pdfListView.toolModel) {
-        [self enterViewerMode];
-    }
-}
-
-#pragma mark - CPDFViewDelegate
-
-- (void)PDFViewShouldBeginEditing:(CPDFView *)pdfView textView:(UITextView *)textView forAnnotation:(CPDFFreeTextAnnotation *)annotation {
-    CPDFKeyboardToolbar *keyBoadrdToolbar = [[CPDFKeyboardToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 50)];
-    keyBoadrdToolbar.delegate = self;
-    [keyBoadrdToolbar bindToTextView:textView];
-}
-
-#pragma mark - CPDFListViewDelegate
-
-- (void)PDFListViewPerformTouchEnded:(CPDFListView *)pdfView {
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        if (self.navigationController.navigationBarHidden) {
-            [self.navigationController setNavigationBarHidden:NO animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height-frame.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 1.0;
-                self.annotationBar.topToolBar.alpha = 1.0;
-                self.annotationBar.drawPencilFuncView.alpha = 1.0;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-            
-            tBottomY = self.annotationBar.frame.size.height;
-        } else {
-            [self.navigationController setNavigationBarHidden:YES animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 0.0;
-                self.annotationBar.topToolBar.alpha = 0.0;
-                self.annotationBar.drawPencilFuncView.alpha = 0.0;
-
-            }];
-        }
-    } else {
-        CGFloat tPosY = 0;
-        if (self.navigationController.navigationBarHidden) {
-            [self.navigationController setNavigationBarHidden:NO animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                self.pdfListView.pageSliderView.alpha = 1.0;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-
-        } else {
-            [self.navigationController setNavigationBarHidden:YES animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                self.pdfListView.pageSliderView.alpha = 0.0;
-            }];
-        }
-    }
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-}
-
-- (void)PDFListViewEditNote:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
-    if([annotation isKindOfClass:[CPDFLinkAnnotation class]]) {
-        [self.annotationBar buttonItemClicked_openAnnotation:self.titleButton];
-    } else {
-        CGRect rect = [self.pdfListView convertRect:annotation.bounds fromPage:annotation.page];
-        CPDFNoteOpenViewController *noteVC = [[CPDFNoteOpenViewController alloc]initWithAnnotation:annotation];
-        noteVC.delegate = self;
-        [noteVC showViewController:self inRect:rect];
-    }
-}
-
-- (void)PDFListViewChangedAnnotationType:(CPDFListView *)pdfListView forAnnotationMode:(CPDFViewAnnotationMode)annotationMode {
-    [self.annotationBar reloadData];
-}
-
-- (void)PDFListViewPerformAddStamp:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    [self.annotationBar addStampAnnotationWithPage:page point:point];
-}
-
-- (void)PDFListViewPerformAddImage:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    [self.annotationBar addImageAnnotationWithPage:page point:point];
-}
-
-- (BOOL)PDFListViewerTouchEndedIsAudioRecordMedia:(CPDFListView *)pdfListView {
-    if (CPDFMediaStateAudioRecord == [CPDFMediaManager shareManager].mediaState) {
-        [self PDFListViewPerformTouchEnded:self.pdfListView];
-        return YES;
-    }
-    return NO;
-}
-
-- (void)PDFListViewPerformCancelMedia:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-}
-
-- (void)PDFListViewPerformRecordMedia:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    if([self.soundPlayBar superview]) {
-        if(self.soundPlayBar.soundState == CPDFSoundStatePlay) {
-            [self.soundPlayBar stopAudioPlay];
-            [self.soundPlayBar removeFromSuperview];
-        } else if (self.soundPlayBar.soundState == CPDFSoundStateRecord) {
-            [self.soundPlayBar stopRecord];
-            [self.soundPlayBar removeFromSuperview];
-        }
-    }
-    
-    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
-    if (authStatus == AVAuthorizationStatusNotDetermined || authStatus == AVAuthorizationStatusDenied) {
-        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
-            if (granted) {
-                
-            } else {
-                NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
-                if ([[UIApplication sharedApplication] canOpenURL:url]) {
-                    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
-                }
-            }
-        }];
-    }
-    
-    if (authStatus == AVAuthorizationStatusAuthorized) {
-        NSInteger pageindex = [self.pdfListView.document indexForPage:page];
-        [CPDFMediaManager shareManager].mediaState = CPDFMediaStateAudioRecord;
-        [CPDFMediaManager shareManager].pageNum = pageindex;
-        [CPDFMediaManager shareManager].ptInPdf = point;
-        
-        _soundPlayBar = [[CPDFSoundPlayBar alloc] initWithStyle:self.annotationManage.annotStyle];
-        _soundPlayBar.delegate = self;
-        [_soundPlayBar showInView:self.pdfListView soundState:CPDFSoundStateRecord];
-        [_soundPlayBar startAudioRecord];
-       
-    } else {
-        return;
-    }
-}
-
-- (void)PDFListViewPerformPlay:(CPDFListView *)pdfView forAnnotation:(CPDFSoundAnnotation *)annotation {
-    NSString *filePath = [annotation mediaPath];
-    if (filePath) {
-        NSURL *URL = [NSURL fileURLWithPath:filePath];
-        
-        _soundPlayBar = [[CPDFSoundPlayBar alloc] initWithStyle:self.annotationManage.annotStyle];
-        _soundPlayBar.delegate = self;
-        [_soundPlayBar showInView:self.pdfListView soundState:CPDFSoundStatePlay];
-        [_soundPlayBar setURL:URL];
-        [_soundPlayBar startAudioPlay];
-        [CPDFMediaManager shareManager].mediaState = CPDFMediaStateVedioPlaying;
-    }
-}
-
-- (void)PDFListViewPerformSignatureWidget:(CPDFListView *)pdfView forAnnotation:(CPDFSignatureWidgetAnnotation *)annotation {
-    [self.annotationBar openSignatureAnnotation:annotation];
-}
-
-- (void)PDFListViewEditProperties:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
-    [self.annotationBar buttonItemClicked_openAnnotation:self.titleButton];
-}
-
-#pragma mark - CPDFKeyboardToolbarDelegate
-
-- (void)keyboardShouldDissmiss:(CPDFKeyboardToolbar *)toolbar {
-    [self.pdfListView commitEditAnnotationFreeText];
-    self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
-    [self.annotationBar reloadData];
-}
-
-#pragma mark - CPDFBOTAViewControllerDelegate
-
-- (void)botaViewControllerDismiss:(CPDFBOTAViewController *)botaViewController {
-    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
-}
-
-#pragma mark - CPDFAnnotationBarDelegate
-
-- (void)annotationBarClick:(CPDFAnnotationBar *)annotationBar clickAnnotationMode:(CPDFViewAnnotationMode)annotationMode forSelected:(BOOL)isSelected forButton:(UIButton *)button {
-    if(CPDFViewAnnotationModeInk == annotationMode || CPDFViewAnnotationModePencilDrawing == annotationMode) {
-        CGFloat tPosY = 0;
-        if(isSelected) {
-            [self.navigationController setNavigationBarHidden:YES animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 0.0;
-               
-                UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-                inset.bottom = 0;
-                self.pdfListView.documentView.contentInset = inset;
-
-            }];
-        } else {
-            [self.navigationController setNavigationBarHidden:NO animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height-frame.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 1.0;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-        }
-    } else if (CPDFViewAnnotationModeSound == annotationMode && !isSelected) {
-        if(CPDFSoundStateRecord == self.soundPlayBar.soundState) {
-            [self.soundPlayBar stopRecord];
-
-        } else if (CPDFSoundStatePlay== self.soundPlayBar.soundState) {
-            [self.soundPlayBar stopAudioPlay];
-        }
-    }
-}
-
-#pragma mark - CPDFNoteOpenViewControllerDelegate
-
-- (void)getNoteOpenViewController:(CPDFNoteOpenViewController *)noteOpenVC content:(NSString *)content isDelete:(BOOL)isDelete {
-    if (isDelete) {
-        [noteOpenVC.annotation.page removeAnnotation:noteOpenVC.annotation];
-        [self.pdfListView setNeedsDisplayForPage:noteOpenVC.annotation.page];
-        if([self.pdfListView.activeAnnotations containsObject:noteOpenVC.annotation]) {
-            NSMutableArray *activeAnnotations = [NSMutableArray arrayWithArray:self.pdfListView.activeAnnotations];
-            [activeAnnotations removeObject:noteOpenVC.annotation];
-            [self.pdfListView updateActiveAnnotations:activeAnnotations];
-        }
-    } else {
-        if([noteOpenVC.annotation isKindOfClass:[CPDFMarkupAnnotation class]]) {
-            CPDFMarkupAnnotation *markupAnnotation = (CPDFMarkupAnnotation *)noteOpenVC.annotation;
-            [markupAnnotation setContents:content?:@""];
-        } else if(([noteOpenVC.annotation isKindOfClass:[CPDFTextAnnotation class]])){
-            if(content && content.length > 0) {
-                noteOpenVC.annotation.contents = content?:@"";
-            } else {
-                if([self.pdfListView.activeAnnotations containsObject:noteOpenVC.annotation]) {
-                    [self.pdfListView updateActiveAnnotations:@[]];
-                }
-                [noteOpenVC.annotation.page removeAnnotation:noteOpenVC.annotation];
-                [self.pdfListView setNeedsDisplayForPage:noteOpenVC.annotation.page];
-            }
-        } else {
-            noteOpenVC.annotation.contents = content?:@"";
-        }
-    }
-}
-
-#pragma mark - CPDFSoundPlayBarDelegate
-
-- (void)soundPlayBarRecordFinished:(CPDFSoundPlayBar *)soundPlayBar withFile:(NSString *)filePath {
-
-    CPDFPage *page = [self.pdfListView.document pageAtIndex:[CPDFMediaManager shareManager].pageNum];
-    CPDFSoundAnnotation *annotation = [[CPDFSoundAnnotation alloc] initWithDocument:self.pdfListView.document];
-    
-    if ([annotation setMediaPath:filePath]) {
-        CGRect bounds = annotation.bounds;
-        bounds.origin.x = [CPDFMediaManager shareManager].ptInPdf.x-bounds.size.width/2.0;
-        bounds.origin.y = [CPDFMediaManager shareManager].ptInPdf.y-bounds.size.height/2.0;
-        annotation.bounds = bounds;
-        [self.pdfListView addAnnotation:annotation forPage:page];
-    }
-
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-    [self.pdfListView stopRecord];
-}
-
-- (void)soundPlayBarRecordCancel:(CPDFSoundPlayBar *)soundPlayBar {
-    if(CPDFSoundStateRecord == self.soundPlayBar.soundState) {
-        [self.pdfListView stopRecord];
-    }
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-}
-
-- (void)soundPlayBarPlayClose:(CPDFSoundPlayBar *)soundPlayBar {
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-}
-
-#pragma mark - Notification
-
-- (void)PDFPageDidRemoveAnnotationNotification:(NSNotification *)notification {
-    CPDFAnnotation *annotation = [notification object];
-
-    if ([annotation isKindOfClass:[CPDFSoundAnnotation class]]) {
-        [self.soundPlayBar stopAudioPlay];
-        if ([self.soundPlayBar isDescendantOfView:self.view]) {
-            [self.soundPlayBar removeFromSuperview];
-        }
-    }
-}
-
-#pragma mark - CPDFToolsViewControllerDelegate
-
-- (void)CPDFToolsViewControllerDismiss:(CPDFToolsViewController *) viewController selectItemAtIndex:(CToolModel)selectIndex {
-    if(CToolModelViewer == selectIndex) {
-        //viewwer
-        [self enterViewerMode];
-    }else{
-        //Annotation
-        [self enterAnnotationMode];
-    }
-}
-
-@end

+ 0 - 20
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/SceneDelegate.h

@@ -1,20 +0,0 @@
-//
-//  SceneDelegate.h
-//  Annotation-Ctrl-Demo
-//
-//  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 <UIKit/UIKit.h>
-
-@interface SceneDelegate : UIResponder <UIWindowSceneDelegate>
-
-@property (strong, nonatomic) UIWindow * window;
-
-@end
-

+ 0 - 63
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/SceneDelegate.m

@@ -1,63 +0,0 @@
-//
-//  SceneDelegate.m
-//  Annotation-Ctrl-Demo
-//
-//  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 "SceneDelegate.h"
-#import "AppDelegate.h"
-
-@interface SceneDelegate ()
-
-@end
-
-@implementation SceneDelegate
-
-
-- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions API_AVAILABLE(ios(13.0)){
-    UIWindow * window = [[UIWindow alloc] initWithWindowScene:scene];
-    
-    [[AppDelegate sharedAppDelegate] configWindow:window];
-}
-
-
-- (void)sceneDidDisconnect:(UIScene *)scene API_AVAILABLE(ios(13.0)){
-    // Called as the scene is being released by the system.
-    // This occurs shortly after the scene enters the background, or when its session is discarded.
-    // Release any resources associated with this scene that can be re-created the next time the scene connects.
-    // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
-}
-
-
-- (void)sceneDidBecomeActive:(UIScene *)scene API_AVAILABLE(ios(13.0)){
-    // Called when the scene has moved from an inactive state to an active state.
-    // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
-}
-
-
-- (void)sceneWillResignActive:(UIScene *)scene API_AVAILABLE(ios(13.0)){
-    // Called when the scene will move from an active state to an inactive state.
-    // This may occur due to temporary interruptions (ex. an incoming phone call).
-}
-
-
-- (void)sceneWillEnterForeground:(UIScene *)scene API_AVAILABLE(ios(13.0)){
-    // Called as the scene transitions from the background to the foreground.
-    // Use this method to undo the changes made on entering the background.
-}
-
-
-- (void)sceneDidEnterBackground:(UIScene *)scene API_AVAILABLE(ios(13.0)){
-    // Called as the scene transitions from the foreground to the background.
-    // Use this method to save data, release shared resources, and store enough scene-specific state information
-    // to restore the scene back to its current state.
-}
-
-
-@end

+ 0 - 23
Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/main.m

@@ -1,23 +0,0 @@
-//
-//  main.m
-//  Annotation-Ctrl-Demo
-//
-//  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 <UIKit/UIKit.h>
-#import "AppDelegate.h"
-
-int main(int argc, char * argv[]) {
-    NSString * appDelegateClassName;
-    @autoreleasepool {
-        // Setup code that might create autoreleased objects goes here.
-        appDelegateClassName = NSStringFromClass([AppDelegate class]);
-    }
-    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
-}

+ 466 - 0
Annotations/Annotations.xcodeproj/project.pbxproj

@@ -0,0 +1,466 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 55;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		4F06AB5D29F6852C007797E4 /* CPDFViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F06AB5C29F6852C007797E4 /* CPDFViewController.m */; };
+		C9AF185129F267DD00EC4979 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF185029F267DD00EC4979 /* AppDelegate.m */; };
+		C9AF185429F267DD00EC4979 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF185329F267DD00EC4979 /* SceneDelegate.m */; };
+		C9AF185A29F267DD00EC4979 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9AF185829F267DD00EC4979 /* Main.storyboard */; };
+		C9AF185C29F267E000EC4979 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C9AF185B29F267E000EC4979 /* Assets.xcassets */; };
+		C9AF185F29F267E000EC4979 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C9AF185D29F267E000EC4979 /* LaunchScreen.storyboard */; };
+		C9AF186229F267E000EC4979 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF186129F267E000EC4979 /* main.m */; };
+		C9AF187429F26AD200EC4979 /* SDKLicense.xml in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187129F26AD200EC4979 /* SDKLicense.xml */; };
+		C9AF187529F26AD200EC4979 /* XPDXMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF187229F26AD200EC4979 /* XPDXMLElement.m */; };
+		C9AF187629F26AD200EC4979 /* XMLParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C9AF187329F26AD200EC4979 /* XMLParseManager.m */; };
+		C9AF187C29F26ADF00EC4979 /* Form_Widgets_Test.pdf in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187829F26ADF00EC4979 /* Form_Widgets_Test.pdf */; };
+		C9AF187D29F26ADF00EC4979 /* PDF32000_2008.pdf in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187929F26ADF00EC4979 /* PDF32000_2008.pdf */; };
+		C9AF187F29F26ADF00EC4979 /* Quick Start Guide.pdf in Resources */ = {isa = PBXBuildFile; fileRef = C9AF187B29F26ADF00EC4979 /* Quick Start Guide.pdf */; };
+		F32776912A04A6D900C5F0A6 /* ComPDFKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */; };
+		F32776922A04A6D900C5F0A6 /* ComPDFKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		F3C0CC582A4321B700007C0A /* ComPDFKit_Tools.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3C0CC572A4321B700007C0A /* ComPDFKit_Tools.framework */; };
+		F3C0CC592A4321B700007C0A /* ComPDFKit_Tools.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F3C0CC572A4321B700007C0A /* ComPDFKit_Tools.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		C9AF188429F26B4D00EC4979 /* Embed Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				F3C0CC592A4321B700007C0A /* ComPDFKit_Tools.framework in Embed Frameworks */,
+				F32776922A04A6D900C5F0A6 /* ComPDFKit.xcframework in Embed Frameworks */,
+			);
+			name = "Embed Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		4F06AB5B29F6852C007797E4 /* CPDFViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFViewController.h; sourceTree = "<group>"; };
+		4F06AB5C29F6852C007797E4 /* CPDFViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFViewController.m; sourceTree = "<group>"; };
+		C918CEB129F903CF00D43974 /* compdfkit_tools.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = compdfkit_tools.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = ComPDFKit.xcframework; path = ../Lib/ComPDFKit.xcframework; sourceTree = "<group>"; };
+		C9AF184C29F267DD00EC4979 /* Annotations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Annotations.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		C9AF184F29F267DD00EC4979 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		C9AF185029F267DD00EC4979 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		C9AF185229F267DD00EC4979 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
+		C9AF185329F267DD00EC4979 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
+		C9AF185929F267DD00EC4979 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		C9AF185B29F267E000EC4979 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		C9AF185E29F267E000EC4979 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		C9AF186029F267E000EC4979 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		C9AF186129F267E000EC4979 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		C9AF186F29F26AD200EC4979 /* XPDXMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPDXMLElement.h; sourceTree = "<group>"; };
+		C9AF187029F26AD200EC4979 /* XMLParseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLParseManager.h; sourceTree = "<group>"; };
+		C9AF187129F26AD200EC4979 /* SDKLicense.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = SDKLicense.xml; sourceTree = "<group>"; };
+		C9AF187229F26AD200EC4979 /* XPDXMLElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPDXMLElement.m; sourceTree = "<group>"; };
+		C9AF187329F26AD200EC4979 /* XMLParseManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLParseManager.m; sourceTree = "<group>"; };
+		C9AF187829F26ADF00EC4979 /* Form_Widgets_Test.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Form_Widgets_Test.pdf; sourceTree = "<group>"; };
+		C9AF187929F26ADF00EC4979 /* PDF32000_2008.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = PDF32000_2008.pdf; sourceTree = "<group>"; };
+		C9AF187B29F26ADF00EC4979 /* Quick Start Guide.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "Quick Start Guide.pdf"; sourceTree = "<group>"; };
+		F3C0CC572A4321B700007C0A /* ComPDFKit_Tools.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ComPDFKit_Tools.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		C9AF184929F267DD00EC4979 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F3C0CC582A4321B700007C0A /* ComPDFKit_Tools.framework in Frameworks */,
+				F32776912A04A6D900C5F0A6 /* ComPDFKit.xcframework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		C918CEB029F903CF00D43974 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				F3C0CC572A4321B700007C0A /* ComPDFKit_Tools.framework */,
+				C918CEBB29F904E400D43974 /* ComPDFKit.xcframework */,
+				C918CEB129F903CF00D43974 /* compdfkit_tools.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		C9AF184329F267DD00EC4979 = {
+			isa = PBXGroup;
+			children = (
+				C9AF187729F26ADF00EC4979 /* TestFile */,
+				C9AF186E29F26AD200EC4979 /* SDKLicense */,
+				C9AF184E29F267DD00EC4979 /* Annotations */,
+				C9AF184D29F267DD00EC4979 /* Products */,
+				C918CEB029F903CF00D43974 /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		C9AF184D29F267DD00EC4979 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				C9AF184C29F267DD00EC4979 /* Annotations.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		C9AF184E29F267DD00EC4979 /* Annotations */ = {
+			isa = PBXGroup;
+			children = (
+				C9AF184F29F267DD00EC4979 /* AppDelegate.h */,
+				C9AF185029F267DD00EC4979 /* AppDelegate.m */,
+				C9AF185229F267DD00EC4979 /* SceneDelegate.h */,
+				C9AF185329F267DD00EC4979 /* SceneDelegate.m */,
+				4F06AB5B29F6852C007797E4 /* CPDFViewController.h */,
+				4F06AB5C29F6852C007797E4 /* CPDFViewController.m */,
+				C9AF185829F267DD00EC4979 /* Main.storyboard */,
+				C9AF185B29F267E000EC4979 /* Assets.xcassets */,
+				C9AF185D29F267E000EC4979 /* LaunchScreen.storyboard */,
+				C9AF186029F267E000EC4979 /* Info.plist */,
+				C9AF186129F267E000EC4979 /* main.m */,
+			);
+			path = Annotations;
+			sourceTree = "<group>";
+		};
+		C9AF186E29F26AD200EC4979 /* SDKLicense */ = {
+			isa = PBXGroup;
+			children = (
+				C9AF187129F26AD200EC4979 /* SDKLicense.xml */,
+				C9AF187029F26AD200EC4979 /* XMLParseManager.h */,
+				C9AF187329F26AD200EC4979 /* XMLParseManager.m */,
+				C9AF186F29F26AD200EC4979 /* XPDXMLElement.h */,
+				C9AF187229F26AD200EC4979 /* XPDXMLElement.m */,
+			);
+			name = SDKLicense;
+			path = ../SDKLicense;
+			sourceTree = "<group>";
+		};
+		C9AF187729F26ADF00EC4979 /* TestFile */ = {
+			isa = PBXGroup;
+			children = (
+				C9AF187829F26ADF00EC4979 /* Form_Widgets_Test.pdf */,
+				C9AF187929F26ADF00EC4979 /* PDF32000_2008.pdf */,
+				C9AF187B29F26ADF00EC4979 /* Quick Start Guide.pdf */,
+			);
+			name = TestFile;
+			path = ../TestFile;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		C9AF184B29F267DD00EC4979 /* Annotations */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = C9AF186529F267E000EC4979 /* Build configuration list for PBXNativeTarget "Annotations" */;
+			buildPhases = (
+				C9AF184829F267DD00EC4979 /* Sources */,
+				C9AF184929F267DD00EC4979 /* Frameworks */,
+				C9AF184A29F267DD00EC4979 /* Resources */,
+				C9AF188429F26B4D00EC4979 /* Embed Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Annotations;
+			productName = "Annotation-Ctrl-Demo";
+			productReference = C9AF184C29F267DD00EC4979 /* Annotations.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		C9AF184429F267DD00EC4979 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				BuildIndependentTargetsInParallel = 1;
+				LastUpgradeCheck = 1420;
+				TargetAttributes = {
+					C9AF184B29F267DD00EC4979 = {
+						CreatedOnToolsVersion = 14.2;
+					};
+				};
+			};
+			buildConfigurationList = C9AF184729F267DD00EC4979 /* Build configuration list for PBXProject "Annotations" */;
+			compatibilityVersion = "Xcode 13.0";
+			developmentRegion = en;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = C9AF184329F267DD00EC4979;
+			productRefGroup = C9AF184D29F267DD00EC4979 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				C9AF184B29F267DD00EC4979 /* Annotations */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		C9AF184A29F267DD00EC4979 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				C9AF187C29F26ADF00EC4979 /* Form_Widgets_Test.pdf in Resources */,
+				C9AF185F29F267E000EC4979 /* LaunchScreen.storyboard in Resources */,
+				C9AF185C29F267E000EC4979 /* Assets.xcassets in Resources */,
+				C9AF187429F26AD200EC4979 /* SDKLicense.xml in Resources */,
+				C9AF185A29F267DD00EC4979 /* Main.storyboard in Resources */,
+				C9AF187F29F26ADF00EC4979 /* Quick Start Guide.pdf in Resources */,
+				C9AF187D29F26ADF00EC4979 /* PDF32000_2008.pdf in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		C9AF184829F267DD00EC4979 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				C9AF187529F26AD200EC4979 /* XPDXMLElement.m in Sources */,
+				4F06AB5D29F6852C007797E4 /* CPDFViewController.m in Sources */,
+				C9AF185129F267DD00EC4979 /* AppDelegate.m in Sources */,
+				C9AF187629F26AD200EC4979 /* XMLParseManager.m in Sources */,
+				C9AF186229F267E000EC4979 /* main.m in Sources */,
+				C9AF185429F267DD00EC4979 /* SceneDelegate.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		C9AF185829F267DD00EC4979 /* Main.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				C9AF185929F267DD00EC4979 /* Base */,
+			);
+			name = Main.storyboard;
+			sourceTree = "<group>";
+		};
+		C9AF185D29F267E000EC4979 /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				C9AF185E29F267E000EC4979 /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		C9AF186329F267E000EC4979 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+			};
+			name = Debug;
+		};
+		C9AF186429F267E000EC4979 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				MTL_FAST_MATH = YES;
+				SDKROOT = iphoneos;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		C9AF186629F267E000EC4979 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_TEAM = 4GGQPGRTSV;
+				ENABLE_BITCODE = NO;
+				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = Annotations/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = Annotations_ComPDFKit;
+				INFOPLIST_KEY_NSCameraUsageDescription = "Enable camera access so that you can create scans with your camera.";
+				INFOPLIST_KEY_NSMicrophoneUsageDescription = "Your consent is required before you could access the function.";
+				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Enable camera access so that you can create scans with your camera.";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Enable photo access so that you can create scans with your photos.";
+				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+				INFOPLIST_KEY_UIMainStoryboardFile = Main;
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.annotations;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		C9AF186729F267E000EC4979 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_TEAM = 4GGQPGRTSV;
+				ENABLE_BITCODE = NO;
+				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = Annotations/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = Annotations_ComPDFKit;
+				INFOPLIST_KEY_NSCameraUsageDescription = "Enable camera access so that you can create scans with your camera.";
+				INFOPLIST_KEY_NSMicrophoneUsageDescription = "Your consent is required before you could access the function.";
+				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Enable camera access so that you can create scans with your camera.";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Enable photo access so that you can create scans with your photos.";
+				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
+				INFOPLIST_KEY_UIMainStoryboardFile = Main;
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+				);
+				MARKETING_VERSION = 1.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.annotations;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		C9AF184729F267DD00EC4979 /* Build configuration list for PBXProject "Annotations" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C9AF186329F267E000EC4979 /* Debug */,
+				C9AF186429F267E000EC4979 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		C9AF186529F267E000EC4979 /* Build configuration list for PBXNativeTarget "Annotations" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				C9AF186629F267E000EC4979 /* Debug */,
+				C9AF186729F267E000EC4979 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = C9AF184429F267DD00EC4979 /* Project object */;
+}

+ 24 - 0
Annotations/Annotations/AppDelegate.h

@@ -0,0 +1,24 @@
+//
+//  AppDelegate.h
+//  Annotations
+//
+//  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 <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (nonatomic, readonly) UIWindow *window;
+
++ (AppDelegate *)sharedAppDelegate;
+
+- (void)configWindow:(UIWindow *)window;
+
+@end
+

+ 112 - 0
Annotations/Annotations/AppDelegate.m

@@ -0,0 +1,112 @@
+//
+//  AppDelegate.m
+//  Annotations
+//
+//  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 "AppDelegate.h"
+
+#import <ComPDFKit/ComPDFKit.h>
+#import <ComPDFKit_Tools/ComPDFKit_Tools.h>
+
+#import "CPDFViewController.h"
+#import "XMLParseManager.h"
+
+static AppDelegate *appDelegate = NULL;
+
+@interface AppDelegate ()
+
+@property (nonatomic, strong) UIWindow *window;
+
+@property (nonatomic, strong) XMLParseManager *manager;
+
+@end
+
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+    // Override point for customization after application launch.
+    NSString *path = [[NSBundle mainBundle]pathForResource:@"SDKLicense" ofType:@"xml"];
+    NSURL *url = [NSURL fileURLWithPath:path];
+    _manager = [[XMLParseManager alloc]init];
+    [_manager parseXMLWithURL:url completion:^(BOOL SUC, XPDXMLElement *data,NSError *error) {
+        if (SUC) {
+            NSDictionary * attribute = data.attribute;
+            NSString * key = attribute[@"key"];
+            NSString * secret = attribute[@"secret"];
+            [CPDFKit setLicenseKey:key secret:secret];
+            
+            if (@available(iOS 13.0, *)) {
+                
+            } else {
+                UIWindow *windows = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+                [self configWindow:windows];
+
+            }
+            
+        }else{
+            NSLog(@"error = %@",error);
+        }
+    }];
+
+    return YES;
+}
+
+- (void)configWindow:(UIWindow *)window {
+    self.window = window;
+    self.window.backgroundColor = [UIColor whiteColor];
+    
+    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"PDF32000_2008" ofType:@"pdf"];
+    
+    NSString *documentFolder = [NSHomeDirectory() stringByAppendingFormat:@"/%@/%@", @"Documents",@"Samples"];
+
+    if (![[NSFileManager defaultManager] fileExistsAtPath:documentFolder])
+        [[NSFileManager defaultManager] createDirectoryAtURL:[NSURL fileURLWithPath:documentFolder] withIntermediateDirectories:YES attributes:nil error:nil];
+    
+    NSString * documentPath = [documentFolder stringByAppendingPathComponent:filePath.lastPathComponent];
+    if (![[NSFileManager defaultManager] fileExistsAtPath:documentPath])
+        [[NSFileManager defaultManager] copyItemAtURL:[NSURL fileURLWithPath:filePath] toURL:[NSURL fileURLWithPath:documentPath] error:nil];
+
+    CPDFViewController *pdfViewController = [[CPDFViewController alloc] initWithFilePath:documentPath password:nil];
+    CNavigationController *navController = [[CNavigationController alloc]initWithRootViewController:pdfViewController];
+
+    self.window.rootViewController = navController;
+    
+    [self.window makeKeyAndVisible];
+
+}
+
++ (AppDelegate *)sharedAppDelegate {
+    if (!appDelegate)
+        appDelegate = [[AppDelegate alloc] init];
+    
+    return appDelegate;
+}
+
+
+#pragma mark - UISceneSession lifecycle
+
+
+- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options API_AVAILABLE(ios(13.0)){
+    // Called when a new scene session is being created.
+    // Use this method to select a configuration to create the new scene with.
+    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
+}
+
+
+- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions API_AVAILABLE(ios(13.0)){
+    // Called when the user discards a scene session.
+    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
+    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+}
+
+
+@end

Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/AccentColor.colorset/Contents.json → Annotations/Annotations/Assets.xcassets/AccentColor.colorset/Contents.json


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/AppIcon.appiconset/Contents.json → Annotations/Annotations/Assets.xcassets/AppIcon.appiconset/Contents.json


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/AppIcon.appiconset/icon-1024.png → Annotations/Annotations/Assets.xcassets/AppIcon.appiconset/icon-1024.png


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/CPDFThunbnailImageEnter.imageset/Contents.json → Annotations/Annotations/Assets.xcassets/CPDFThunbnailImageEnter.imageset/Contents.json


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/CPDFThunbnailImageEnter.imageset/thumbnail.pdf → Annotations/Annotations/Assets.xcassets/CPDFThunbnailImageEnter.imageset/thumbnail.pdf


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/CPDFThunbnailImageEnter.imageset/thumbnaill.pdf → Annotations/Annotations/Assets.xcassets/CPDFThunbnailImageEnter.imageset/thumbnaill.pdf


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/Contents.json → Annotations/Annotations/Assets.xcassets/Contents.json


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/syasarrow.imageset/Contents.json → Annotations/Annotations/Assets.xcassets/syasarrow.imageset/Contents.json


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/syasarrow.imageset/syasarrow.pdf → Annotations/Annotations/Assets.xcassets/syasarrow.imageset/syasarrow.pdf


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Assets.xcassets/syasarrow.imageset/syasarrowl.pdf → Annotations/Annotations/Assets.xcassets/syasarrow.imageset/syasarrowl.pdf


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Base.lproj/LaunchScreen.storyboard → Annotations/Annotations/Base.lproj/LaunchScreen.storyboard


Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Base.lproj/Main.storyboard → Annotations/Annotations/Base.lproj/Main.storyboard


+ 21 - 0
Annotations/Annotations/CPDFViewController.h

@@ -0,0 +1,21 @@
+//
+//  ViewController.h
+//  ContentEditor
+//
+//  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_Tools/ComPDFKit_Tools.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFViewController : CPDFViewBaseController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 549 - 0
Annotations/Annotations/CPDFViewController.m

@@ -0,0 +1,549 @@
+//
+//  CPDFViewController.m
+//   ContentEditor
+//
+//  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 "CPDFViewController.h"
+
+#import <ComPDFKit/ComPDFKit.h>
+#import <ComPDFKit_Tools/ComPDFKit_Tools.h>
+#import <AVFAudio/AVFAudio.h>
+#import <AVFoundation/AVFoundation.h>
+
+@interface CPDFViewController () <CPDFSoundPlayBarDelegate,CPDFAnnotationBarDelegate,CPDFToolsViewControllerDelegate,CPDFNoteOpenViewControllerDelegate,CPDFBOTAViewControllerDelegate,CPDFKeyboardToolbarDelegate>
+
+@property(nonatomic, strong) CPDFAnnotationBar *annotationBar;
+
+@property(nonatomic, strong) CPDFSoundPlayBar *soundPlayBar;
+
+@property(nonatomic, strong) CAnnotationManage *annotationManage;
+
+@end
+
+@implementation CPDFViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    self.pdfListView.toolModel = CToolModelAnnotation;
+    self.view.backgroundColor = [CPDFColorUtils CPDFViewControllerBackgroundColor];
+    
+    [self initAnnotationBar];
+
+    [self enterAnnotationMode];
+    
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(PDFPageDidRemoveAnnotationNotification:) name:CPDFPageDidRemoveAnnotationNotification object:nil];
+}
+
+- (void)initAnnotationBar {
+    self.annotationManage = [[CAnnotationManage alloc] initWithPDFView:self.pdfListView];
+        
+    self.annotationBar = [[CPDFAnnotationBar alloc] initAnnotationManage:self.annotationManage];
+    
+    CGFloat height = 44.0;
+    if (@available(iOS 11.0, *))
+        height += self.view.safeAreaInsets.bottom;
+    
+    self.annotationBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
+    self.annotationBar.delegate = self;
+    [self.annotationBar setParentVC:self];
+    [self.view addSubview:self.annotationBar];
+}
+
+- (void)initWitNavigationTitle {
+    //titleButton
+    CNavigationBarTitleButton * navTitleButton = [[CNavigationBarTitleButton alloc] init];
+    self.titleButton = navTitleButton;
+    self.navigationTitle = NSLocalizedString(@"Annotation", nil);
+    [navTitleButton setImage:[UIImage imageNamed:@"syasarrow"] forState:UIControlStateNormal];
+    [navTitleButton addTarget:self action:@selector(titleButtonClickd:) forControlEvents:UIControlEventTouchUpInside];
+    [navTitleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
+    [navTitleButton setTitleColor:[CPDFColorUtils CAnyReverseBackgooundColor] forState:UIControlStateNormal];
+    self.titleButton.frame = CGRectMake(0, 0, 50, 30);
+    self.navigationItem.titleView = self.titleButton;
+}
+
+- (void)viewWillLayoutSubviews {
+    [super viewWillLayoutSubviews];
+    
+    if([self.popMenu superview]) {
+        if (@available(iOS 11.0, *)) {
+            [self.popMenu showMenuInRect:CGRectMake(self.view.frame.size.width - self.view.safeAreaInsets.right - 250, CGRectGetMaxY(self.navigationController.navigationBar.frame), 250, 250)];
+        } else {
+            // Fallback on earlier versions
+            [self.popMenu showMenuInRect:CGRectMake(self.view.frame.size.width - 250, CGRectGetMaxY(self.navigationController.navigationBar.frame), 250, 250)];
+        }
+    }
+    
+    CGFloat height = 44.0;
+    
+    if (@available(iOS 11.0, *))
+        height += self.view.safeAreaInsets.bottom;
+
+    if(CToolModelAnnotation == self.pdfListView.toolModel) {
+        if (@available(iOS 11.0, *)) {
+            self.annotationBar.frame = CGRectMake(self.view.safeAreaInsets.left, self.view.frame.size.height - height, self.view.frame.size.width- self.view.safeAreaInsets.left - self.view.safeAreaInsets.right, height);
+        } else {
+            self.annotationBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
+        }
+    } else {
+        self.annotationBar.frame = CGRectMake(0, self.view.bounds.size.height, self.view.frame.size.width, height);
+    }
+    
+    CGFloat tPosY = 0;
+    CGFloat tBottomY = 0;
+
+    if(CToolModelAnnotation == self.pdfListView.toolModel) {
+        if (!self.navigationController.navigationBarHidden) {
+            [UIView animateWithDuration:0.3 animations:^{
+                CGRect frame = self.annotationBar.frame;
+                frame.origin.y = self.view.bounds.size.height-frame.size.height;
+                self.annotationBar.frame = frame;
+            }];
+            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
+            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
+            
+            tBottomY = self.annotationBar.frame.size.height;
+        } else {
+            [UIView animateWithDuration:0.3 animations:^{
+                CGRect frame = self.annotationBar.frame;
+                frame.origin.y = self.view.bounds.size.height;
+                self.annotationBar.frame = frame;
+            }];
+        }
+    } else {
+        tPosY = 0;
+        if (!self.navigationController.navigationBarHidden) {
+            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
+            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
+        }
+    }
+    
+    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 10 + self.annotationBar.frame.size.height;
+            self.pdfListView.documentView.contentInset = inset;
+    } else{
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 0;
+            self.pdfListView.documentView.contentInset = inset;
+    }
+}
+
+#pragma mark - Public Methods
+
+- (void)selectDocumentRefresh {
+    self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
+    [self.annotationBar updatePropertiesButtonState];
+    [self.annotationBar reloadData];
+    [self.annotationBar updateUndoRedoState];
+}
+
+#pragma mark - Private Methods
+
+- (void)enterAnnotationMode {
+    self.pdfListView.toolModel = CToolModelAnnotation;
+    self.navigationTitle = NSLocalizedString(@"Annotation", nil);
+    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
+    
+    CGFloat tPosY = 0;
+    CGFloat tBottomY = 0;
+    CGRect frame = self.annotationBar.frame;
+    frame.origin.y = self.view.bounds.size.height-frame.size.height;
+    self.annotationBar.frame = frame;
+    
+    CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
+    tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
+    tBottomY = self.annotationBar.frame.size.height;
+    
+    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 10 + self.annotationBar.frame.size.height;
+            self.pdfListView.documentView.contentInset = inset;
+    } else{
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 0;
+            self.pdfListView.documentView.contentInset = inset;
+    }
+}
+
+- (void)enterViewerMode {
+    
+    if (self.pdfListView.isEdited) {
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            [self.pdfListView commitEditing];
+            dispatch_async(dispatch_get_main_queue(), ^{
+                [self.pdfListView endOfEditing];
+            });
+        });
+    } else {
+        [self.pdfListView endOfEditing];
+    }
+    
+    self.pdfListView.toolModel = CToolModelViewer;
+    self.navigationTitle = NSLocalizedString(@"Viewer", nil);
+    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
+    
+    CGRect frame = self.annotationBar.frame;
+    frame.origin.y = self.view.bounds.size.height;
+    self.annotationBar.frame = frame;
+    
+    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 10 + self.annotationBar.frame.size.height;
+            self.pdfListView.documentView.contentInset = inset;
+    } else{
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 0;
+            self.pdfListView.documentView.contentInset = inset;
+    }
+}
+
+- (void)titleButtonClickd:(UIButton *) button {
+    CPDFToolsViewController * toolsVc = [[CPDFToolsViewController alloc] initCustomizeWithToolArrays:@[@(CToolModelViewer),@(CToolModelAnnotation)]];
+    toolsVc.delegate = self;
+    AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
+    presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:toolsVc presentingViewController:self];
+    toolsVc.transitioningDelegate = presentationController;
+    [self presentViewController:toolsVc animated:YES completion:nil];
+}
+
+- (void)navigationRightItemBota {
+    CPDFBOTAViewController *botaViewController = [[CPDFBOTAViewController alloc] initCustomizeWithPDFView:self.pdfListView navArrays:@[@(CPDFBOTATypeStateOutline),@(CPDFBOTATypeStateBookmark),@(CPDFBOTATypeStateAnnotation)]];
+    botaViewController.delegate = self;
+    
+    AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
+   
+    presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:botaViewController presentingViewController:self];
+    botaViewController.transitioningDelegate = presentationController;
+    
+    [self presentViewController:botaViewController animated:YES completion:nil];
+}
+
+- (void)setTitleRefresh {
+    if (CToolModelAnnotation == self.pdfListView.toolModel) {
+        [self enterAnnotationMode];
+    } else if (CToolModelViewer == self.pdfListView.toolModel) {
+        [self enterViewerMode];
+    }
+}
+
+#pragma mark - CPDFViewDelegate
+
+- (void)PDFViewShouldBeginEditing:(CPDFView *)pdfView textView:(UITextView *)textView forAnnotation:(CPDFFreeTextAnnotation *)annotation {
+    CPDFKeyboardToolbar *keyBoadrdToolbar = [[CPDFKeyboardToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 50)];
+    keyBoadrdToolbar.delegate = self;
+    [keyBoadrdToolbar bindToTextView:textView];
+}
+
+#pragma mark - CPDFListViewDelegate
+
+- (void)PDFListViewPerformTouchEnded:(CPDFListView *)pdfView {
+    CGFloat tPosY = 0;
+    CGFloat tBottomY = 0;
+
+    if(CToolModelAnnotation == self.pdfListView.toolModel) {
+        if (self.navigationController.navigationBarHidden) {
+            [self.navigationController setNavigationBarHidden:NO animated:YES];
+            [UIView animateWithDuration:0.3 animations:^{
+                CGRect frame = self.annotationBar.frame;
+                frame.origin.y = self.view.bounds.size.height-frame.size.height;
+                self.annotationBar.frame = frame;
+                self.pdfListView.pageSliderView.alpha = 1.0;
+                self.annotationBar.topToolBar.alpha = 1.0;
+                self.annotationBar.drawPencilFuncView.alpha = 1.0;
+            }];
+            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
+            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
+            
+            tBottomY = self.annotationBar.frame.size.height;
+        } else {
+            [self.navigationController setNavigationBarHidden:YES animated:YES];
+            [UIView animateWithDuration:0.3 animations:^{
+                CGRect frame = self.annotationBar.frame;
+                frame.origin.y = self.view.bounds.size.height;
+                self.annotationBar.frame = frame;
+                self.pdfListView.pageSliderView.alpha = 0.0;
+                self.annotationBar.topToolBar.alpha = 0.0;
+                self.annotationBar.drawPencilFuncView.alpha = 0.0;
+
+            }];
+        }
+    } else {
+        CGFloat tPosY = 0;
+        if (self.navigationController.navigationBarHidden) {
+            [self.navigationController setNavigationBarHidden:NO animated:YES];
+            [UIView animateWithDuration:0.3 animations:^{
+                self.pdfListView.pageSliderView.alpha = 1.0;
+            }];
+            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
+            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
+
+        } else {
+            [self.navigationController setNavigationBarHidden:YES animated:YES];
+            [UIView animateWithDuration:0.3 animations:^{
+                self.pdfListView.pageSliderView.alpha = 0.0;
+            }];
+        }
+    }
+    
+    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 10 + self.annotationBar.frame.size.height;
+            self.pdfListView.documentView.contentInset = inset;
+    } else{
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = 0;
+            self.pdfListView.documentView.contentInset = inset;
+    }
+}
+
+- (void)PDFListViewEditNote:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
+    if([annotation isKindOfClass:[CPDFLinkAnnotation class]]) {
+        [self.annotationBar buttonItemClicked_openAnnotation:self.titleButton];
+    } else {
+        CGRect rect = [self.pdfListView convertRect:annotation.bounds fromPage:annotation.page];
+        CPDFNoteOpenViewController *noteVC = [[CPDFNoteOpenViewController alloc]initWithAnnotation:annotation];
+        noteVC.delegate = self;
+        [noteVC showViewController:self inRect:rect];
+    }
+}
+
+- (void)PDFListViewChangedAnnotationType:(CPDFListView *)pdfListView forAnnotationMode:(CPDFViewAnnotationMode)annotationMode {
+    [self.annotationBar reloadData];
+}
+
+- (void)PDFListViewPerformAddStamp:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
+    [self.annotationBar addStampAnnotationWithPage:page point:point];
+}
+
+- (void)PDFListViewPerformAddImage:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
+    [self.annotationBar addImageAnnotationWithPage:page point:point];
+}
+
+- (BOOL)PDFListViewerTouchEndedIsAudioRecordMedia:(CPDFListView *)pdfListView {
+    if (CPDFMediaStateAudioRecord == [CPDFMediaManager shareManager].mediaState) {
+        [self PDFListViewPerformTouchEnded:self.pdfListView];
+        return YES;
+    }
+    return NO;
+}
+
+- (void)PDFListViewPerformCancelMedia:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
+    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
+}
+
+- (void)PDFListViewPerformRecordMedia:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
+    if([self.soundPlayBar superview]) {
+        if(self.soundPlayBar.soundState == CPDFSoundStatePlay) {
+            [self.soundPlayBar stopAudioPlay];
+            [self.soundPlayBar removeFromSuperview];
+        } else if (self.soundPlayBar.soundState == CPDFSoundStateRecord) {
+            [self.soundPlayBar stopRecord];
+            [self.soundPlayBar removeFromSuperview];
+        }
+    }
+    
+    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
+    if (authStatus == AVAuthorizationStatusNotDetermined || authStatus == AVAuthorizationStatusDenied) {
+        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
+            if (granted) {
+                
+            } else {
+                NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
+                if ([[UIApplication sharedApplication] canOpenURL:url]) {
+                    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
+                }
+            }
+        }];
+    }
+    
+    if (authStatus == AVAuthorizationStatusAuthorized) {
+        NSInteger pageindex = [self.pdfListView.document indexForPage:page];
+        [CPDFMediaManager shareManager].mediaState = CPDFMediaStateAudioRecord;
+        [CPDFMediaManager shareManager].pageNum = pageindex;
+        [CPDFMediaManager shareManager].ptInPdf = point;
+        
+        _soundPlayBar = [[CPDFSoundPlayBar alloc] initWithStyle:self.annotationManage.annotStyle];
+        _soundPlayBar.delegate = self;
+        [_soundPlayBar showInView:self.pdfListView soundState:CPDFSoundStateRecord];
+        [_soundPlayBar startAudioRecord];
+       
+    } else {
+        return;
+    }
+}
+
+- (void)PDFListViewPerformPlay:(CPDFListView *)pdfView forAnnotation:(CPDFSoundAnnotation *)annotation {
+    NSString *filePath = [annotation mediaPath];
+    if (filePath) {
+        NSURL *URL = [NSURL fileURLWithPath:filePath];
+        
+        _soundPlayBar = [[CPDFSoundPlayBar alloc] initWithStyle:self.annotationManage.annotStyle];
+        _soundPlayBar.delegate = self;
+        [_soundPlayBar showInView:self.pdfListView soundState:CPDFSoundStatePlay];
+        [_soundPlayBar setURL:URL];
+        [_soundPlayBar startAudioPlay];
+        [CPDFMediaManager shareManager].mediaState = CPDFMediaStateVedioPlaying;
+    }
+}
+
+- (void)PDFListViewPerformSignatureWidget:(CPDFListView *)pdfView forAnnotation:(CPDFSignatureWidgetAnnotation *)annotation {
+    [self.annotationBar openSignatureAnnotation:annotation];
+}
+
+- (void)PDFListViewEditProperties:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
+    [self.annotationBar buttonItemClicked_openAnnotation:self.titleButton];
+}
+
+#pragma mark - CPDFKeyboardToolbarDelegate
+
+- (void)keyboardShouldDissmiss:(CPDFKeyboardToolbar *)toolbar {
+    [self.pdfListView commitEditAnnotationFreeText];
+    self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
+    [self.annotationBar reloadData];
+}
+
+#pragma mark - CPDFBOTAViewControllerDelegate
+
+- (void)botaViewControllerDismiss:(CPDFBOTAViewController *)botaViewController {
+    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+}
+
+#pragma mark - CPDFAnnotationBarDelegate
+
+- (void)annotationBarClick:(CPDFAnnotationBar *)annotationBar clickAnnotationMode:(CPDFViewAnnotationMode)annotationMode forSelected:(BOOL)isSelected forButton:(UIButton *)button {
+    if(CPDFViewAnnotationModeInk == annotationMode || CPDFViewAnnotationModePencilDrawing == annotationMode) {
+        CGFloat tPosY = 0;
+        if(isSelected) {
+            [self.navigationController setNavigationBarHidden:YES animated:YES];
+            [UIView animateWithDuration:0.3 animations:^{
+                CGRect frame = self.annotationBar.frame;
+                frame.origin.y = self.view.bounds.size.height;
+                self.annotationBar.frame = frame;
+                self.pdfListView.pageSliderView.alpha = 0.0;
+               
+                UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+                inset.bottom = 0;
+                self.pdfListView.documentView.contentInset = inset;
+
+            }];
+        } else {
+            [self.navigationController setNavigationBarHidden:NO animated:YES];
+            [UIView animateWithDuration:0.3 animations:^{
+                CGRect frame = self.annotationBar.frame;
+                frame.origin.y = self.view.bounds.size.height-frame.size.height;
+                self.annotationBar.frame = frame;
+                self.pdfListView.pageSliderView.alpha = 1.0;
+            }];
+            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
+            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
+
+            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
+            inset.bottom = self.annotationBar.frame.size.height;
+            self.pdfListView.documentView.contentInset = inset;
+        }
+    } else if (CPDFViewAnnotationModeSound == annotationMode && !isSelected) {
+        if(CPDFSoundStateRecord == self.soundPlayBar.soundState) {
+            [self.soundPlayBar stopRecord];
+
+        } else if (CPDFSoundStatePlay== self.soundPlayBar.soundState) {
+            [self.soundPlayBar stopAudioPlay];
+        }
+    }
+}
+
+#pragma mark - CPDFNoteOpenViewControllerDelegate
+
+- (void)getNoteOpenViewController:(CPDFNoteOpenViewController *)noteOpenVC content:(NSString *)content isDelete:(BOOL)isDelete {
+    if (isDelete) {
+        [noteOpenVC.annotation.page removeAnnotation:noteOpenVC.annotation];
+        [self.pdfListView setNeedsDisplayForPage:noteOpenVC.annotation.page];
+        if([self.pdfListView.activeAnnotations containsObject:noteOpenVC.annotation]) {
+            NSMutableArray *activeAnnotations = [NSMutableArray arrayWithArray:self.pdfListView.activeAnnotations];
+            [activeAnnotations removeObject:noteOpenVC.annotation];
+            [self.pdfListView updateActiveAnnotations:activeAnnotations];
+        }
+    } else {
+        if([noteOpenVC.annotation isKindOfClass:[CPDFMarkupAnnotation class]]) {
+            CPDFMarkupAnnotation *markupAnnotation = (CPDFMarkupAnnotation *)noteOpenVC.annotation;
+            [markupAnnotation setContents:content?:@""];
+        } else if(([noteOpenVC.annotation isKindOfClass:[CPDFTextAnnotation class]])){
+            if(content && content.length > 0) {
+                noteOpenVC.annotation.contents = content?:@"";
+            } else {
+                if([self.pdfListView.activeAnnotations containsObject:noteOpenVC.annotation]) {
+                    [self.pdfListView updateActiveAnnotations:@[]];
+                }
+                [noteOpenVC.annotation.page removeAnnotation:noteOpenVC.annotation];
+                [self.pdfListView setNeedsDisplayForPage:noteOpenVC.annotation.page];
+            }
+        } else {
+            noteOpenVC.annotation.contents = content?:@"";
+        }
+    }
+}
+
+#pragma mark - CPDFSoundPlayBarDelegate
+
+- (void)soundPlayBarRecordFinished:(CPDFSoundPlayBar *)soundPlayBar withFile:(NSString *)filePath {
+
+    CPDFPage *page = [self.pdfListView.document pageAtIndex:[CPDFMediaManager shareManager].pageNum];
+    CPDFSoundAnnotation *annotation = [[CPDFSoundAnnotation alloc] initWithDocument:self.pdfListView.document];
+    
+    if ([annotation setMediaPath:filePath]) {
+        CGRect bounds = annotation.bounds;
+        bounds.origin.x = [CPDFMediaManager shareManager].ptInPdf.x-bounds.size.width/2.0;
+        bounds.origin.y = [CPDFMediaManager shareManager].ptInPdf.y-bounds.size.height/2.0;
+        annotation.bounds = bounds;
+        [self.pdfListView addAnnotation:annotation forPage:page];
+    }
+
+    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
+    [self.pdfListView stopRecord];
+}
+
+- (void)soundPlayBarRecordCancel:(CPDFSoundPlayBar *)soundPlayBar {
+    if(CPDFSoundStateRecord == self.soundPlayBar.soundState) {
+        [self.pdfListView stopRecord];
+    }
+    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
+}
+
+- (void)soundPlayBarPlayClose:(CPDFSoundPlayBar *)soundPlayBar {
+    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
+}
+
+#pragma mark - Notification
+
+- (void)PDFPageDidRemoveAnnotationNotification:(NSNotification *)notification {
+    CPDFAnnotation *annotation = [notification object];
+
+    if ([annotation isKindOfClass:[CPDFSoundAnnotation class]]) {
+        [self.soundPlayBar stopAudioPlay];
+        if ([self.soundPlayBar isDescendantOfView:self.view]) {
+            [self.soundPlayBar removeFromSuperview];
+        }
+    }
+}
+
+#pragma mark - CPDFToolsViewControllerDelegate
+
+- (void)CPDFToolsViewControllerDismiss:(CPDFToolsViewController *) viewController selectItemAtIndex:(CToolModel)selectIndex {
+    if(CToolModelViewer == selectIndex) {
+        //viewwer
+        [self enterViewerMode];
+    }else{
+        //Annotation
+        [self enterAnnotationMode];
+    }
+}
+
+@end

Annotation-Ctrl-Demo/Annotation-Ctrl-Demo/Info.plist → Annotations/Annotations/Info.plist


+ 20 - 0
Annotations/Annotations/SceneDelegate.h

@@ -0,0 +1,20 @@
+//
+//  SceneDelegate.h
+//  Annotations
+//
+//  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 <UIKit/UIKit.h>
+
+@interface SceneDelegate : UIResponder <UIWindowSceneDelegate>
+
+@property (strong, nonatomic) UIWindow * window;
+
+@end
+

+ 63 - 0
Annotations/Annotations/SceneDelegate.m

@@ -0,0 +1,63 @@
+//
+//  SceneDelegate.m
+//  Annotations
+//
+//  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 "SceneDelegate.h"
+#import "AppDelegate.h"
+
+@interface SceneDelegate ()
+
+@end
+
+@implementation SceneDelegate
+
+
+- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions API_AVAILABLE(ios(13.0)){
+    UIWindow * window = [[UIWindow alloc] initWithWindowScene:scene];
+    
+    [[AppDelegate sharedAppDelegate] configWindow:window];
+}
+
+
+- (void)sceneDidDisconnect:(UIScene *)scene API_AVAILABLE(ios(13.0)){
+    // Called as the scene is being released by the system.
+    // This occurs shortly after the scene enters the background, or when its session is discarded.
+    // Release any resources associated with this scene that can be re-created the next time the scene connects.
+    // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
+}
+
+
+- (void)sceneDidBecomeActive:(UIScene *)scene API_AVAILABLE(ios(13.0)){
+    // Called when the scene has moved from an inactive state to an active state.
+    // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+}
+
+
+- (void)sceneWillResignActive:(UIScene *)scene API_AVAILABLE(ios(13.0)){
+    // Called when the scene will move from an active state to an inactive state.
+    // This may occur due to temporary interruptions (ex. an incoming phone call).
+}
+
+
+- (void)sceneWillEnterForeground:(UIScene *)scene API_AVAILABLE(ios(13.0)){
+    // Called as the scene transitions from the background to the foreground.
+    // Use this method to undo the changes made on entering the background.
+}
+
+
+- (void)sceneDidEnterBackground:(UIScene *)scene API_AVAILABLE(ios(13.0)){
+    // Called as the scene transitions from the foreground to the background.
+    // Use this method to save data, release shared resources, and store enough scene-specific state information
+    // to restore the scene back to its current state.
+}
+
+
+@end

+ 23 - 0
Annotations/Annotations/main.m

@@ -0,0 +1,23 @@
+//
+//  main.m
+//  Annotations
+//
+//  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 <UIKit/UIKit.h>
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+    NSString * appDelegateClassName;
+    @autoreleasepool {
+        // Setup code that might create autoreleased objects goes here.
+        appDelegateClassName = NSStringFromClass([AppDelegate class]);
+    }
+    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
+}

+ 0 - 467
ComPDFKit/ComPDFKit.xcodeproj/project.pbxproj

@@ -1,467 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 55;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		4F6B6C3C2A173F6D0030C94E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B6C3B2A173F6D0030C94E /* AppDelegate.m */; };
-		4F6B6C3F2A173F6D0030C94E /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B6C3E2A173F6D0030C94E /* SceneDelegate.m */; };
-		4F6B6C452A173F6D0030C94E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C432A173F6D0030C94E /* Main.storyboard */; };
-		4F6B6C472A173F6F0030C94E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C462A173F6F0030C94E /* Assets.xcassets */; };
-		4F6B6C4A2A173F6F0030C94E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C482A173F6F0030C94E /* LaunchScreen.storyboard */; };
-		4F6B6C4D2A173F6F0030C94E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B6C4C2A173F6F0030C94E /* main.m */; };
-		4F6B6C7C2A174D6E0030C94E /* Form_Widgets_Test.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C712A174D6E0030C94E /* Form_Widgets_Test.pdf */; };
-		4F6B6C7D2A174D6E0030C94E /* PDF32000_2008.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C722A174D6E0030C94E /* PDF32000_2008.pdf */; };
-		4F6B6C7E2A174D6E0030C94E /* Quick Start Guide.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C732A174D6E0030C94E /* Quick Start Guide.pdf */; };
-		4F6B6C802A174D6E0030C94E /* SDKLicense.xml in Resources */ = {isa = PBXBuildFile; fileRef = 4F6B6C792A174D6E0030C94E /* SDKLicense.xml */; };
-		4F6B6C812A174D6E0030C94E /* XPDXMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B6C7A2A174D6E0030C94E /* XPDXMLElement.m */; };
-		4F6B6C822A174D6E0030C94E /* XMLParseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B6C7B2A174D6E0030C94E /* XMLParseManager.m */; };
-		4F6B6C852A174D7C0030C94E /* compdfkit_tools.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F6B6C842A174D7C0030C94E /* compdfkit_tools.framework */; };
-		4F6B6C862A174D7C0030C94E /* compdfkit_tools.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4F6B6C842A174D7C0030C94E /* compdfkit_tools.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		4F6B6C882A174D7F0030C94E /* ComPDFKit.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F6B6C752A174D6E0030C94E /* ComPDFKit.xcframework */; };
-		4F6B6C892A174D7F0030C94E /* ComPDFKit.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4F6B6C752A174D6E0030C94E /* ComPDFKit.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
-		4F6B6C8C2A174EB80030C94E /* CPDFViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F6B6C8A2A174EB70030C94E /* CPDFViewController.m */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-		4F6B6C872A174D7C0030C94E /* Embed Frameworks */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = "";
-			dstSubfolderSpec = 10;
-			files = (
-				4F6B6C862A174D7C0030C94E /* compdfkit_tools.framework in Embed Frameworks */,
-				4F6B6C892A174D7F0030C94E /* ComPDFKit.xcframework in Embed Frameworks */,
-			);
-			name = "Embed Frameworks";
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-		4F6B6C372A173F6D0030C94E /* ComPDFKit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ComPDFKit.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		4F6B6C3A2A173F6D0030C94E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
-		4F6B6C3B2A173F6D0030C94E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
-		4F6B6C3D2A173F6D0030C94E /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = "<group>"; };
-		4F6B6C3E2A173F6D0030C94E /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = "<group>"; };
-		4F6B6C442A173F6D0030C94E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
-		4F6B6C462A173F6F0030C94E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
-		4F6B6C492A173F6F0030C94E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		4F6B6C4B2A173F6F0030C94E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		4F6B6C4C2A173F6F0030C94E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
-		4F6B6C712A174D6E0030C94E /* Form_Widgets_Test.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Form_Widgets_Test.pdf; sourceTree = "<group>"; };
-		4F6B6C722A174D6E0030C94E /* PDF32000_2008.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = PDF32000_2008.pdf; sourceTree = "<group>"; };
-		4F6B6C732A174D6E0030C94E /* Quick Start Guide.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "Quick Start Guide.pdf"; sourceTree = "<group>"; };
-		4F6B6C752A174D6E0030C94E /* ComPDFKit.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = ComPDFKit.xcframework; sourceTree = "<group>"; };
-		4F6B6C772A174D6E0030C94E /* XPDXMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPDXMLElement.h; sourceTree = "<group>"; };
-		4F6B6C782A174D6E0030C94E /* XMLParseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLParseManager.h; sourceTree = "<group>"; };
-		4F6B6C792A174D6E0030C94E /* SDKLicense.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = SDKLicense.xml; sourceTree = "<group>"; };
-		4F6B6C7A2A174D6E0030C94E /* XPDXMLElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPDXMLElement.m; sourceTree = "<group>"; };
-		4F6B6C7B2A174D6E0030C94E /* XMLParseManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLParseManager.m; sourceTree = "<group>"; };
-		4F6B6C842A174D7C0030C94E /* compdfkit_tools.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = compdfkit_tools.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		4F6B6C8A2A174EB70030C94E /* CPDFViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPDFViewController.m; sourceTree = "<group>"; };
-		4F6B6C8B2A174EB70030C94E /* CPDFViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFViewController.h; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		4F6B6C342A173F6D0030C94E /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				4F6B6C852A174D7C0030C94E /* compdfkit_tools.framework in Frameworks */,
-				4F6B6C882A174D7F0030C94E /* ComPDFKit.xcframework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		4F6B6C2E2A173F6D0030C94E = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C392A173F6D0030C94E /* ComPDFKit */,
-				4F6B6C382A173F6D0030C94E /* Products */,
-				4F6B6C832A174D7C0030C94E /* Frameworks */,
-			);
-			sourceTree = "<group>";
-		};
-		4F6B6C382A173F6D0030C94E /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C372A173F6D0030C94E /* ComPDFKit.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		4F6B6C392A173F6D0030C94E /* ComPDFKit */ = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C742A174D6E0030C94E /* Lib */,
-				4F6B6C762A174D6E0030C94E /* SDKLicense */,
-				4F6B6C702A174D6E0030C94E /* TestFile */,
-				4F6B6C3A2A173F6D0030C94E /* AppDelegate.h */,
-				4F6B6C3B2A173F6D0030C94E /* AppDelegate.m */,
-				4F6B6C3D2A173F6D0030C94E /* SceneDelegate.h */,
-				4F6B6C3E2A173F6D0030C94E /* SceneDelegate.m */,
-				4F6B6C8B2A174EB70030C94E /* CPDFViewController.h */,
-				4F6B6C8A2A174EB70030C94E /* CPDFViewController.m */,
-				4F6B6C432A173F6D0030C94E /* Main.storyboard */,
-				4F6B6C462A173F6F0030C94E /* Assets.xcassets */,
-				4F6B6C482A173F6F0030C94E /* LaunchScreen.storyboard */,
-				4F6B6C4B2A173F6F0030C94E /* Info.plist */,
-				4F6B6C4C2A173F6F0030C94E /* main.m */,
-			);
-			path = ComPDFKit;
-			sourceTree = "<group>";
-		};
-		4F6B6C702A174D6E0030C94E /* TestFile */ = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C712A174D6E0030C94E /* Form_Widgets_Test.pdf */,
-				4F6B6C722A174D6E0030C94E /* PDF32000_2008.pdf */,
-				4F6B6C732A174D6E0030C94E /* Quick Start Guide.pdf */,
-			);
-			name = TestFile;
-			path = ../../TestFile;
-			sourceTree = "<group>";
-		};
-		4F6B6C742A174D6E0030C94E /* Lib */ = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C752A174D6E0030C94E /* ComPDFKit.xcframework */,
-			);
-			name = Lib;
-			path = ../../Lib;
-			sourceTree = "<group>";
-		};
-		4F6B6C762A174D6E0030C94E /* SDKLicense */ = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C772A174D6E0030C94E /* XPDXMLElement.h */,
-				4F6B6C782A174D6E0030C94E /* XMLParseManager.h */,
-				4F6B6C792A174D6E0030C94E /* SDKLicense.xml */,
-				4F6B6C7A2A174D6E0030C94E /* XPDXMLElement.m */,
-				4F6B6C7B2A174D6E0030C94E /* XMLParseManager.m */,
-			);
-			name = SDKLicense;
-			path = ../../SDKLicense;
-			sourceTree = "<group>";
-		};
-		4F6B6C832A174D7C0030C94E /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				4F6B6C842A174D7C0030C94E /* compdfkit_tools.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		4F6B6C362A173F6D0030C94E /* ComPDFKit */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 4F6B6C502A173F700030C94E /* Build configuration list for PBXNativeTarget "ComPDFKit" */;
-			buildPhases = (
-				4F6B6C332A173F6D0030C94E /* Sources */,
-				4F6B6C342A173F6D0030C94E /* Frameworks */,
-				4F6B6C352A173F6D0030C94E /* Resources */,
-				4F6B6C872A174D7C0030C94E /* Embed Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = ComPDFKit;
-			productName = ComPDFKit;
-			productReference = 4F6B6C372A173F6D0030C94E /* ComPDFKit.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		4F6B6C2F2A173F6D0030C94E /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				BuildIndependentTargetsInParallel = 1;
-				LastUpgradeCheck = 1420;
-				TargetAttributes = {
-					4F6B6C362A173F6D0030C94E = {
-						CreatedOnToolsVersion = 14.2;
-					};
-				};
-			};
-			buildConfigurationList = 4F6B6C322A173F6D0030C94E /* Build configuration list for PBXProject "ComPDFKit" */;
-			compatibilityVersion = "Xcode 13.0";
-			developmentRegion = en;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				Base,
-			);
-			mainGroup = 4F6B6C2E2A173F6D0030C94E;
-			productRefGroup = 4F6B6C382A173F6D0030C94E /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				4F6B6C362A173F6D0030C94E /* ComPDFKit */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
-		4F6B6C352A173F6D0030C94E /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				4F6B6C7E2A174D6E0030C94E /* Quick Start Guide.pdf in Resources */,
-				4F6B6C4A2A173F6F0030C94E /* LaunchScreen.storyboard in Resources */,
-				4F6B6C472A173F6F0030C94E /* Assets.xcassets in Resources */,
-				4F6B6C802A174D6E0030C94E /* SDKLicense.xml in Resources */,
-				4F6B6C7D2A174D6E0030C94E /* PDF32000_2008.pdf in Resources */,
-				4F6B6C7C2A174D6E0030C94E /* Form_Widgets_Test.pdf in Resources */,
-				4F6B6C452A173F6D0030C94E /* Main.storyboard in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		4F6B6C332A173F6D0030C94E /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				4F6B6C8C2A174EB80030C94E /* CPDFViewController.m in Sources */,
-				4F6B6C812A174D6E0030C94E /* XPDXMLElement.m in Sources */,
-				4F6B6C3C2A173F6D0030C94E /* AppDelegate.m in Sources */,
-				4F6B6C822A174D6E0030C94E /* XMLParseManager.m in Sources */,
-				4F6B6C4D2A173F6F0030C94E /* main.m in Sources */,
-				4F6B6C3F2A173F6D0030C94E /* SceneDelegate.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		4F6B6C432A173F6D0030C94E /* Main.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				4F6B6C442A173F6D0030C94E /* Base */,
-			);
-			name = Main.storyboard;
-			sourceTree = "<group>";
-		};
-		4F6B6C482A173F6F0030C94E /* LaunchScreen.storyboard */ = {
-			isa = PBXVariantGroup;
-			children = (
-				4F6B6C492A173F6F0030C94E /* Base */,
-			);
-			name = LaunchScreen.storyboard;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		4F6B6C4E2A173F6F0030C94E /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = dwarf;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				ENABLE_TESTABILITY = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
-				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
-				MTL_FAST_MATH = YES;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = iphoneos;
-			};
-			name = Debug;
-		};
-		4F6B6C4F2A173F6F0030C94E /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ANALYZER_NONNULL = YES;
-				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
-				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
-				CLANG_ENABLE_MODULES = YES;
-				CLANG_ENABLE_OBJC_ARC = YES;
-				CLANG_ENABLE_OBJC_WEAK = YES;
-				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_COMMA = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
-				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INFINITE_RECURSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
-				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
-				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
-				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
-				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
-				CLANG_WARN_STRICT_PROTOTYPES = YES;
-				CLANG_WARN_SUSPICIOUS_MOVE = YES;
-				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
-				CLANG_WARN_UNREACHABLE_CODE = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				COPY_PHASE_STRIP = NO;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				ENABLE_NS_ASSERTIONS = NO;
-				ENABLE_STRICT_OBJC_MSGSEND = YES;
-				GCC_C_LANGUAGE_STANDARD = gnu11;
-				GCC_NO_COMMON_BLOCKS = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 16.2;
-				MTL_ENABLE_DEBUG_INFO = NO;
-				MTL_FAST_MATH = YES;
-				SDKROOT = iphoneos;
-				VALIDATE_PRODUCT = YES;
-			};
-			name = Release;
-		};
-		4F6B6C512A173F700030C94E /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
-				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = Q43DRF894U;
-				ENABLE_BITCODE = NO;
-				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
-				GENERATE_INFOPLIST_FILE = YES;
-				INFOPLIST_FILE = ComPDFKit/Info.plist;
-				INFOPLIST_KEY_NSCameraUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSMicrophoneUsageDescription = "Your consent is required before you could access the function.";
-				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Enable photo access so that you can create scans with your photos.";
-				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
-				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				MARKETING_VERSION = 1.0;
-				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.demo;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_EMIT_LOC_STRINGS = YES;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Debug;
-		};
-		4F6B6C522A173F700030C94E /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
-				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = 4GGQPGRTSV;
-				ENABLE_BITCODE = NO;
-				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
-				GENERATE_INFOPLIST_FILE = YES;
-				INFOPLIST_FILE = ComPDFKit/Info.plist;
-				INFOPLIST_KEY_NSCameraUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSMicrophoneUsageDescription = "Your consent is required before you could access the function.";
-				INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Enable camera access so that you can create scans with your camera.";
-				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Enable photo access so that you can create scans with your photos.";
-				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
-				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
-				LD_RUNPATH_SEARCH_PATHS = (
-					"$(inherited)",
-					"@executable_path/Frameworks",
-				);
-				MARKETING_VERSION = 1.0;
-				PRODUCT_BUNDLE_IDENTIFIER = com.compdfkit.demo;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_EMIT_LOC_STRINGS = YES;
-				TARGETED_DEVICE_FAMILY = "1,2";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		4F6B6C322A173F6D0030C94E /* Build configuration list for PBXProject "ComPDFKit" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				4F6B6C4E2A173F6F0030C94E /* Debug */,
-				4F6B6C4F2A173F6F0030C94E /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		4F6B6C502A173F700030C94E /* Build configuration list for PBXNativeTarget "ComPDFKit" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				4F6B6C512A173F700030C94E /* Debug */,
-				4F6B6C522A173F700030C94E /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 4F6B6C2F2A173F6D0030C94E /* Project object */;
-}

+ 0 - 7
ComPDFKit/ComPDFKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "self:">
-   </FileRef>
-</Workspace>

+ 0 - 8
ComPDFKit/ComPDFKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -1,8 +0,0 @@
-<?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>IDEDidComputeMac32BitWarning</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 78
ComPDFKit/ComPDFKit.xcodeproj/xcshareddata/xcschemes/ComPDFKit.xcscheme

@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1420"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "4F6B6C362A173F6D0030C94E"
-               BuildableName = "ComPDFKit.app"
-               BlueprintName = "ComPDFKit"
-               ReferencedContainer = "container:ComPDFKit.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "4F6B6C362A173F6D0030C94E"
-            BuildableName = "ComPDFKit.app"
-            BlueprintName = "ComPDFKit"
-            ReferencedContainer = "container:ComPDFKit.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "4F6B6C362A173F6D0030C94E"
-            BuildableName = "ComPDFKit.app"
-            BlueprintName = "ComPDFKit"
-            ReferencedContainer = "container:ComPDFKit.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 0 - 110
ComPDFKit/ComPDFKit/AppDelegate.m

@@ -1,110 +0,0 @@
-//
-//  AppDelegate.m
-//  ComPDFKit
-//
-//  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 "AppDelegate.h"
-
-#import <ComPDFKit/ComPDFKit.h>
-#import <compdfkit_tools/compdfkit_tools.h>
-
-#import "CPDFViewController.h"
-#import "XMLParseManager.h"
-
-static AppDelegate *appDelegate = NULL;
-
-@interface AppDelegate ()
-
-@property (nonatomic, strong) UIWindow *window;
-
-@property (nonatomic, strong) XMLParseManager *manager;
-
-@end
-
-@implementation AppDelegate
-
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-    // Override point for customization after application launch.
-    NSString *path = [[NSBundle mainBundle]pathForResource:@"SDKLicense" ofType:@"xml"];
-    NSURL *url = [NSURL fileURLWithPath:path];
-    _manager = [[XMLParseManager alloc]init];
-    [_manager parseXMLWithURL:url completion:^(BOOL SUC, XPDXMLElement *data,NSError *error) {
-        if (SUC) {
-            NSDictionary * attribute = data.attribute;
-            NSString * key = attribute[@"key"];
-            NSString * secret = attribute[@"secret"];
-            [CPDFKit setLicenseKey:key secret:secret];
-            
-            if (@available(iOS 13.0, *)) {
-                
-            } else {
-                UIWindow *windows = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
-                [self configWindow:windows];
-
-            }
-            
-        }else{
-            NSLog(@"error = %@",error);
-        }
-    }];
-
-    return YES;
-}
-
-- (void)configWindow:(UIWindow *)window {
-    self.window = window;
-    self.window.backgroundColor = [UIColor whiteColor];
-    
-    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Quick Start Guide" ofType:@"pdf"];
-    NSString *documentFolder = [NSHomeDirectory() stringByAppendingFormat:@"/%@/%@", @"Documents",@"Samples"];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:documentFolder])
-        [[NSFileManager defaultManager] createDirectoryAtURL:[NSURL fileURLWithPath:documentFolder] withIntermediateDirectories:YES attributes:nil error:nil];
-    
-    NSString * documentPath = [documentFolder stringByAppendingPathComponent:filePath.lastPathComponent];
-    if (![[NSFileManager defaultManager] fileExistsAtPath:documentPath])
-        [[NSFileManager defaultManager] copyItemAtURL:[NSURL fileURLWithPath:filePath] toURL:[NSURL fileURLWithPath:documentPath] error:nil];
-    
-    CPDFViewController *pdfViewController = [[CPDFViewController alloc] initWithFilePath:documentPath password:nil];
-    CNavigationController *navController = [[CNavigationController alloc]initWithRootViewController:pdfViewController];
-
-    self.window.rootViewController = navController;
-    
-    [self.window makeKeyAndVisible];
-
-}
-
-+ (AppDelegate *)sharedAppDelegate {
-    if (!appDelegate)
-        appDelegate = [[AppDelegate alloc] init];
-    
-    return appDelegate;
-}
-
-#pragma mark - UISceneSession lifecycle
-
-
-- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
-    // Called when a new scene session is being created.
-    // Use this method to select a configuration to create the new scene with.
-    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
-}
-
-
-- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
-    // Called when the user discards a scene session.
-    // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
-    // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
-}
-
-
-@end

+ 0 - 21
ComPDFKit/ComPDFKit/CPDFViewController.h

@@ -1,21 +0,0 @@
-//
-//  ViewController.h
-//   ]Edit-Ctrl-Demo
-//
-//  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_tools/compdfkit_tools.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface CPDFViewController : CPDFViewBaseController <CPDFFormBarDelegate>
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 820
ComPDFKit/ComPDFKit/CPDFViewController.m

@@ -1,820 +0,0 @@
-//
-//  CPDFViewController.m
-//   Edit-Ctrl-Demo
-//
-//  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 "CPDFViewController.h"
-
-#import <ComPDFKit/ComPDFKit.h>
-#import <compdfkit_tools/compdfkit_tools.h>
-#import <AVFAudio/AVFAudio.h>
-#import <AVFoundation/AVFoundation.h>
-
-@interface CPDFViewController () <CPDFSoundPlayBarDelegate,CPDFAnnotationBarDelegate,CPDFToolsViewControllerDelegate,CPDFNoteOpenViewControllerDelegate,CPDFBOTAViewControllerDelegate,CPDFEditToolBarDelegate,CPDFFormBarDelegate,CPDFListViewDelegate,CPDFSignatureViewControllerDelegate,CPDFPageEditViewControllerDelegate,CPDFKeyboardToolbarDelegate>
-
-@property(nonatomic, strong) CPDFAnnotationBar *annotationBar;
-
-@property (nonatomic, strong) CPDFFormBar *formBar;
-
-@property(nonatomic, strong) CPDFSoundPlayBar *soundPlayBar;
-
-@property(nonatomic, strong) CAnnotationManage *annotationManage;
-
-@property(nonatomic, strong) CPDFEditToolBar * toolBar;
-
-@property(nonatomic, strong) CPDFEditViewController *baseVC;
-
-@property(nonatomic, assign) CPDFEditMode editMode;
-
-@property(nonatomic, strong) CPDFSignatureWidgetAnnotation * signatureAnnotation;
-
-@end
-
-@implementation CPDFViewController
-
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    
-   self.pdfListView.toolModel = CToolModelViewer;
-    
-    CPDFEditingConfig *editingConfig = [[CPDFEditingConfig alloc]init];
-    editingConfig.editingBorderWidth = 1.0;
-    editingConfig.editingOffsetGap = 5;
-    self.pdfListView.editingConfig = editingConfig;
-    
-    [self initAnnotationBar];
-    [self initWithEditTool];
-    [self initWithFormTool];
-
-    [self enterViewerMode];
-    
-    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(PDFPageDidRemoveAnnotationNotification:) name:CPDFPageDidRemoveAnnotationNotification object:nil];
-}
-
-- (void)initAnnotationBar {
-    self.annotationManage = [[CAnnotationManage alloc] initWithPDFView:self.pdfListView];
-        
-    self.annotationBar = [[CPDFAnnotationBar alloc] initAnnotationManage:self.annotationManage];
-    
-    CGFloat height = 44.0;
-    if (@available(iOS 11.0, *))
-        height += self.view.safeAreaInsets.bottom;
-    
-    self.annotationBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
-    self.annotationBar.delegate = self;
-    [self.annotationBar setParentVC:self];
-    [self.view addSubview:self.annotationBar];
-}
-
-- (void)initWithEditTool {
-    if(!self.toolBar){
-        self.toolBar = [[CPDFEditToolBar alloc] initWithPDFView:self.pdfListView];
-    }
-    
-    self.toolBar.delegate = self;
-    [self.view addSubview:self.toolBar];
-}
-
-- (void)initWithFormTool {
-    if(!self.formBar){
-        self.formBar = [[CPDFFormBar  alloc] initAnnotationManage:self.annotationManage];
-    }
-    self.formBar.delegate = self;
-    self.formBar.parentVC = self;
-    [self.view addSubview:self.formBar];
-}
-
-- (void)initWitNavigationTitle {
-    //titleButton
-    CNavigationBarTitleButton * navTitleButton = [[CNavigationBarTitleButton alloc] init];
-    self.titleButton = navTitleButton;
-    self.navigationTitle = NSLocalizedString(@"View", nil);
-    [navTitleButton setImage:[UIImage imageNamed:@"syasarrow"] forState:UIControlStateNormal];
-    [navTitleButton addTarget:self action:@selector(titleButtonClickd:) forControlEvents:UIControlEventTouchUpInside];
-    [navTitleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-    [navTitleButton setTitleColor:[CPDFColorUtils CAnyReverseBackgooundColor] forState:UIControlStateNormal];
-    self.titleButton.frame = CGRectMake(0, 0, 50, 30);
-    self.navigationItem.titleView = self.titleButton;
-}
-
-- (void)viewWillLayoutSubviews {
-    [super viewWillLayoutSubviews];
-    if([self.popMenu superview]) {
-        if (@available(iOS 11.0, *)) {
-            [self.popMenu showMenuInRect:CGRectMake(self.view.frame.size.width - self.view.safeAreaInsets.right - 250, CGRectGetMaxY(self.navigationController.navigationBar.frame), 250, 250)];
-        } else {
-            // Fallback on earlier versions
-            [self.popMenu showMenuInRect:CGRectMake(self.view.frame.size.width - 250, CGRectGetMaxY(self.navigationController.navigationBar.frame), 250, 250)];
-        }
-    }
-    
-    CGFloat height = 44.0;
-    
-    if (@available(iOS 11.0, *))
-        height += self.view.safeAreaInsets.bottom;
-
-    CGFloat bottomHeight = 0;
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        self.annotationBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
-        bottomHeight = self.self.annotationBar.frame.size.height;
-    } else if(CToolModelEdit == self.pdfListView.toolModel){
-        self.toolBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
-        bottomHeight = self.self.toolBar.frame.size.height;
-    } else if(CToolModelForm == self.pdfListView.toolModel){
-        self.formBar.frame = CGRectMake(0, self.view.frame.size.height - height, self.view.frame.size.width, height);
-        bottomHeight = self.self.formBar.frame.size.height;
-    }
-    
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        if (!self.navigationController.navigationBarHidden) {
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height-frame.size.height;
-                self.annotationBar.frame = frame;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-            
-            tBottomY = self.annotationBar.frame.size.height;
-        } else {
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height;
-                self.annotationBar.frame = frame;
-            }];
-        }
-    } else {
-        tPosY = 0;
-        if (!self.navigationController.navigationBarHidden) {
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-        }
-    }
-    
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + bottomHeight;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-        UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-}
-
-#pragma mark - Public Methods
-
-- (void)selectDocumentRefresh {
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
-        [self.annotationBar updatePropertiesButtonState];
-        [self.annotationBar reloadData];
-        [self.annotationBar updateUndoRedoState];
-    }else if(CToolModelForm == self.pdfListView.toolModel) {
-        [self.formBar initUndoRedo];
-    }
-}
-
-#pragma mark - Private
-
-- (void)enterEditMode {
-    [self selectDocumentRefresh];
-
-    self.toolBar.hidden = NO;
-    self.annotationBar.hidden = YES;
-    self.formBar.hidden = YES;
-    self.pdfListView.toolModel = CToolModelEdit;
-    [self.pdfListView beginEditingLoadType:CEditingLoadTypeText | CEditingLoadTypeImage];
-    self.navigationTitle = NSLocalizedString(@"Content Edit", nil);
-    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-    
-    [self.toolBar updateButtonState];
-    
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-    CGRect frame = self.toolBar.frame;
-    frame.origin.y = self.view.bounds.size.height-frame.size.height;
-    self.toolBar.frame = frame;
-    
-    [self viewWillLayoutSubviews];
-}
-
-- (void)enterAnnotationMode {
-    self.toolBar.hidden = YES;
-    self.annotationBar.hidden = NO;
-    self.formBar.hidden = YES;
-    if (self.pdfListView.isEdited) {
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-            [self.pdfListView commitEditing];
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [self.pdfListView endOfEditing];
-            });
-        });
-    } else {
-        [self.pdfListView endOfEditing];
-    }
-    self.pdfListView.toolModel = CToolModelAnnotation;
-    self.navigationTitle = NSLocalizedString(@"Annotation", nil);
-    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-    
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-    CGRect frame = self.annotationBar.frame;
-    frame.origin.y = self.view.bounds.size.height-frame.size.height;
-    self.annotationBar.frame = frame;
-    
-    CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-    tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-    tBottomY = self.annotationBar.frame.size.height;
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-
-    [self viewWillLayoutSubviews];
-}
-
-- (void)enterViewerMode {
-    self.toolBar.hidden = YES;
-    self.formBar.hidden = YES;
-    self.annotationBar.hidden = YES;
-    if (self.pdfListView.isEdited) {
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-            [self.pdfListView commitEditing];
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [self.pdfListView endOfEditing];
-            });
-        });
-    } else {
-        [self.pdfListView endOfEditing];
-    }
-    self.pdfListView.toolModel = CToolModelViewer;
-    self.navigationTitle = NSLocalizedString(@"Viewer", nil);
-    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-
-    CGRect frame = self.annotationBar.frame;
-    frame.origin.y = self.view.bounds.size.height;
-    self.annotationBar.frame = frame;
-
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-
-}
-
-- (void)enterFormMode {
-    self.toolBar.hidden = YES;
-    self.annotationBar.hidden = YES;
-    self.formBar.hidden = NO;
-    if (self.pdfListView.isEdited) {
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-            [self.pdfListView commitEditing];
-            dispatch_async(dispatch_get_main_queue(), ^{
-                [self.pdfListView endOfEditing];
-            });
-        });
-    } else {
-        [self.pdfListView endOfEditing];
-    }
-    self.pdfListView.toolModel = CToolModelForm;
-    self.navigationTitle = NSLocalizedString(@"Form", nil);
-    [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
-
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-    CGRect frame = self.formBar.frame;
-    frame.origin.y = self.view.bounds.size.height-frame.size.height;
-    self.formBar.frame = frame;
-
-    CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-    tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-    tBottomY = self.formBar.frame.size.height;
-
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-        UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-        inset.bottom = 10 + self.formBar.frame.size.height;
-        self.pdfListView.documentView.contentInset = inset;
-    } else{
-        UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-        inset.bottom = 0;
-        self.pdfListView.documentView.contentInset = inset;
-    }
-    [self viewWillLayoutSubviews];
-}
-
-- (void)setTitleRefresh {
-    if (CToolModelEdit == self.pdfListView.toolModel) {
-        [self enterEditMode];
-    } else if (CToolModelViewer == self.pdfListView.toolModel) {
-        [self enterViewerMode];
-    } else if (CToolModelAnnotation == self.pdfListView.toolModel) {
-        [self enterAnnotationMode];
-    } else if(CToolModelForm == self.pdfListView.toolModel) {
-        [self enterFormMode];
-    }
-}
-
-#pragma mark - Action
-
-- (void)navigationRightItemBota {
-    CPDFBOTAViewController *botaViewController = [[CPDFBOTAViewController alloc] initCustomizeWithPDFView:self.pdfListView navArrays:@[@(CPDFBOTATypeStateOutline),@(CPDFBOTATypeStateBookmark),@(CPDFBOTATypeStateAnnotation)]];
-
-    botaViewController.delegate = self;
-    
-    AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
-   
-    presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:botaViewController presentingViewController:self];
-    botaViewController.transitioningDelegate = presentationController;
-    
-    [self presentViewController:botaViewController animated:YES completion:nil];
-}
-
-- (void) titleButtonClickd:(UIButton *) button {
-    CPDFToolsViewController * toolsVc = [[CPDFToolsViewController alloc] initCustomizeWithToolArrays:@[@(CToolModelViewer),@(CToolModelEdit),@(CToolModelAnnotation),@(CToolModelForm)]];
-    toolsVc.delegate = self;
-    AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
-    presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:toolsVc presentingViewController:self];
-    toolsVc.transitioningDelegate = presentationController;
-    [self presentViewController:toolsVc animated:YES completion:nil];
-}
-
-#pragma - CPDFEditToolBarDelegate
-
-- (void)undoDidClickInToolBar:(CPDFEditToolBar *)toolBar{
-    [self.pdfListView editTextUndo];
-}
-
-- (void)redoDidClickInToolBar:(CPDFEditToolBar *)toolBar{
-    [self.pdfListView editTextRedo];
-}
-
-- (void)propertyEditDidClickInToolBar:(CPDFEditToolBar *)toolBar{
-    [self showMenuList];
-}
-
-
-- (void)showMenuList {
-    _baseVC = [[CPDFEditViewController alloc] initWithPDFView:self.pdfListView];
-    _baseVC.editMode = self.editMode;
-    if((self.editMode == CPDFEditModeText || self.editMode == CPDFEditModeImage) && self.pdfListView.editStatus != CEditingSelectStateEmpty){
-        
-        AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
-       
-        presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:self.baseVC presentingViewController:self];
-        self.baseVC.transitioningDelegate = presentationController;
-        
-        [self presentViewController:self.baseVC animated:YES completion:nil];
-    }
-}
-
-#pragma mark - CPDFViewDelegate
-
-- (void)PDFViewEditingSelectStateDidChanged:(CPDFView *)pdfView {
-    if([pdfView.editingArea isKindOfClass:[CPDFEditImageArea class]]) {
-        self.editMode = CPDFEditModeImage;
-    }else if([pdfView.editingArea isKindOfClass:[CPDFEditTextArea class]]) {
-        self.editMode  = CPDFEditModeText;
-    }
-    
-    [self.toolBar updateButtonState];
-}
-
-- (void)PDFViewShouldBeginEditing:(CPDFView *)pdfView textView:(UITextView *)textView forAnnotation:(CPDFFreeTextAnnotation *)annotation {
-    CPDFKeyboardToolbar *keyBoadrdToolbar = [[CPDFKeyboardToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 50)];
-    keyBoadrdToolbar.delegate = self;
-    [keyBoadrdToolbar bindToTextView:textView];
-}
-
-#pragma mark - CPDFListViewDelegate
-
-- (void)PDFListViewPerformTouchEnded:(CPDFListView *)pdfView {
-    CGFloat tPosY = 0;
-    CGFloat tBottomY = 0;
-
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        if (self.navigationController.navigationBarHidden) {
-            [self.navigationController setNavigationBarHidden:NO animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height-frame.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 1.0;
-                self.annotationBar.topToolBar.alpha = 1.0;
-                self.annotationBar.drawPencilFuncView.alpha = 1.0;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-            
-            tBottomY = self.annotationBar.frame.size.height;
-        } else {
-            [self.navigationController setNavigationBarHidden:YES animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 0.0;
-                self.annotationBar.topToolBar.alpha = 0.0;
-                self.annotationBar.drawPencilFuncView.alpha = 0.0;
-
-            }];
-        }
-    } else {
-        CGFloat tPosY = 0;
-        if (self.navigationController.navigationBarHidden) {
-            [self.navigationController setNavigationBarHidden:NO animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                self.pdfListView.pageSliderView.alpha = 1.0;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-
-        } else {
-            [self.navigationController setNavigationBarHidden:YES animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                self.pdfListView.pageSliderView.alpha = 0.0;
-            }];
-        }
-    }
-    
-    if (CPDFDisplayDirectionVertical == [CPDFKitConfig  sharedInstance].displayDirection) {
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 10 + self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-    } else{
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = 0;
-            self.pdfListView.documentView.contentInset = inset;
-    }
-}
-
-- (void)PDFListViewEditNote:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
-    if([annotation isKindOfClass:[CPDFLinkAnnotation class]]) {
-        [self.annotationBar buttonItemClicked_openAnnotation:self.titleButton];
-    } else {
-        CGRect rect = [self.pdfListView convertRect:annotation.bounds fromPage:annotation.page];
-        CPDFNoteOpenViewController *noteVC = [[CPDFNoteOpenViewController alloc]initWithAnnotation:annotation];
-        noteVC.delegate = self;
-        [noteVC showViewController:self inRect:rect];
-    }
-}
-
-- (void)PDFListViewChangedAnnotationType:(CPDFListView *)pdfListView forAnnotationMode:(CPDFViewAnnotationMode)annotationMode {
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        [self.annotationBar reloadData];
-    }else if(CToolModelForm == self.pdfListView.toolModel) {
-        [self.formBar reloadData];
-    }
-}
-
-- (void)PDFListViewPerformUrl:(CPDFListView *)pdfView withContent:(NSString *)content {
-    NSURL * url = [NSURL URLWithString:content];
-    [[UIApplication sharedApplication] openURL:url];
-}
-
-- (void)PDFListViewPerformAddStamp:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    [self.annotationBar addStampAnnotationWithPage:page point:point];
-}
-
-- (void)PDFListViewPerformAddImage:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    [self.annotationBar addImageAnnotationWithPage:page point:point];
-}
-
-- (BOOL)PDFListViewerTouchEndedIsAudioRecordMedia:(CPDFListView *)pdfListView {
-    if (CPDFMediaStateAudioRecord == [CPDFMediaManager shareManager].mediaState) {
-        [self PDFListViewPerformTouchEnded:self.pdfListView];
-        return YES;
-    }
-    return NO;
-}
-
-- (void)PDFListViewPerformCancelMedia:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-}
-
-- (void)PDFListViewPerformRecordMedia:(CPDFListView *)pdfView atPoint:(CGPoint)point forPage:(CPDFPage *)page {
-    if([self.soundPlayBar superview]) {
-        if(self.soundPlayBar.soundState == CPDFSoundStatePlay) {
-            [self.soundPlayBar stopAudioPlay];
-            [self.soundPlayBar removeFromSuperview];
-        } else if (self.soundPlayBar.soundState == CPDFSoundStateRecord) {
-            [self.soundPlayBar stopRecord];
-            [self.soundPlayBar removeFromSuperview];
-        }
-    }
-    
-    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
-    if (authStatus == AVAuthorizationStatusNotDetermined || authStatus == AVAuthorizationStatusDenied) {
-        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
-            if (granted) {
-                
-            } else {
-                NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
-                if ([[UIApplication sharedApplication] canOpenURL:url]) {
-                    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
-                }
-            }
-        }];
-    }
-    
-    if (authStatus == AVAuthorizationStatusAuthorized) {
-        NSInteger pageindex = [self.pdfListView.document indexForPage:page];
-        [CPDFMediaManager shareManager].mediaState = CPDFMediaStateAudioRecord;
-        [CPDFMediaManager shareManager].pageNum = pageindex;
-        [CPDFMediaManager shareManager].ptInPdf = point;
-        
-        _soundPlayBar = [[CPDFSoundPlayBar alloc] initWithStyle:self.annotationManage.annotStyle];
-        _soundPlayBar.delegate = self;
-        [_soundPlayBar showInView:self.pdfListView soundState:CPDFSoundStateRecord];
-        [_soundPlayBar startAudioRecord];
-       
-    } else {
-        return;
-    }
-}
-
-- (void)PDFListViewPerformPlay:(CPDFListView *)pdfView forAnnotation:(CPDFSoundAnnotation *)annotation {
-    NSString *filePath = [annotation mediaPath];
-    if (filePath) {
-        NSURL *URL = [NSURL fileURLWithPath:filePath];
-        
-        _soundPlayBar = [[CPDFSoundPlayBar alloc] initWithStyle:self.annotationManage.annotStyle];
-        _soundPlayBar.delegate = self;
-        [_soundPlayBar showInView:self.pdfListView soundState:CPDFSoundStatePlay];
-        [_soundPlayBar setURL:URL];
-        [_soundPlayBar startAudioPlay];
-        [CPDFMediaManager shareManager].mediaState = CPDFMediaStateVedioPlaying;
-    }
-}
-
-- (void)PDFListViewPerformSignatureWidget:(CPDFListView *)pdfView forAnnotation:(CPDFSignatureWidgetAnnotation *)annotation {
-    if(CToolModelAnnotation == self.pdfListView.toolModel) {
-        [self.annotationBar openSignatureAnnotation:annotation];
-    }else if(CToolModelViewer == self.pdfListView.toolModel) {
-        self.signatureAnnotation = annotation;
-        AAPLCustomPresentationController *presentationController NS_VALID_UNTIL_END_OF_SCOPE;
-        CPDFSignatureViewController *signatureVC = [[CPDFSignatureViewController alloc] initWithStyle:nil];
-        presentationController = [[AAPLCustomPresentationController alloc] initWithPresentedViewController:signatureVC presentingViewController:self];
-        signatureVC.delegate = self;
-        signatureVC.transitioningDelegate = presentationController;
-        [self presentViewController:signatureVC animated:YES completion:nil];
-    }
-}
-
-- (void)PDFListViewEditProperties:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
-    if(CToolModelAnnotation == self.pdfListView.toolModel){
-        [self.annotationBar buttonItemClicked_openAnnotation:self.titleButton];
-    }else if(CToolModelForm == self.pdfListView.toolModel) {
-        [self.formBar buttonItemClicked_open:annotation];
-    }
-}
-
-- (void)PDFListViewCustomMenuClick:(CPDFListView *)pdfView identifier:(NSString *)menuIdentifier point:(CGPoint)point {
-    if([menuIdentifier isEqualToString:@"PropertyItem"]){
-        if([pdfView.editingArea isKindOfClass:[CPDFEditImageArea class]]) {
-            self.editMode = CPDFEditModeImage;
-        } else if([pdfView.editingArea isKindOfClass:[CPDFEditTextArea class]]) {
-            self.editMode  = CPDFEditModeText;
-        }
-        [self showMenuList];
-        [self.toolBar updateButtonState];
-    }
-}
-
-- (void)PDFViewCurrentPageDidChanged:(CPDFView *)pdfView {
-    if([pdfView.editingArea isKindOfClass:[CPDFEditImageArea class]]) {
-        self.editMode = CPDFEditModeImage;
-    }else if([pdfView.editingArea isKindOfClass:[CPDFEditTextArea class]]) {
-        self.editMode  = CPDFEditModeText;
-    }
-    
-    [self.toolBar updateButtonState];
-    [super PDFViewCurrentPageDidChanged:pdfView];
-}
-
-#pragma mark - CPDFKeyboardToolbarDelegate
-
-- (void)keyboardShouldDissmiss:(CPDFKeyboardToolbar *)toolbar {
-    [self.pdfListView commitEditAnnotationFreeText];
-    self.pdfListView.annotationMode = CPDFViewAnnotationModeNone;
-    [self.annotationBar reloadData];
-}
-
-#pragma mark - CPDFAnnotationBarDelegate
-
-- (void)annotationBarClick:(CPDFAnnotationBar *)annotationBar clickAnnotationMode:(CPDFViewAnnotationMode)annotationMode forSelected:(BOOL)isSelected forButton:(UIButton *)button {
-    if(CPDFViewAnnotationModeInk == annotationMode || CPDFViewAnnotationModePencilDrawing == annotationMode) {
-        CGFloat tPosY = 0;
-        if(isSelected) {
-            [self.navigationController setNavigationBarHidden:YES animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 0.0;
-                
-                UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-                inset.bottom = 0;
-                self.pdfListView.documentView.contentInset = inset;
-            }];
-        } else {
-            [self.navigationController setNavigationBarHidden:NO animated:YES];
-            [UIView animateWithDuration:0.3 animations:^{
-                CGRect frame = self.annotationBar.frame;
-                frame.origin.y = self.view.bounds.size.height-frame.size.height;
-                self.annotationBar.frame = frame;
-                self.pdfListView.pageSliderView.alpha = 1.0;
-            }];
-            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
-            tPosY = self.navigationController.navigationBar.frame.size.height + rectStatus.size.height;
-
-            UIEdgeInsets inset = self.pdfListView.documentView.contentInset;
-            inset.bottom = self.annotationBar.frame.size.height;
-            self.pdfListView.documentView.contentInset = inset;
-        }
-    } else if (CPDFViewAnnotationModeSound == annotationMode && !isSelected) {
-        if(CPDFSoundStateRecord == self.soundPlayBar.soundState) {
-            [self.soundPlayBar stopRecord];
-
-        } else if (CPDFSoundStatePlay== self.soundPlayBar.soundState) {
-            [self.soundPlayBar stopAudioPlay];
-        }
-    }
-}
-
-#pragma mark - CPDFNoteOpenViewControllerDelegate
-
-- (void)getNoteOpenViewController:(CPDFNoteOpenViewController *)noteOpenVC content:(NSString *)content isDelete:(BOOL)isDelete {
-    if (isDelete) {
-        [noteOpenVC.annotation.page removeAnnotation:noteOpenVC.annotation];
-        [self.pdfListView setNeedsDisplayForPage:noteOpenVC.annotation.page];
-        if([self.pdfListView.activeAnnotations containsObject:noteOpenVC.annotation]) {
-            NSMutableArray *activeAnnotations = [NSMutableArray arrayWithArray:self.pdfListView.activeAnnotations];
-            [activeAnnotations removeObject:noteOpenVC.annotation];
-            [self.pdfListView updateActiveAnnotations:activeAnnotations];
-        }
-    } else {
-        if([noteOpenVC.annotation isKindOfClass:[CPDFMarkupAnnotation class]]) {
-            CPDFMarkupAnnotation *markupAnnotation = (CPDFMarkupAnnotation *)noteOpenVC.annotation;
-            [markupAnnotation setContents:content?:@""];
-        } else if(([noteOpenVC.annotation isKindOfClass:[CPDFTextAnnotation class]])){
-            if(content && content.length > 0) {
-                noteOpenVC.annotation.contents = content?:@"";
-            } else {
-                if([self.pdfListView.activeAnnotations containsObject:noteOpenVC.annotation]) {
-                    [self.pdfListView updateActiveAnnotations:@[]];
-                }
-                [noteOpenVC.annotation.page removeAnnotation:noteOpenVC.annotation];
-                [self.pdfListView setNeedsDisplayForPage:noteOpenVC.annotation.page];
-            }
-        } else {
-            noteOpenVC.annotation.contents = content?:@"";
-        }
-    }
-}
-
-#pragma mark - CPDFSoundPlayBarDelegate
-
-- (void)soundPlayBarRecordFinished:(CPDFSoundPlayBar *)soundPlayBar withFile:(NSString *)filePath {
-    CPDFPage *page = [self.pdfListView.document pageAtIndex:[CPDFMediaManager shareManager].pageNum];
-    CPDFSoundAnnotation *annotation = [[CPDFSoundAnnotation alloc] initWithDocument:self.pdfListView.document];
-    
-    if ([annotation setMediaPath:filePath]) {
-        CGRect bounds = annotation.bounds;
-        bounds.origin.x = [CPDFMediaManager shareManager].ptInPdf.x-bounds.size.width/2.0;
-        bounds.origin.y = [CPDFMediaManager shareManager].ptInPdf.y-bounds.size.height/2.0;
-        annotation.bounds = bounds;
-        [self.pdfListView addAnnotation:annotation forPage:page];
-    }
-
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-    [self.pdfListView stopRecord];
-}
-
-- (void)soundPlayBarRecordCancel:(CPDFSoundPlayBar *)soundPlayBar {
-    if(CPDFSoundStateRecord == self.soundPlayBar.soundState) {
-        [self.pdfListView stopRecord];
-    }
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-}
-
-- (void)soundPlayBarPlayClose:(CPDFSoundPlayBar *)soundPlayBar {
-    [CPDFMediaManager shareManager].mediaState = CPDFMediaStateStop;
-}
-
-#pragma mark - Notification
-
-- (void)PDFPageDidRemoveAnnotationNotification:(NSNotification *)notification {
-    CPDFAnnotation *annotation = [notification object];
-
-    if ([annotation isKindOfClass:[CPDFSoundAnnotation class]]) {
-        [self.soundPlayBar stopAudioPlay];
-        if ([self.soundPlayBar isDescendantOfView:self.view]) {
-            [self.soundPlayBar removeFromSuperview];
-        }
-    }
-}
-
-- (void)PDFListViewEditWidget:(CPDFListView *)pdfListView forAnnotation:(CPDFAnnotation *)annotation {
-    [self.formBar buttonItemClicked_openOption:annotation];
-}
-
-#pragma mark - CPDFToolsViewControllerDelegate
-
-- (void)CPDFToolsViewControllerDismiss:(CPDFToolsViewController *) viewController selectItemAtIndex:(CToolModel)selectIndex {
-    if(CToolModelViewer == selectIndex) {
-        //viewwer
-        [self enterViewerMode];
-    }else if(CToolModelEdit == selectIndex) {
-        [self enterEditMode];
-    }else if(CToolModelAnnotation == selectIndex){
-        //Annotation
-        [self enterAnnotationMode];
-    }else if(CToolModelForm == selectIndex) {
-        [self.formBar updateStatus];
-        [self enterFormMode];
-    }
-}
-
-#pragma mark - CPDFBOTAViewControllerDelegate
-
-- (void)botaViewControllerDismiss:(CPDFBOTAViewController *)botaViewController {
-    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
-}
-
-#pragma mark - CPDFSignatureViewControllerDelegate
-
-- (void)signatureViewControllerDismiss:(CPDFSignatureViewController *)signatureViewController {
-    self.signatureAnnotation = nil;
-}
-
-- (void)signatureViewController:(CPDFSignatureViewController *)signatureViewController image:(UIImage *)image {
-    if(self.signatureAnnotation) {
-        [self.signatureAnnotation signWithImage:image];
-        [self.pdfListView setNeedsDisplayForPage:self.signatureAnnotation.page];
-        self.signatureAnnotation = nil;
-    }
-}
-
-#pragma mark - Action
-
-- (void)buttonItemClicked_thumbnail:(id)sender {
-    CPDFPageEditViewController *pageEditViewcontroller = [[CPDFPageEditViewController alloc] initWithPDFView:self.pdfListView];
-    pageEditViewcontroller.pageEditDelegate = self;
-    pageEditViewcontroller.modalPresentationStyle = UIModalPresentationFullScreen;
-    [self.navigationController presentViewController:pageEditViewcontroller animated:YES completion:nil];
-}
-
-#pragma mark - CPDFPageEditViewControllerDelegate
-
-- (void)pageEditViewControllerDone:(CPDFPageEditViewController *)pageEditViewController {
-    if (pageEditViewController.isPageEdit) {
-        __weak typeof(self) weakSelf = self;
-        [weakSelf reloadDocumentWithFilePath:self.filePath password:self.pdfListView.document.password completion:^(BOOL result) {
-            [weakSelf.pdfListView reloadInputViews];
-            [weakSelf selectDocumentRefresh];
-        }];
-        
-        [weakSelf.pdfListView reloadInputViews];
-    }
-}
-
-- (void)pageEditViewController:(CPDFPageEditViewController *)pageEditViewController pageIndex:(NSInteger)pageIndex isPageEdit:(BOOL)isPageEdit {
-    if (isPageEdit) {
-        __weak typeof(self) weakSelf = self;
-        [weakSelf reloadDocumentWithFilePath:self.filePath password:self.pdfListView.document.password completion:^(BOOL result) {
-            [weakSelf.pdfListView reloadInputViews];
-            [weakSelf selectDocumentRefresh];
-
-        }];
-        
-        [weakSelf.pdfListView reloadInputViews];
-    }
-   
-    [self.pdfListView goToPageIndex:pageIndex animated:NO];
-}
-
-@end

File diff suppressed because it is too large
+ 2118 - 0
ComPDFKit_Tools/ComPDFKit_Tools.xcodeproj/project.pbxproj


+ 24 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CAnnotListHeaderInSection.h

@@ -0,0 +1,24 @@
+//
+//  CAnnotListHeaderInSection.h
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CAnnotListHeaderInSection : UITableViewHeaderFooterView
+
+- (void)setPageNumber:(NSInteger)number;
+
+- (void)setAnnotsCount:(NSInteger)count;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 117 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CAnnotListHeaderInSection.m

@@ -0,0 +1,117 @@
+//
+//  CAnnotListHeaderInSection.m
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import "CAnnotListHeaderInSection.h"
+
+#import "CPDFColorUtils.h"
+
+@interface CAnnotListHeaderInSection()
+
+@property (nonatomic, strong) UIView* shadowView;
+
+@property (nonatomic, strong) UILabel* pagenumber;
+
+@property (nonatomic, strong) UILabel* annotscount;
+
+@property (nonatomic, strong) UIView* mainView;
+
+@property (nonatomic, assign) CGFloat mainViewHeight;
+
+@end
+
+@implementation CAnnotListHeaderInSection
+
+- (id)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        _mainViewHeight = frame.size.height;
+        self.contentView.backgroundColor = [CPDFColorUtils CViewBackgroundColor];
+        _mainView = [[UIView alloc] init];
+        _mainView.layer.cornerRadius = 2;
+        _mainView.layer.masksToBounds = YES;
+        [self.contentView addSubview:_mainView];
+    }
+    return self;
+}
+
+- (void)layoutSubviews
+{
+    [super layoutSubviews];
+    
+    CGFloat width = [UIScreen mainScreen].bounds.size.width;
+    if((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) &&
+       ([UIApplication sharedApplication].statusBarOrientation == UIDeviceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIDeviceOrientationLandscapeRight))  {
+        width = [UIScreen mainScreen].bounds.size.width - self.window.safeAreaInsets.left;
+    }
+    if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)) {
+        width = self.frame.size.width;
+    }
+    
+    _mainView.frame = CGRectMake(0, 0, width - 21, _mainViewHeight);
+    _shadowView.center = _annotscount.center;
+}
+
+- (void)setPageNumber:(NSInteger)number {
+    if (!_pagenumber) {
+        _pagenumber = [[UILabel alloc] init];
+        _pagenumber.backgroundColor = [UIColor clearColor];
+        if (@available(iOS 13.0, *)) {
+            _pagenumber.textColor = [UIColor labelColor];
+        } else {
+            _pagenumber.textColor = [UIColor blackColor];
+        }
+        [_pagenumber setFont:[UIFont systemFontOfSize:13.0f]];
+        [_mainView addSubview:_pagenumber];
+    }
+    
+    _pagenumber.text = [NSString stringWithFormat:NSLocalizedString(@"Page %ld",nil), (long)number];
+    [_pagenumber sizeToFit];
+    
+    CGRect rect = [_pagenumber frame];
+    rect.origin = CGPointMake(16, (self.contentView.frame.size.height-rect.size.height)/2.0);
+    _pagenumber.frame = rect;
+}
+
+- (void)setAnnotsCount:(NSInteger)count {
+    if (!_shadowView) {
+        _shadowView = [[UIView alloc] init];
+        _shadowView.layer.shadowColor = [UIColor blackColor].CGColor;
+        _shadowView.layer.shadowOffset = CGSizeMake(0,1.0);
+        _shadowView.layer.shadowOpacity = 0.3;
+        [_mainView addSubview:_shadowView];
+    }
+    
+    if (!_annotscount) {
+        _annotscount = [[UILabel alloc] init];
+        if (@available(iOS 13.0, *)) {
+            _annotscount.textColor = [UIColor labelColor];
+        } else {
+            _annotscount.textColor = [UIColor blackColor];
+        }
+        [_annotscount setFont:[UIFont boldSystemFontOfSize:13.0f]];
+        _annotscount.textAlignment = NSTextAlignmentCenter;
+        _annotscount.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
+        _annotscount.layer.cornerRadius = 2;
+        _annotscount.layer.masksToBounds = YES;
+        [_mainView addSubview:_annotscount];
+    }
+    
+    _annotscount.text = [NSString stringWithFormat:@"%ld", (long)count];
+    [_annotscount sizeToFit];
+    CGRect rect = [_annotscount frame];
+    rect.size.width = rect.size.width < 8 ? 16 : rect.size.width + 8;
+    rect.size.height = 16;
+    rect.origin = CGPointMake(_mainView.frame.size.width - rect.size.width - 5, (self.contentView.frame.size.height-rect.size.height)/2.0);
+    _annotscount.frame = rect;
+    _shadowView.frame = rect;
+}
+
+@end

+ 34 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationListCell.h

@@ -0,0 +1,34 @@
+//
+//  CPDFAnnotationListCell.h
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import <UIKit/UIKit.h>
+
+@class CPDFAnnotation;
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFAnnotationListCell : UITableViewCell
+
+@property(nonatomic, strong) UIImageView *typeImageView;
+
+@property(nonatomic, strong) UILabel *dateLabel;
+
+@property(nonatomic, strong) UILabel *contentLabel;
+
+@property(nonatomic, readonly)CPDFAnnotation *annot;
+
+@property(nonatomic, assign)NSInteger pageNumber;
+
+- (void)updateCellWithAnnotation:(CPDFAnnotation *)annotation;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 295 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationListCell.m

@@ -0,0 +1,295 @@
+//
+//  CPDFAnnotationListCell.m
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import "CPDFAnnotationListCell.h"
+
+#import "CPDFAnnotionColorDrawView.h"
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFAnnotationListCell()
+
+@property(nonatomic, strong)CPDFAnnotation *annot;
+
+@end
+
+@implementation CPDFAnnotationListCell
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        self.backgroundColor = [UIColor clearColor];
+                
+        _typeImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
+        _typeImageView.frame = CGRectMake(15.0, 18.0, 20, 20);
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationShapeCircle"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+                
+        _dateLabel = [[UILabel alloc] initWithFrame:CGRectZero];
+        [_dateLabel setFont:[UIFont systemFontOfSize:12.0f]];
+        if (@available(iOS 13.0, *)) {
+            [_dateLabel setTextColor:[UIColor secondaryLabelColor]];
+        } else {
+            [_dateLabel setTextColor:[UIColor blackColor]];
+        }
+        _dateLabel.minimumScaleFactor = 0.5;
+        _dateLabel.numberOfLines = 1;
+        _dateLabel.adjustsFontSizeToFitWidth = YES;
+        [_dateLabel setTextAlignment:NSTextAlignmentLeft];
+        [_dateLabel setBackgroundColor:[UIColor clearColor]];
+        
+        _contentLabel = [[UILabel alloc] initWithFrame:CGRectZero];
+        if (@available(iOS 13.0, *)) {
+            [_contentLabel setTextColor:[UIColor secondaryLabelColor]];
+        } else {
+            [_contentLabel setTextColor:[UIColor blackColor]];
+        }
+        _contentLabel.lineBreakMode = NSLineBreakByTruncatingTail;
+        _contentLabel.numberOfLines = 3;
+        _contentLabel.font = [UIFont systemFontOfSize:15.0f];
+        [_contentLabel setBackgroundColor:[UIColor clearColor]];
+                
+        [self.contentView addSubview:_typeImageView];
+        [self.contentView addSubview:_dateLabel];
+        [self.contentView addSubview:_contentLabel];
+    }
+    return self;
+}
+
+- (void)layoutSubviews {
+    [super layoutSubviews];
+        
+    _dateLabel.frame = CGRectMake(43.0, 18, self.contentView.frame.size.width - 43 - 15.0, 20);
+
+    _contentLabel.frame = CGRectMake(15, 51, self.contentView.frame.size.width-30, _contentLabel.frame.size.height);
+}
+
+- (void)setPageNumber:(NSInteger)pageNumber {
+    _dateLabel.text = NSLocalizedString(@"Loading...", nil);
+    
+    _contentLabel.text = @"";
+    [_typeImageView setImage:nil];
+}
+
+- (void)updateCellWithAnnotation:(CPDFAnnotation *)annotation {
+    self.annot = annotation;
+    
+    [self setTypeImage:annotation];
+    
+    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
+    formatter.dateFormat = @"yyyy-MM-dd HH:mm";
+    _dateLabel.text = [formatter stringFromDate:annotation.modificationDate];
+    
+    if ([annotation isKindOfClass:[CPDFMarkupAnnotation class]]) {
+        NSString *text = [(CPDFMarkupAnnotation *)annotation markupText];
+        if (text && text.length > 0) {
+            _contentLabel.hidden = NO;
+            _contentLabel.text = text;
+        } else {
+            CPDFPage * page = annotation.page;
+            NSString * exproString = nil;
+            NSArray * points =  [(CPDFMarkupAnnotation*)annotation quadrilateralPoints];
+            NSInteger count = 4;
+            for (NSUInteger i=0; i+count <= points.count;) {
+                CGPoint ptlt = [points[i++] CGPointValue];
+                CGPoint ptrt = [points[i++] CGPointValue];
+                CGPoint ptlb = [points[i++] CGPointValue];
+                CGPoint ptrb = [points[i++] CGPointValue];
+                
+                CGRect rect = CGRectMake(ptlb.x, ptlb.y, ptrt.x - ptlb.x, ptrt.y - ptlb.y);
+                NSString *tString = [page stringForRect:rect];
+                if (tString && tString.length >0) {
+                    if(exproString) {
+                        exproString = [NSString stringWithFormat:@"%@\n%@",exproString,tString];
+                    } else {
+                        exproString  = tString;
+                    }
+                }
+            }
+            
+            if (exproString && exproString.length > 0) {
+                _contentLabel.hidden = NO;
+                _contentLabel.text = exproString;
+            } else {
+                _contentLabel.hidden = YES;
+            }
+        }
+    } else {
+        if ([annotation contents] && ![[annotation contents] isEqualToString:@""]){
+            NSArray<NSString *> *contextArray = [[annotation contents] componentsSeparatedByString:@"\n"];
+            if (contextArray.count >3) {
+                NSString *newContents = @"";
+                for (int i = 0; i < 2; i++) {
+                    newContents = [newContents stringByAppendingFormat:@"%@\n", contextArray[i]];
+                }
+                _contentLabel.hidden = NO;
+                _contentLabel.text = [newContents stringByAppendingString:@"..."];
+            } else {
+                _contentLabel.hidden = NO;
+                _contentLabel.text = [annotation contents];
+            }
+        }else{
+            _contentLabel.hidden = YES;
+        }
+    }
+    [_contentLabel sizeToFit];
+    [_dateLabel sizeToFit];
+}
+
+- (void)setTypeImage:(CPDFAnnotation *)annot {
+    for (UIView* subView in [_typeImageView subviews]) {
+        [subView removeFromSuperview];
+    }
+    
+    if ([annot isKindOfClass:[CPDFCircleAnnotation  class]]) {
+        
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationShapeCircle"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+    } else if ([annot isKindOfClass:[CPDFFreeTextAnnotation class]]) {
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationText"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+    } else if ([annot isKindOfClass:[CPDFInkAnnotation  class]]) {
+        dispatch_async(dispatch_get_main_queue(), ^{
+            UIColor* color = [annot color];
+            CPDFAnnotionColorDrawView* drawView = [self getTextMarkColorView:annot size:self.typeImageView.bounds.size color:color];
+            [self.typeImageView addSubview:drawView];
+            [self.typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationFreehand"
+                                                    inBundle:[NSBundle bundleForClass:self.class]
+                               compatibleWithTraitCollection:nil]];
+        });
+    } else if ([annot isKindOfClass:[CPDFLineAnnotation  class]]) {
+        if ([(CPDFLineAnnotation  *)annot startLineStyle] == CPDFLineStyleClosedArrow ||
+            [(CPDFLineAnnotation  *)annot endLineStyle] == CPDFLineStyleClosedArrow) {
+            [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationShapeArrow"
+                                                inBundle:[NSBundle bundleForClass:self.class]
+                           compatibleWithTraitCollection:nil]];
+        } else {
+            [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationShapeLine"
+                                                inBundle:[NSBundle bundleForClass:self.class]
+                           compatibleWithTraitCollection:nil]];
+        }
+    } else if ([annot isKindOfClass:[CPDFLinkAnnotation class]]){
+        //do nothing
+    } else if ([annot isKindOfClass:[CPDFSoundAnnotation class]] || [annot isKindOfClass:[CPDFMovieAnnotation  class]]) {
+        //add type
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationRecord"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+    } else if ([annot isKindOfClass:[CPDFTextAnnotation class]]) {
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationNote"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+    } else if ([annot isKindOfClass:[CPDFSquareAnnotation  class]]) {
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationShapeRectangle"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+    } else if ([annot isKindOfClass:[CPDFStampAnnotation class]]) {
+        if (CPDFStampTypeImage == [(CPDFStampAnnotation *)annot stampType]) {
+            [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationPhoto"
+                                                inBundle:[NSBundle bundleForClass:self.class]
+                           compatibleWithTraitCollection:nil]];
+        } else {
+            [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationStamp"
+                                                inBundle:[NSBundle bundleForClass:self.class]
+                           compatibleWithTraitCollection:nil]];
+        }
+    } else if ([annot isKindOfClass:[CPDFMarkupAnnotation class]]){
+        UIColor* color = [annot color];
+        CPDFMarkupType markupType = [(CPDFMarkupAnnotation *)annot markupType];
+        switch (markupType) {
+            case CPDFMarkupTypeHighlight:
+                [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationHighlight"
+                                                    inBundle:[NSBundle bundleForClass:self.class]
+                               compatibleWithTraitCollection:nil]];
+                break;
+            case CPDFMarkupTypeUnderline:
+                [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationUnderline"
+                                                    inBundle:[NSBundle bundleForClass:self.class]
+                               compatibleWithTraitCollection:nil]];
+                break;
+            case CPDFMarkupTypeStrikeOut:
+                [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationStrikethrough"
+                                                    inBundle:[NSBundle bundleForClass:self.class]
+                               compatibleWithTraitCollection:nil]];
+                break;
+            case CPDFMarkupTypeSquiggly:
+                [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationUnderline"
+                                                    inBundle:[NSBundle bundleForClass:self.class]
+                               compatibleWithTraitCollection:nil]];
+                break;
+            default:
+                break;
+        }
+        dispatch_async(dispatch_get_main_queue(), ^{
+            CPDFAnnotionColorDrawView* drawView = [self getTextMarkColorView:annot size:self.typeImageView.bounds.size color:color];
+            [self.typeImageView addSubview:drawView];
+        });
+    } else if ([annot isKindOfClass:[CPDFSignatureAnnotation class]]) {
+        [_typeImageView setImage:[UIImage imageNamed:@"CImageNamePDFAnnotationSign"
+                                            inBundle:[NSBundle bundleForClass:self.class]
+                       compatibleWithTraitCollection:nil]];
+    }
+
+}
+
+- (CPDFAnnotionColorDrawView*) getTextMarkColorView:(CPDFAnnotation *)annotation size:(CGSize)size color:(UIColor*)color {
+    CPDFAnnotionMarkUpType markupType;
+    CPDFAnnotionColorDrawView* drawView = [[CPDFAnnotionColorDrawView alloc] initWithFrame:CGRectZero];
+    drawView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
+    
+        float tHeight  = 20;
+        float tWidth  = 20;
+        float tSpaceY   = 16;
+        float tOffsetX = (size.width - tWidth)/2;
+        
+        if ([annotation isKindOfClass:[CPDFMarkupAnnotation class]]) {
+            CPDFMarkupType type = [(CPDFMarkupAnnotation *)annotation markupType];
+            switch (type) {
+                case CPDFMarkupTypeHighlight:
+                    markupType = CPDFAnnotionMarkUpTypeHighlight;
+                    drawView.frame = CGRectMake(tOffsetX, (size.height - tHeight)/2, tWidth, tHeight);
+                    break;
+                case CPDFMarkupTypeUnderline:
+                    markupType = CPDFAnnotionMarkUpTypeUnderline;
+                    tHeight = 2.0;
+                    drawView.frame = CGRectMake(tOffsetX, size.height - tHeight, tWidth, tHeight);
+                    break;
+                case CPDFMarkupTypeStrikeOut:
+                    markupType = CPDFAnnotionMarkUpTypeStrikeout;
+                    tHeight = 2.0;
+                    drawView.frame = CGRectMake(tOffsetX, (size.height - tHeight)/2, tWidth, tHeight);
+                    break;
+                case CPDFMarkupTypeSquiggly:
+                    markupType = CPDFAnnotionMarkUpTypeSquiggly;
+                    tHeight = 6.0;
+                    drawView.frame = CGRectMake(tOffsetX, size.height-2.0, tWidth, tHeight);
+                    break;
+                default:
+                    break;
+            }
+        } else if ([annotation isKindOfClass:[CPDFInkAnnotation class]]) {
+            markupType = CPDFAnnotionMarkUpTypeFreehand;
+            tHeight = 6.0;
+            drawView.frame = CGRectMake(tOffsetX, size.height - 2.0, tWidth, tHeight);
+        } else {
+            markupType = CPDFAnnotionMarkUpTypeFreehand;
+            drawView.frame = CGRectZero;
+        }
+        drawView.markUpType = markupType;
+        drawView.lineColor = color;
+        [drawView setNeedsDisplay];
+    
+    return drawView;
+}
+
+@end

+ 37 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationViewController.h

@@ -0,0 +1,37 @@
+//
+//  CPDFAnnotationViewController.h
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class CPDFView;
+@class CPDFAnnotation;
+@class CPDFAnnotationViewController;
+
+@protocol CPDFAnnotationViewControllerDelegate <NSObject>
+
+- (void)annotationViewController:(CPDFAnnotationViewController *)annotationViewController jumptoPage:(NSInteger)pageIndex selectAnnot:(CPDFAnnotation*)annot;
+
+@end
+
+
+@interface CPDFAnnotationViewController : UIViewController
+
+@property (nonatomic, readonly) CPDFView *pdfView;
+
+@property (nonatomic, weak) id<CPDFAnnotationViewControllerDelegate> delegate;
+
+- (instancetype)initWithPDFView:(CPDFView *)pdfView;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 319 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotationViewController.m

@@ -0,0 +1,319 @@
+//
+//  CPDFAnnotationViewController.m
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import "CPDFAnnotationViewController.h"
+
+#import "CAnnotListHeaderInSection.h"
+#import "CPDFAnnotationListCell.h"
+#import "CActivityIndicatorView.h"
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CPDFAnnotationViewController ()<UITableViewDelegate, UITableViewDataSource>
+
+@property (nonatomic, strong) UITableView* tableView;
+
+@property (nonatomic, strong) NSMutableArray* sequenceList;
+
+@property (nonatomic, strong) NSMutableDictionary* annotsDict;
+
+@property (nonatomic, strong) NSMutableDictionary* totalAnnotlistDict;
+
+@property (nonatomic, strong) NSMutableArray *selectIndexArray;
+
+@property (nonatomic, strong) UILabel* emptyLabel;
+
+@property (nonatomic, strong) CPDFView *pdfView;
+
+@property (nonatomic, strong) CActivityIndicatorView* activityView;
+
+@property (nonatomic,assign) BOOL stopLoadAnnots;
+
+@end
+
+@implementation CPDFAnnotationViewController
+
+- (instancetype)initWithPDFView:(CPDFView *)pdfView {
+    if (self = [super init]) {
+        self.pdfView = pdfView;
+    }
+    return self;
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
+    _tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+    _tableView.delegate = self;
+    _tableView.dataSource = self;
+    _tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
+    _tableView.rowHeight = UITableViewAutomaticDimension;
+    _tableView.estimatedRowHeight = 60;
+    _tableView.tableFooterView = [[UIView alloc] init];
+    [self.view addSubview:self.tableView];
+    
+    self.emptyLabel.hidden = YES;
+
+    // Do any additional setup after loading the view.
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    
+    self.stopLoadAnnots = NO;
+    
+    [self.activityView startAnimating];
+    
+    [self loadAndRefreshAnnots];
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+    [super viewWillDisappear:animated];
+    
+    self.stopLoadAnnots = YES;
+}
+
+#pragma mark - Asset
+
+- (UILabel *)emptyLabel {
+    if (!_emptyLabel) {
+        _emptyLabel = [[UILabel alloc] init];
+        if (@available(iOS 13.0, *)) {
+            [_emptyLabel setTextColor:[UIColor labelColor]];
+        } else {
+            [_emptyLabel setTextColor:[UIColor blackColor]];
+        }
+        _emptyLabel.font = [UIFont boldSystemFontOfSize:16.0];
+        _emptyLabel.text = NSLocalizedString(@"No annotations", nil);
+        _emptyLabel.textColor = [UIColor grayColor];
+        [_emptyLabel sizeToFit];
+        [self.view addSubview:_emptyLabel];
+        [self.view bringSubviewToFront:_emptyLabel];
+        _emptyLabel.center = CGPointMake(self.view.bounds.size.width/2.0, self.view.bounds.size.height/2.0);
+        _emptyLabel.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
+    }
+    return _emptyLabel;
+}
+
+- (CActivityIndicatorView *)activityView {
+    if (!_activityView) {
+        _activityView = [[CActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
+        _activityView.center = self.view.center;
+        _activityView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
+    }
+    return _activityView;
+}
+
+- (void)loadAndRefreshAnnots {
+    self.stopLoadAnnots = NO;
+
+    self.totalAnnotlistDict = [[NSMutableDictionary alloc] init];
+    self.annotsDict = [[NSMutableDictionary alloc] init];
+    self.sequenceList = [[NSMutableArray alloc] init];
+    
+    [self.activityView startAnimating];
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        NSInteger pageCount = self.pdfView.document.pageCount;
+        NSInteger currentPage = 0;
+        for (NSInteger i=0; i < pageCount; i++) {
+            if (self.stopLoadAnnots) {
+                break;
+            }
+            
+            currentPage = i;
+            CPDFPage *page = [self.pdfView.document pageAtIndex:i];
+            NSArray *annotations = page.annotations;
+            NSMutableArray *annotsInpage = [NSMutableArray array];
+            for (CPDFAnnotation *annotation in annotations) {
+                if (![annotation isKindOfClass:[CPDFWidgetAnnotation  class]] &&
+                    ![annotation isKindOfClass:[CPDFLinkAnnotation class]] &&
+                    ![annotation isKindOfClass:[CPDFSignatureAnnotation class]]) {
+                    [annotsInpage addObject:annotation];
+                }
+            }
+            if ([annotsInpage count] > 0) {
+                NSArray *sortArray = [self annotSort:(NSArray *)annotsInpage];
+                if (sortArray) {
+                    [self.totalAnnotlistDict setObject:[NSMutableArray arrayWithArray:sortArray] forKey:[NSNumber numberWithInteger:i]];
+                    [self.sequenceList addObject:[NSNumber numberWithInteger:i]];
+                }
+            }
+            
+            if (currentPage == pageCount - 1) {
+                self.stopLoadAnnots = YES;
+            }
+        }
+        [self.totalAnnotlistDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
+            [self.annotsDict setObject:[NSMutableArray arrayWithArray:obj] forKey:key];
+        }];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self.activityView stopAnimating];
+            [self.tableView reloadData];
+        });
+    });
+}
+
+- (NSMutableArray *)selectIndexArray {
+    if (!_selectIndexArray) {
+        _selectIndexArray = [[NSMutableArray alloc] init];
+    }
+    return _selectIndexArray;
+}
+
+static NSInteger sortByDate(CPDFAnnotation *annot1, CPDFAnnotation *annot2, void *context) {
+    return NSOrderedAscending;
+}
+
+- (NSArray *)annotSort:(NSArray *)array {
+    NSArray *result;
+    NSInteger (*sortFunction)(id, id, void *) = NULL;
+    sortFunction = sortByDate;
+    
+    if (sortFunction) {
+        result = [array sortedArrayUsingFunction:sortFunction context:NULL];
+    } else {
+        result = array;
+    }
+    
+    return result;
+}
+
+#pragma mark - tableView Delegate
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+    NSInteger count = [self.sequenceList count];
+    if (count < 1) {
+        self.emptyLabel.hidden = NO;
+        self.tableView.hidden = YES;
+    } else {
+        self.emptyLabel.hidden = YES;
+        self.tableView.hidden = NO;
+    }
+
+    return count;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    if ([self.sequenceList count] == section)
+        return 1;
+    
+    if (section >= self.sequenceList.count) {
+        return 0;
+    }
+    NSNumber *key = [self.sequenceList objectAtIndex:section];
+    NSArray *val = [self.annotsDict objectForKey:key];
+    
+    return [val count];
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
+    if ([self.sequenceList count] == section) {
+        return 0;
+    }
+    return 44.0;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    if ([self.sequenceList count] == indexPath.section){
+        return 44;
+    }
+    
+    NSNumber *key = [self.sequenceList objectAtIndex:indexPath.section];
+    NSArray *val = [self.annotsDict objectForKey:key];
+    
+    CPDFAnnotation *annot = [val objectAtIndex:indexPath.row];
+    if ([annot isKindOfClass:[CPDFMarkupAnnotation class]]){
+        NSString *text = [(CPDFMarkupAnnotation *)annot markupText];
+        NSArray<NSString *> *contextArray = [text componentsSeparatedByString:@"\n"];
+        switch (contextArray.count) {
+            case 0:
+                return 44;
+            case 1:
+                return 44+25;
+            case 2:
+                return 44+45;
+            case 3:
+                return 44+60;
+            default:
+                return 44+60;
+        }
+        
+    }else if (([annot contents] && ![[annot contents] isEqualToString:@""])){
+        NSArray<NSString *> *contextArray = [[annot contents] componentsSeparatedByString:@"\n"];
+        switch (contextArray.count) {
+            case 1:
+                return 44+25;
+            case 2:
+                return 44+40;
+            case 3:
+                return 44+60;
+            default:
+                return 44+60;
+        }
+    }else{
+        return 40;
+    }
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
+    if ([self.sequenceList count] == section)
+        return nil;
+    
+    if (section >= self.sequenceList.count) {
+        return nil;
+    }
+    
+    NSNumber *key = [self.sequenceList objectAtIndex:section];
+    NSArray *val = [self.annotsDict objectForKey:key];
+    
+    CAnnotListHeaderInSection *headerView = [[CAnnotListHeaderInSection alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44.0)];
+    [headerView setPageNumber:[key integerValue] + 1];
+    [headerView setAnnotsCount:[val count]];
+    
+    return headerView;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+    CPDFAnnotationListCell *cell = (CPDFAnnotationListCell*)[tableView dequeueReusableCellWithIdentifier:@"cell"];
+    if (cell == nil) {
+        cell = [[CPDFAnnotationListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
+    }
+    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+    if ([self.sequenceList count] == indexPath.section){
+ 
+    }else{
+        NSNumber *key = [self.sequenceList objectAtIndex:indexPath.section];
+        NSArray *val = [self.annotsDict objectForKey:key];
+        CPDFAnnotation *annot = [val objectAtIndex:indexPath.row];
+        
+        [cell updateCellWithAnnotation:annot];
+    }
+    return cell;
+}
+
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    if ([self.sequenceList count] == indexPath.section){
+        return;
+    }
+    
+    NSNumber *key = [self.sequenceList objectAtIndex:indexPath.section];
+    NSArray *val = [self.annotsDict objectForKey:key];
+    CPDFAnnotation *annot = [val objectAtIndex:indexPath.row];
+    
+    if ([self.delegate respondsToSelector:@selector(annotationViewController:jumptoPage:selectAnnot:)]) {
+        [self.delegate annotationViewController:self jumptoPage:[key integerValue] selectAnnot:annot];
+    }
+}
+
+@end

+ 33 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotionColorDrawView.h

@@ -0,0 +1,33 @@
+//
+//  CPDFAnnotionColorDrawView.h
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef NS_ENUM(NSInteger, CPDFAnnotionMarkUpType) {
+    CPDFAnnotionMarkUpTypeHighlight,
+    CPDFAnnotionMarkUpTypeUnderline,
+    CPDFAnnotionMarkUpTypeStrikeout,
+    CPDFAnnotionMarkUpTypeSquiggly,
+    CPDFAnnotionMarkUpTypeFreehand
+};
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CPDFAnnotionColorDrawView : UIView
+
+@property(nonatomic, strong)UIColor * lineColor;
+
+@property(nonatomic, assign)CPDFAnnotionMarkUpType markUpType;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 58 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/CPDFAnnotionColorDrawView.m

@@ -0,0 +1,58 @@
+//
+//  CPDFAnnotionColorDrawView.m
+//  ComPDFKit_Tools
+//
+//  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.
+//
+
+#import "CPDFAnnotionColorDrawView.h"
+
+@implementation CPDFAnnotionColorDrawView
+
+- (id)initWithFrame:(CGRect)frame {
+    self = [super initWithFrame:frame];
+    if (self) {
+        // Initialization code
+        self.backgroundColor = [UIColor clearColor];
+        self.alpha = 0.7;
+        self.userInteractionEnabled = NO;
+    }
+    return self;
+}
+
+
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect
+{
+    CGContextRef ctx = UIGraphicsGetCurrentContext();
+    if (!ctx) {
+        return;
+    }
+    
+    CGContextSetStrokeColorWithColor(ctx, _lineColor.CGColor);
+    if (CPDFAnnotionMarkUpTypeUnderline == _markUpType ||
+        CPDFAnnotionMarkUpTypeStrikeout == _markUpType) {
+        CGContextMoveToPoint(ctx, 0, 0);
+        CGContextSetLineWidth(ctx, self.frame.size.width);
+        CGContextAddLineToPoint(ctx, self.frame.size.width,  0);
+    }else if (CPDFAnnotionMarkUpTypeHighlight == _markUpType){
+        CGContextMoveToPoint(ctx, 0, self.frame.size.height/2);
+        CGContextSetLineWidth(ctx, self.frame.size.height);
+        CGContextAddLineToPoint(ctx, self.frame.size.width, self.frame.size.height/2);
+    } else if (CPDFAnnotionMarkUpTypeSquiggly == _markUpType || CPDFAnnotionMarkUpTypeFreehand == _markUpType) {
+        float tWidth = self.frame.size.width / 6.0;
+        CGContextMoveToPoint(ctx, 0, self.frame.size.height/2.0);
+        CGContextSetLineWidth(ctx, 2.0);
+        CGContextAddCurveToPoint(ctx,tWidth,self.frame.size.height,tWidth*2.0,0.0,tWidth*3.0,self.frame.size.height/2.0);
+        CGContextAddCurveToPoint(ctx,tWidth*4.0,self.frame.size.height,tWidth*5.0,0.0,tWidth*6.0,self.frame.size.height/2.0);
+    }
+    CGContextStrokePath(ctx);
+}
+
+
+@end

compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/ic 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/ic 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/ic.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationFreehand.imageset/ic.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationHighlight.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationHighlight.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationHighlight.imageset/ic.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationHighlight.imageset/ic.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/note 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/note 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/note.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationNote.imageset/note.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/nor 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/nor 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/nor.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationPhoto.imageset/nor.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/music 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/music 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/music.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationRecord.imageset/music.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/arrow 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/arrow 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/arrow.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeArrow.imageset/arrow.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/oval 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/oval 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/oval.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeCircle.imageset/oval.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/line 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/line 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/line.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeLine.imageset/line.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/rec 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/rec 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/rec.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationShapeRectangle.imageset/rec.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/nor 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/nor 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/nor.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationSign.imageset/nor.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/nor 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/nor 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/nor.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStamp.imageset/nor.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/ic 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/ic 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/ic.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationStrikethrough.imageset/ic.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/text 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/text 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/text.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationText.imageset/text.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/Contents.json


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/ic 1.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/ic 1.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/ic.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/CImageNamePDFAnnotationUnderline.imageset/ic.pdf


ComPDFKit/ComPDFKit/Assets.xcassets/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotation/Image.xcassets/Contents.json


+ 61 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotationManage/CAnnotationManage.h

@@ -0,0 +1,61 @@
+//
+//  CAnnotationManage.h
+//  ComPDFKit_Tools
+//
+//  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 <UIKit/UIKit.h>
+#import <ComPDFKit_Tools/CPDFListView.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class CPDFListView;
+@class CAnnotStyle;
+@class CPDFAnnotation;
+
+@interface CAnnotationManage : NSObject
+
+@property (nonatomic, readonly) CPDFListView *pdfListView;
+
+@property (nonatomic, readonly) CAnnotStyle *annotStyle;
+
+- (instancetype)initWithPDFView:(CPDFListView *)pdfListView;
+
+- (void)setAnnotStyleFromAnnotations:(NSArray<CPDFAnnotation *> *)annotations;
+
+- (void)setAnnotStyleFromMode:(CPDFViewAnnotationMode)annotationMode;
+
+- (void)refreshPageWithAnnotations:(NSArray *)annotations;
+/**
+ * Get the default color of highlight annotations.
+ */
++ (UIColor *)highlightAnnotationColor;
+/**
+ * Get the default color of underline annotations.
+ */
++ (UIColor *)underlineAnnotationColor;
+
+/**
+ * Get the default color of strikeout annotations.
+ */
++ (UIColor *)strikeoutAnnotationColor;
+
+/**
+ * Get the default color of squiggly annotations.
+ */
++ (UIColor *)squigglyAnnotationColor;
+
+/**
+ * Get the default color of freehand annotations.
+ */
++ (UIColor *)freehandAnnotationColor;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 112 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFAnnotationManage/CAnnotationManage.m

@@ -0,0 +1,112 @@
+//
+//  CAnnotationManage.m
+//  ComPDFKit_Tools
+//
+//  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 "CAnnotationManage.h"
+#import "CPDFListView.h"
+#import "CAnnotStyle.h"
+
+#import <ComPDFKit/ComPDFKit.h>
+
+@interface CAnnotationManage ()
+
+@property (nonatomic, strong) CPDFListView *pdfListView;
+
+@property (nonatomic, strong) CPDFAnnotation *annotation;
+
+@property (nonatomic, strong) CAnnotStyle *annotStyle;
+
+@end
+
+@implementation CAnnotationManage
+
+- (instancetype)initWithPDFView:(CPDFListView *)pdfListView {
+    if (self = [super init]) {
+        self.pdfListView = pdfListView;
+    }
+    return self;
+}
+
+#pragma mark - Publice Methods
+
+- (void)setAnnotStyleFromAnnotations:(NSArray<CPDFAnnotation *> *)annotations {
+    self.annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:CPDFViewAnnotationModeNone annotations:annotations];
+}
+
+- (void)refreshPageWithAnnotations:(NSArray *)annotations {
+    NSMutableArray *pages = [NSMutableArray array];
+    for (CPDFAnnotation * annotation in annotations) {
+        CPDFPage *page = annotation.page;
+        if(![pages containsObject:page]) {
+            [pages addObject:page];
+        }
+        
+    }
+    for (CPDFPage *page in pages) {
+           [self.pdfListView setNeedsDisplayForPage:page];
+    }
+}
+
+- (void)setAnnotStyleFromMode:(CPDFViewAnnotationMode)annotationMode {
+    self.annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:annotationMode annotations:@[]];
+}
+
++ (CPDFKitPlatformColor *)highlightAnnotationColor {
+    CPDFKitPlatformColor *highlightAnnotationColor = nil;
+    CAnnotStyle *annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:CPDFViewAnnotationModeHighlight annotations:@[]];
+    CGFloat red, green, blue, alpha;
+    [annotStyle.color getRed:&red green:&green blue:&blue alpha:&alpha];
+    
+    highlightAnnotationColor = [CPDFKitPlatformColor colorWithRed:red green:green blue:blue alpha:annotStyle.opacity];
+    return highlightAnnotationColor;
+}
+
++ (CPDFKitPlatformColor *)underlineAnnotationColor {
+    CPDFKitPlatformColor *underlineAnnotationColor = nil;
+    CAnnotStyle *annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:CPDFViewAnnotationModeUnderline annotations:@[]];
+    CGFloat red, green, blue, alpha;
+    [annotStyle.color getRed:&red green:&green blue:&blue alpha:&alpha];
+    
+    underlineAnnotationColor = [CPDFKitPlatformColor colorWithRed:red green:green blue:blue alpha:annotStyle.opacity];
+    return underlineAnnotationColor;
+}
+
++ (CPDFKitPlatformColor *)strikeoutAnnotationColor {
+    CPDFKitPlatformColor *strikeoutAnnotationColor = nil;
+    CAnnotStyle *annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:CPDFViewAnnotationModeStrikeout annotations:@[]];
+    CGFloat red, green, blue, alpha;
+    [annotStyle.color getRed:&red green:&green blue:&blue alpha:&alpha];
+    
+    strikeoutAnnotationColor = [CPDFKitPlatformColor colorWithRed:red green:green blue:blue alpha:annotStyle.opacity];
+    return strikeoutAnnotationColor;
+}
+
++ (CPDFKitPlatformColor *)squigglyAnnotationColor {
+    CPDFKitPlatformColor *squigglyAnnotationColor = nil;
+    CAnnotStyle *annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:CPDFViewAnnotationModeSquiggly annotations:@[]];
+    CGFloat red, green, blue, alpha;
+    [annotStyle.color getRed:&red green:&green blue:&blue alpha:&alpha];
+    
+    squigglyAnnotationColor = [CPDFKitPlatformColor colorWithRed:red green:green blue:blue alpha:annotStyle.opacity];
+    return squigglyAnnotationColor;
+}
+
++ (CPDFKitPlatformColor *)freehandAnnotationColor {
+    CPDFKitPlatformColor *freehandAnnotationColor = nil;
+    CAnnotStyle *annotStyle = [[CAnnotStyle alloc] initWithAnnotionMode:CPDFViewAnnotationModeInk annotations:@[]];
+    CGFloat red, green, blue, alpha;
+    [annotStyle.color getRed:&red green:&green blue:&blue alpha:&alpha];
+    
+    freehandAnnotationColor = [CPDFKitPlatformColor colorWithRed:red green:green blue:blue alpha:annotStyle.opacity];
+    return freehandAnnotationColor;
+}
+
+@end

+ 27 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/CPDFAnnotationBaseViewController.h

@@ -0,0 +1,27 @@
+//
+//  CPDFAnnotationBaseViewController.h
+//  ComPDFKit_Tools
+//
+//  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 <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class CAnnotStyle;
+
+@interface CPDFAnnotationBaseViewController : UIViewController
+
+@property (nonatomic, readonly) CAnnotStyle *annotStyle;
+
+- (instancetype)initWithStyle:(CAnnotStyle *)annotStyle;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 211 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/CPDFAnnotationBaseViewController.m

@@ -0,0 +1,211 @@
+//
+//  CPDFAnnotationBaseViewController.m
+//  ComPDFKit_Tools
+//
+//  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 "CPDFAnnotationBaseViewController.h"
+#import "CPDFAnnotationBaseViewController_Header.h"
+
+#import <ComPDFKit_Tools/CPDFColorUtils.h>
+
+@interface CPDFAnnotationBaseViewController () <UIColorPickerViewControllerDelegate, CPDFColorSelectViewDelegate, CPDFColorPickerViewDelegate, CPDFOpacitySliderViewDelegate>
+
+@end
+
+@implementation CPDFAnnotationBaseViewController
+
+#pragma mark - Initializers
+
+- (instancetype)initWithStyle:(CAnnotStyle *)annotStyle {
+    if (self = [super init]) {
+        self.annotStyle = annotStyle;
+    }
+    return self;
+}
+
+#pragma mark - ViewController Methods
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    self.headerView = [[UIView alloc] init];
+    self.headerView.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1].CGColor;
+    self.headerView.layer.borderWidth = 1.0;
+    self.headerView.backgroundColor = [CPDFColorUtils CAnnotationPropertyViewControllerBackgoundColor];
+    [self.view addSubview:self.headerView];
+    
+    self.titleLabel = [[UILabel alloc] init];
+    self.titleLabel.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
+    self.titleLabel.textAlignment = NSTextAlignmentCenter;
+    self.titleLabel.font = [UIFont systemFontOfSize:20];
+    self.titleLabel.adjustsFontSizeToFitWidth = YES;
+    [self.headerView addSubview:self.titleLabel];
+    
+    self.scrcollView = [[UIScrollView alloc] init];
+    self.scrcollView.scrollEnabled = YES;
+    [self.view addSubview:self.scrcollView];
+    
+    self.backBtn = [[UIButton alloc] init];
+    self.backBtn.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
+    [self.backBtn setImage:[UIImage imageNamed:@"CPDFAnnotationBaseImageBack" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil] forState:UIControlStateNormal];
+    [self.backBtn addTarget:self action:@selector(buttonItemClicked_back:) forControlEvents:UIControlEventTouchUpInside];
+    [self.headerView addSubview:self.backBtn];
+    
+    self.sampleBackgoundView = [[UIView alloc] init];
+    self.sampleBackgoundView.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1].CGColor;
+    self.sampleBackgoundView.layer.borderWidth = 1.0;
+    self.sampleBackgoundView.backgroundColor = [CPDFColorUtils CAnnotationSampleBackgoundColor];
+    [self.headerView addSubview:self.sampleBackgoundView];
+    
+    self.sampleView = [[CPDFAnnotationSampleView alloc] init];
+    self.sampleView.backgroundColor = [UIColor whiteColor];
+    self.sampleView.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1].CGColor;
+    self.sampleView.layer.borderWidth = 1.0;
+    self.sampleView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
+    [self.sampleBackgoundView addSubview:self.sampleView];
+    
+    self.colorView = [[CPDFColorSelectView alloc] init];
+    self.colorView.delegate = self;
+    self.colorView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
+    [self.scrcollView addSubview:self.colorView];
+    
+    self.opacitySliderView = [[CPDFOpacitySliderView alloc] init];
+    self.opacitySliderView.delegate = self;
+    self.opacitySliderView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
+    [self.scrcollView addSubview:self.opacitySliderView];
+    
+    self.view.backgroundColor = [CPDFColorUtils CAnnotationPropertyViewControllerBackgoundColor];
+    [self updatePreferredContentSizeWithTraitCollection:self.traitCollection];
+}
+
+- (void)viewWillLayoutSubviews {
+    [super viewWillLayoutSubviews];
+    self.titleLabel.frame = CGRectMake((self.view.frame.size.width - 120)/2, 5, 120, 50);
+    self.scrcollView.frame = CGRectMake(0, 170, self.view.frame.size.width, 210);
+    self.headerView.frame = CGRectMake(0, 0, self.view.frame.size.width, 170);
+    self.scrcollView.contentSize = CGSizeMake(self.view.frame.size.width, 330);
+    self.sampleBackgoundView.frame = CGRectMake(0, 50, self.view.bounds.size.width, 120);
+    self.sampleView.frame  = CGRectMake((self.view.frame.size.width - 300)/2, 15, 300, self.sampleBackgoundView.bounds.size.height - 30);
+    
+    if (@available(iOS 11.0, *)) {
+        self.colorPicker.frame = CGRectMake(self.view.safeAreaInsets.left, 0, self.view.frame.size.width - self.view.safeAreaInsets.left - self.view.safeAreaInsets.right, self.view.frame.size.height);
+        self.colorView.frame = CGRectMake(self.view.safeAreaInsets.left, 0,self.view.frame.size.width - self.view.safeAreaInsets.left - self.view.safeAreaInsets.right, 90);
+        self.opacitySliderView.frame = CGRectMake(self.view.safeAreaInsets.left, 90, self.view.frame.size.width - self.view.safeAreaInsets.left - self.view.safeAreaInsets.right, 90);
+        self.backBtn.frame = CGRectMake(self.view.frame.size.width - 60 - self.view.safeAreaInsets.right, 5, 50, 50);
+    } else {
+        self.colorView.frame = CGRectMake(0, 0, self.view.frame.size.width, 90);
+        self.opacitySliderView.frame = CGRectMake(0, 90, self.view.frame.size.width, 90);
+        self.backBtn.frame = CGRectMake(self.view.frame.size.width - 60, 5, 50, 50);
+    }
+}
+
+- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
+    [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
+    [self updatePreferredContentSizeWithTraitCollection:newCollection];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    [self commomInitTitle];
+    [self commomInitFromAnnotStyle];
+}
+
+#pragma mark - Protect Methods
+
+- (void)commomInitTitle {
+    self.titleLabel.text = NSLocalizedString(@"Note", nil);
+    self.sampleView.selecIndex = CPDFSamplesHighlight;
+    self.colorView.colorLabel.text = NSLocalizedString(@"Color:", nil);
+    self.colorView.selectedColor = self.annotStyle.color;
+    [self.colorView setNeedsLayout];
+}
+
+- (void)commomInitFromAnnotStyle {
+    self.sampleView.color = self.annotStyle.color;
+    self.sampleView.opcity = self.annotStyle.opacity;
+    self.opacitySliderView.opacitySlider.value = self.annotStyle.opacity;
+    self.opacitySliderView.startLabel.text = [NSString stringWithFormat:@"%d%%", (int)((self.opacitySliderView.opacitySlider.value/1)*100)];
+}
+
+- (void)updatePreferredContentSizeWithTraitCollection:(UITraitCollection *)traitCollection {
+    if ([self.colorPicker superview]) {
+        UIDevice *currentDevice = [UIDevice currentDevice];
+        if (currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
+            // This is an iPad
+            self.preferredContentSize = CGSizeMake(self.view.bounds.size.width, 520);
+        } else {
+            // This is an iPhone or iPod touch
+            self.preferredContentSize = CGSizeMake(self.view.bounds.size.width, 320);
+        }
+       
+    } else {
+        self.preferredContentSize = CGSizeMake(self.view.bounds.size.width, traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact ? 350 : 420);
+    }
+}
+
+#pragma mark - Action
+
+- (void)buttonItemClicked_back:(id)sender {
+    [self dismissViewControllerAnimated:YES completion:nil];
+}
+
+#pragma mark - CPDFColorSelectViewDelegate
+
+- (void)selectColorView:(CPDFColorSelectView *)select {
+    if (@available(iOS 14.0, *)) {
+        UIColorPickerViewController *picker = [[UIColorPickerViewController alloc] init];
+        picker.delegate = self;
+        [self presentViewController:picker animated:YES completion:nil];
+    } else {
+        UIDevice *currentDevice = [UIDevice currentDevice];
+        if (currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
+            // This is an iPad
+            _colorPicker = [[CPDFColorPickerView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, 520)];
+        } else {
+            // This is an iPhone or iPod touch
+            _colorPicker = [[CPDFColorPickerView alloc] initWithFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, 320)];
+        }
+       
+        _colorPicker.delegate = self;
+        _colorView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+        _colorPicker.backgroundColor = [CPDFColorUtils CAnnotationPropertyViewControllerBackgoundColor];
+        [self.view addSubview:self.colorPicker];
+        [self updatePreferredContentSizeWithTraitCollection:self.traitCollection];
+    }
+}
+
+- (void)selectColorView:(CPDFColorSelectView *)select color:(UIColor *)color {
+    self.sampleView.color = color;
+    [self.sampleView setNeedsDisplay];
+}
+
+#pragma mark - CPDFColorPickerViewDelegate
+
+- (void)pickerView:(CPDFColorPickerView *)colorPickerView color:(UIColor *)color {
+    self.sampleView.color = color;
+    [self.sampleView setNeedsDisplay];
+    
+    CGFloat red, green, blue, alpha;
+    [color getRed:&red green:&green blue:&blue alpha:&alpha];
+    self.opacitySliderView.opacitySlider.value = alpha;
+    self.opacitySliderView.startLabel.text = [NSString stringWithFormat:@"%d%%", (int)((self.opacitySliderView.opacitySlider.value/1)*100)];
+    
+    [self updatePreferredContentSizeWithTraitCollection:self.traitCollection];
+}
+
+#pragma mark - CPDFOpacitySliderViewDelegate
+
+- (void)opacitySliderView:(CPDFOpacitySliderView *)opacitySliderView opacity:(CGFloat)opacity {
+    self.sampleView.opcity = opacity;
+    [self.sampleView setNeedsDisplay];
+    
+}
+
+@end

+ 47 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/CPDFAnnotationBaseViewController_Header.h

@@ -0,0 +1,47 @@
+//
+//  CPDFAnnotationBaseViewController_Header.h
+//  ComPDFKit_Tools
+//
+//  Created by kdanmobile_2 on 2023/4/23.
+//
+
+#ifndef CPDFAnnotationBaseViewController_Header_h
+#define CPDFAnnotationBaseViewController_Header_h
+
+#import "CPDFAnnotationSampleView.h"
+#import "CPDFColorSelectView.h"
+#import "CPDFOpacitySliderView.h"
+#import "CPDFColorPickerView.h"
+#import "CAnnotStyle.h"
+
+@interface CPDFAnnotationBaseViewController ()
+
+@property (nonatomic, strong) CPDFAnnotationSampleView *sampleView;
+
+@property (nonatomic, strong) CPDFColorSelectView *colorView;
+
+@property (nonatomic, strong) CPDFOpacitySliderView *opacitySliderView;
+
+@property (nonatomic, strong) CPDFColorPickerView *colorPicker;
+
+@property (nonatomic, strong) UIScrollView *scrcollView;
+
+@property (nonatomic, strong) UIButton *backBtn;
+
+@property (nonatomic, strong) UILabel *titleLabel;
+
+@property (nonatomic, strong) CAnnotStyle *annotStyle;
+
+@property (nonatomic, strong) UIView *sampleBackgoundView;
+
+@property (nonatomic, strong) UIView *headerView;
+
+- (void)commomInitTitle;
+
+- (void)commomInitFromAnnotStyle;
+
+- (void)updatePreferredContentSizeWithTraitCollection:(UITraitCollection *)traitCollection;
+
+@end
+
+#endif /* CPDFAnnotationBaseViewController_Header_h */

compdfkit-tools/compdfkit-tools/Annotation/PDFProperties/PDFBase/Image.xcassets/CPDFAnnotationBaseImageBack.imageset/Close Button.pdf → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/Image.xcassets/CPDFAnnotationBaseImageBack.imageset/Close Button.pdf


compdfkit-tools/compdfkit-tools/Annotation/PDFProperties/PDFBase/Image.xcassets/CPDFAnnotationBaseImageBack.imageset/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/Image.xcassets/CPDFAnnotationBaseImageBack.imageset/Contents.json


Edit-Ctrl-Demo/Edit-Ctrl-Demo/Assets.xcassets/Contents.json → ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFBase/Image.xcassets/Contents.json


+ 0 - 0
ComPDFKit_Tools/ComPDFKit_Tools/Annotation/PDFProperties/PDFFreeText/CPDFFreeTextViewController.h


Some files were not shown because too many files changed in this diff