Browse Source

compdfkit(rn) - 1.ComPDFKit SDK 升级至1.9.1 2.rn升级至0.72.5

liuxiaolong 1 year ago
parent
commit
8d81ab00d3
100 changed files with 4124 additions and 1173 deletions
  1. 0 6
      .buckconfig
  2. 1 1
      .eslintrc.js
  3. 0 67
      .flowconfig
  4. 14 9
      .gitignore
  5. 0 1
      .ruby-version
  6. 0 24
      .vscode/settings.json
  7. 1 1
      .watchmanconfig
  8. 0 74
      App.js
  9. 75 0
      App.tsx
  10. 2 2
      Gemfile
  11. 25 25
      Gemfile.lock
  12. 79 0
      README.md
  13. 3 0
      __tests__/App-test.js
  14. 0 55
      android/app/BUCK
  15. 57 259
      android/app/build.gradle
  16. 0 19
      android/app/build_defs.bzl
  17. BIN
      android/app/libs/ComPDFKit-UI.aar
  18. BIN
      android/app/libs/ComPDFKit.aar
  19. BIN
      android/app/libs/ComPDFKit_Tools.aar
  20. 4 2
      android/app/src/debug/java/com/compdfkit/ReactNativeFlipper.java
  21. 4 2
      android/app/src/main/AndroidManifest.xml
  22. 11 19
      android/app/src/main/java/com/compdfkit/pdfviewer/MainActivity.java
  23. 21 48
      android/app/src/main/java/com/compdfkit/pdfviewer/MainApplication.java
  24. 0 118
      android/app/src/main/java/com/compdfkit/pdfviewer/newarchitecture/MainApplicationReactNativeHost.java
  25. 0 36
      android/app/src/main/java/com/compdfkit/pdfviewer/newarchitecture/components/MainComponentsRegistry.java
  26. 0 48
      android/app/src/main/java/com/compdfkit/pdfviewer/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
  27. 9 3
      android/app/src/main/java/com/compdfkit/pdfviewer/pdf/PDFActivity.java
  28. 0 49
      android/app/src/main/jni/Android.mk
  29. 0 24
      android/app/src/main/jni/MainApplicationModuleProvider.cpp
  30. 0 16
      android/app/src/main/jni/MainApplicationModuleProvider.h
  31. 0 45
      android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
  32. 0 38
      android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
  33. 0 61
      android/app/src/main/jni/MainComponentsRegistry.cpp
  34. 0 32
      android/app/src/main/jni/MainComponentsRegistry.h
  35. 0 11
      android/app/src/main/jni/OnLoad.cpp
  36. 1 1
      android/app/src/main/res/drawable/rn_edit_text_material.xml
  37. 1 1
      android/app/src/main/res/values/strings.xml
  38. 20 0
      android/app/src/release/java/com/compdfkit_rn/ReactNativeFlipper.java
  39. 3 29
      android/build.gradle
  40. 6 2
      android/gradle.properties
  41. BIN
      android/gradle/wrapper/gradle-wrapper.jar
  42. 2 1
      android/gradle/wrapper/gradle-wrapper.properties
  43. 14 4
      android/gradlew
  44. 9 6
      android/gradlew.bat
  45. 2 7
      android/settings.gradle
  46. 3 3
      app.json
  47. 11 0
      ios/.xcode.env
  48. 118 24
      ios/CPDFViewController.m
  49. 41 0
      ios/ComPDFKit.xcframework/Info.plist
  50. 25 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/0d264c89.0
  51. 15 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/1801b70e.0
  52. 32 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/62edae9d.0
  53. 39 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/71b2c918.0
  54. 29 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/a10809e8.0
  55. 65 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/eCA_64s.crt
  56. BIN
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/ComPDFKit
  57. BIN
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/DroidSansFallback.ttf
  58. 30 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFAction.h
  59. 39 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFAnnotation+AP.h
  60. 188 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFAnnotation.h
  61. 103 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBackground.h
  62. 20 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBates.h
  63. 41 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBookmark.h
  64. 47 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBorder.h
  65. 102 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFButtonWidgetAnnotation.h
  66. 31 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFChoiceWidgetAnnotation+Protected.h
  67. 48 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFChoiceWidgetAnnotation.h
  68. 34 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCircleAnnotation.h
  69. 79 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCompareContent.h
  70. 128 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCompareOverlay.h
  71. 79 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCompareResults.h
  72. 76 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFDestination.h
  73. 69 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFDocument+Protected.h
  74. 563 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFDocument.h
  75. 39 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFFreeTextAnnotation.h
  76. 40 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFGoToAction.h
  77. 77 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFHeaderFooter.h
  78. 26 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFInkAnnotation+Protected.h
  79. 28 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFInkAnnotation.h
  80. 83 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKit.h
  81. 54 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKitConfig+Private.h
  82. 233 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKitConfig.h
  83. 39 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKitPlatform.h
  84. 80 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFLineAnnotation.h
  85. 38 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFLinkAnnotation.h
  86. 58 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFMarkupAnnotation.h
  87. 22 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFMovieAnnotation.h
  88. 42 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFNamedAction.h
  89. 104 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFOutline.h
  90. 58 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFPage+Protected.h
  91. 201 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFPage.h
  92. 90 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFRedactAnnotation.h
  93. 22 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFResetFormAction.h
  94. 44 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSelection+Protected.h
  95. 56 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSelection.h
  96. 181 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignature.h
  97. 19 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureAnnotation+Protected.h
  98. 21 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureAnnotation.h
  99. 50 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureWidgetAnnotation+Signature.h
  100. 0 0
      ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureWidgetAnnotation.h

+ 0 - 6
.buckconfig

@@ -1,6 +0,0 @@
-
-[android]
-  target = Google Inc.:Google APIs:23
-
-[maven_repositories]
-  central = https://repo1.maven.org/maven2

+ 1 - 1
.eslintrc.js

@@ -1,4 +1,4 @@
 module.exports = {
   root: true,
-  extends: '@react-native-community',
+  extends: '@react-native',
 };

+ 0 - 67
.flowconfig

@@ -1,67 +0,0 @@
-[ignore]
-; We fork some components by platform
-.*/*[.]android.js
-
-; Ignore "BUCK" generated dirs
-<PROJECT_ROOT>/\.buckd/
-
-; Ignore polyfills
-node_modules/react-native/Libraries/polyfills/.*
-
-; Flow doesn't support platforms
-.*/Libraries/Utilities/LoadingView.js
-
-.*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$
-
-[untyped]
-.*/node_modules/@react-native-community/cli/.*/.*
-
-[include]
-
-[libs]
-node_modules/react-native/interface.js
-node_modules/react-native/flow/
-
-[options]
-emoji=true
-
-exact_by_default=true
-
-format.bracket_spacing=false
-
-module.file_ext=.js
-module.file_ext=.json
-module.file_ext=.ios.js
-
-munge_underscores=true
-
-module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
-module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
-
-suppress_type=$FlowIssue
-suppress_type=$FlowFixMe
-suppress_type=$FlowFixMeProps
-suppress_type=$FlowFixMeState
-
-[lints]
-sketchy-null-number=warn
-sketchy-null-mixed=warn
-sketchy-number=warn
-untyped-type-import=warn
-nonstrict-import=warn
-deprecated-type=warn
-unsafe-getters-setters=warn
-unnecessary-invariant=warn
-signature-verification-failure=warn
-
-[strict]
-deprecated-type
-nonstrict-import
-sketchy-null
-unclear-type
-unsafe-getters-setters
-untyped-import
-untyped-type-import
-
-[version]
-^0.170.0

+ 14 - 9
.gitignore

@@ -20,6 +20,7 @@ DerivedData
 *.hmap
 *.ipa
 *.xcuserstate
+ios/.xcode.env.local
 
 # Android/IntelliJ
 #
@@ -29,6 +30,9 @@ build/
 local.properties
 *.iml
 *.hprof
+.cxx/
+*.keystore
+!debug.keystore
 
 # node.js
 #
@@ -36,12 +40,6 @@ node_modules/
 npm-debug.log
 yarn-error.log
 
-# BUCK
-buck-out/
-\.buckd/
-*.keystore
-!debug.keystore
-
 # fastlane
 #
 # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
@@ -49,9 +47,10 @@ buck-out/
 # For more information about the recommended setup visit:
 # https://docs.fastlane.tools/best-practices/source-control/
 
-*/fastlane/report.xml
-*/fastlane/Preview.html
-*/fastlane/screenshots
+**/fastlane/report.xml
+**/fastlane/Preview.html
+**/fastlane/screenshots
+**/fastlane/test_output
 
 # Bundle artifact
 *.jsbundle
@@ -59,3 +58,9 @@ buck-out/
 # Ruby / CocoaPods
 /ios/Pods/
 /vendor/bundle/
+
+# Temporary files created by Metro to check the health of the file watcher
+.metro-health-check*
+
+# testing
+/coverage

+ 0 - 1
.ruby-version

@@ -1 +0,0 @@
-2.7.4

+ 0 - 24
.vscode/settings.json

@@ -1,24 +0,0 @@
-{
-    "editor.tokenColorCustomizations": {
-        "textMateRules": [
-            {
-                "scope": "googletest.failed",
-                "settings": {
-                    "foreground": "#f00"
-                }
-            },
-            {
-                "scope": "googletest.passed",
-                "settings": {
-                    "foreground": "#0f0"
-                }
-            },
-            {
-                "scope": "googletest.run",
-                "settings": {
-                    "foreground": "#0f0"
-                }
-            }
-        ]
-    }
-}

+ 1 - 1
.watchmanconfig

@@ -1 +1 @@
-{}
+{}

+ 0 - 74
App.js

@@ -1,74 +0,0 @@
-/**
- * Sample React Native App
- * https://github.com/facebook/react-native
- * @flow
- */
-
-import React, { Component } from 'react';
-import {
-  Platform,
-  StyleSheet,
-  Text,
-  View,
-  Button,
-  NativeModules
-} from 'react-native';
-
-var nativeModule = NativeModules.OpenNativeModule;
-// var analyticsModule = NativeModules.UMAnalyticsModule;
-
-
-const instructions = Platform.select({
-  ios: 'Press Cmd+R to reload,\n' +
-    'Cmd+D or shake for dev menu',
-  android: 'Double tap R on your keyboard to reload,\n' +
-    'Shake or press menu button for dev menu',
-});
-
-type Props = {};
-export default class App extends Component<Props> {
-  render() {
-    return (
-      <View style={styles.container}>
-        <Text style={styles.welcome}>
-          Welcome to React Native!
-        </Text>
-        <Text style={styles.instructions}>
-          To get started, edit App.js
-        </Text>
-        <Text style={styles.instructions}>
-          {instructions}
-        </Text>
-        <Button
-          title={'Jump to the native page'}
-          onPress={() => {
-            this.jumpToNativeView();
-          }}
-        />
-      </View>
-    );
-  }
-  
-  jumpToNativeView() {
-        NativeModules.OpenPDFModule.openPDF()
-  }
-}
-
-const styles = StyleSheet.create({
-  container: {
-    flex: 1,
-    justifyContent: 'center',
-    alignItems: 'center',
-    backgroundColor: '#F5FCFF',
-  },
-  welcome: {
-    fontSize: 20,
-    textAlign: 'center',
-    margin: 10,
-  },
-  instructions: {
-    textAlign: 'center',
-    color: '#333333',
-    marginBottom: 5,
-  },
-});

+ 75 - 0
App.tsx

@@ -0,0 +1,75 @@
+/**
+ * Sample React Native App
+ * https://github.com/facebook/react-native
+ * @flow
+ */
+
+ import React, { Component } from 'react';
+ import {
+   Platform,
+   StyleSheet,
+   Text,
+   View,
+   Button,
+   NativeModules
+ } from 'react-native';
+ 
+ var nativeModule = NativeModules.OpenNativeModule;
+ // var analyticsModule = NativeModules.UMAnalyticsModule;
+ 
+ 
+ const instructions = Platform.select({
+   ios: 'Press Cmd+R to reload,\n' +
+     'Cmd+D or shake for dev menu',
+   android: 'Double tap R on your keyboard to reload,\n' +
+     'Shake or press menu button for dev menu',
+ });
+ 
+ type Props = {};
+ export default class App extends Component<Props> {
+   render() {
+     return (
+       <View style={styles.container}>
+         <Text style={styles.welcome}>
+           Welcome to React Native!
+         </Text>
+         <Text style={styles.instructions}>
+           To get started, edit App.js
+         </Text>
+         <Text style={styles.instructions}>
+           {instructions}
+         </Text>
+         <Button
+           title={'Jump to the native page'}
+           onPress={() => {
+             this.jumpToNativeView();
+           }}
+         />
+       </View>
+     );
+   }
+   
+   jumpToNativeView() {
+         NativeModules.OpenPDFModule.openPDF()
+   }
+ }
+ 
+ const styles = StyleSheet.create({
+   container: {
+     flex: 1,
+     justifyContent: 'center',
+     alignItems: 'center',
+     backgroundColor: '#F5FCFF',
+   },
+   welcome: {
+     fontSize: 20,
+     textAlign: 'center',
+     margin: 10,
+   },
+   instructions: {
+     textAlign: 'center',
+     color: '#333333',
+     marginBottom: 5,
+   },
+ });
+ 

+ 2 - 2
Gemfile

@@ -1,6 +1,6 @@
 source 'https://rubygems.org'
 
 # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
-ruby '2.7.4'
+ruby ">= 2.6.10"
 
-gem 'cocoapods', '~> 1.11', '>= 1.11.2'
+gem 'cocoapods', '~> 1.12'

+ 25 - 25
Gemfile.lock

@@ -1,30 +1,30 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    CFPropertyList (3.0.5)
+    CFPropertyList (3.0.6)
       rexml
-    activesupport (6.1.5.1)
+    activesupport (6.1.7.6)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
       tzinfo (~> 2.0)
       zeitwerk (~> 2.3)
-    addressable (2.8.0)
-      public_suffix (>= 2.0.2, < 5.0)
+    addressable (2.8.5)
+      public_suffix (>= 2.0.2, < 6.0)
     algoliasearch (1.27.5)
       httpclient (~> 2.8, >= 2.8.3)
       json (>= 1.5.1)
     atomos (0.1.3)
     claide (1.1.0)
-    cocoapods (1.11.3)
+    cocoapods (1.13.0)
       addressable (~> 2.8)
       claide (>= 1.0.2, < 2.0)
-      cocoapods-core (= 1.11.3)
+      cocoapods-core (= 1.13.0)
       cocoapods-deintegrate (>= 1.0.3, < 2.0)
-      cocoapods-downloader (>= 1.4.0, < 2.0)
+      cocoapods-downloader (>= 1.6.0, < 2.0)
       cocoapods-plugins (>= 1.0.0, < 2.0)
       cocoapods-search (>= 1.0.0, < 2.0)
-      cocoapods-trunk (>= 1.4.0, < 2.0)
+      cocoapods-trunk (>= 1.6.0, < 2.0)
       cocoapods-try (>= 1.1.0, < 2.0)
       colored2 (~> 3.1)
       escape (~> 0.0.4)
@@ -32,10 +32,10 @@ GEM
       gh_inspector (~> 1.0)
       molinillo (~> 0.8.0)
       nap (~> 1.0)
-      ruby-macho (>= 1.0, < 3.0)
-      xcodeproj (>= 1.21.0, < 2.0)
-    cocoapods-core (1.11.3)
-      activesupport (>= 5.0, < 7)
+      ruby-macho (>= 2.3.0, < 3.0)
+      xcodeproj (>= 1.23.0, < 2.0)
+    cocoapods-core (1.13.0)
+      activesupport (>= 5.0, < 8)
       addressable (~> 2.8)
       algoliasearch (~> 1.0)
       concurrent-ruby (~> 1.1)
@@ -54,47 +54,47 @@ GEM
       netrc (~> 0.11)
     cocoapods-try (1.2.0)
     colored2 (3.1.2)
-    concurrent-ruby (1.1.10)
+    concurrent-ruby (1.2.2)
     escape (0.0.4)
-    ethon (0.15.0)
+    ethon (0.16.0)
       ffi (>= 1.15.0)
-    ffi (1.15.5)
+    ffi (1.16.3)
     fourflusher (2.3.1)
     fuzzy_match (2.0.4)
     gh_inspector (1.1.3)
     httpclient (2.8.3)
-    i18n (1.10.0)
+    i18n (1.14.1)
       concurrent-ruby (~> 1.0)
-    json (2.6.1)
-    minitest (5.15.0)
+    json (2.6.3)
+    minitest (5.20.0)
     molinillo (0.8.0)
     nanaimo (0.3.0)
     nap (1.1.0)
     netrc (0.11.0)
     public_suffix (4.0.7)
-    rexml (3.2.5)
+    rexml (3.2.6)
     ruby-macho (2.5.1)
     typhoeus (1.4.0)
       ethon (>= 0.9.0)
-    tzinfo (2.0.4)
+    tzinfo (2.0.6)
       concurrent-ruby (~> 1.0)
-    xcodeproj (1.21.0)
+    xcodeproj (1.23.0)
       CFPropertyList (>= 2.3.3, < 4.0)
       atomos (~> 0.1.3)
       claide (>= 1.0.2, < 2.0)
       colored2 (~> 3.1)
       nanaimo (~> 0.3.0)
       rexml (~> 3.2.4)
-    zeitwerk (2.5.4)
+    zeitwerk (2.6.12)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
-  cocoapods (~> 1.11, >= 1.11.2)
+  cocoapods (~> 1.12)
 
 RUBY VERSION
-   ruby 2.7.4p191
+   ruby 2.6.10p210
 
 BUNDLED WITH
-   2.2.27
+   1.17.2

+ 79 - 0
README.md

@@ -0,0 +1,79 @@
+This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
+
+# Getting Started
+
+>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
+
+## Step 1: Start the Metro Server
+
+First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
+
+To start Metro, run the following command from the _root_ of your React Native project:
+
+```bash
+# using npm
+npm start
+
+# OR using Yarn
+yarn start
+```
+
+## Step 2: Start your Application
+
+Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
+
+### For Android
+
+```bash
+# using npm
+npm run android
+
+# OR using Yarn
+yarn android
+```
+
+### For iOS
+
+```bash
+# using npm
+npm run ios
+
+# OR using Yarn
+yarn ios
+```
+
+If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
+
+This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
+
+## Step 3: Modifying your App
+
+Now that you have successfully run the app, let's modify it.
+
+1. Open `App.tsx` in your text editor of choice and edit some lines.
+2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
+
+   For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
+
+## Congratulations! :tada:
+
+You've successfully run and modified your React Native App. :partying_face:
+
+### Now what?
+
+- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
+- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
+
+# Troubleshooting
+
+If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
+
+# Learn More
+
+To learn more about React Native, take a look at the following resources:
+
+- [React Native Website](https://reactnative.dev) - learn more about React Native.
+- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
+- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
+- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
+- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.

+ 3 - 0
__tests__/App-test.js

@@ -6,6 +6,9 @@ import 'react-native';
 import React from 'react';
 import App from '../App';
 
+// Note: import explicitly to use the types shiped with jest.
+import {it} from '@jest/globals';
+
 // Note: test renderer must be required after react-native.
 import renderer from 'react-test-renderer';
 

+ 0 - 55
android/app/BUCK

@@ -1,55 +0,0 @@
-# To learn about Buck see [Docs](https://buckbuild.com/).
-# To run your application with Buck:
-# - install Buck
-# - `npm start` - to start the packager
-# - `cd android`
-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
-# - `buck install -r android/app` - compile, install and run application
-#
-
-load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
-
-lib_deps = []
-
-create_aar_targets(glob(["libs/*.aar"]))
-
-create_jar_targets(glob(["libs/*.jar"]))
-
-android_library(
-    name = "all-libs",
-    exported_deps = lib_deps,
-)
-
-android_library(
-    name = "app-code",
-    srcs = glob([
-        "src/main/java/**/*.java",
-    ]),
-    deps = [
-        ":all-libs",
-        ":build_config",
-        ":res",
-    ],
-)
-
-android_build_config(
-    name = "build_config",
-    package = "com.pdfview_rn",
-)
-
-android_resource(
-    name = "res",
-    package = "com.pdfview_rn",
-    res = "src/main/res",
-)
-
-android_binary(
-    name = "app",
-    keystore = "//android/keystores:debug",
-    manifest = "src/main/AndroidManifest.xml",
-    package_type = "debug",
-    deps = [
-        ":app-code",
-    ],
-)

+ 57 - 259
android/app/build.gradle

@@ -1,226 +1,85 @@
 apply plugin: "com.android.application"
-
-import com.android.build.OutputFile
-import org.apache.tools.ant.taskdefs.condition.Os
+apply plugin: "com.facebook.react"
 
 /**
- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
- * and bundleReleaseJsAndAssets).
- * These basically call `react-native bundle` with the correct arguments during the Android build
- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
- * bundle directly from the development server. Below you can see all the possible configurations
- * and their defaults. If you decide to add a configuration block, make sure to add it before the
- * `apply from: "../../node_modules/react-native/react.gradle"` line.
- *
- * project.ext.react = [
- *   // the name of the generated asset file containing your JS bundle
- *   bundleAssetName: "index.android.bundle",
- *
- *   // the entry file for bundle generation. If none specified and
- *   // "index.android.js" exists, it will be used. Otherwise "index.js" is
- *   // default. Can be overridden with ENTRY_FILE environment variable.
- *   entryFile: "index.android.js",
- *
- *   // https://reactnative.dev/docs/performance#enable-the-ram-format
- *   bundleCommand: "ram-bundle",
- *
- *   // whether to bundle JS and assets in debug mode
- *   bundleInDebug: false,
- *
- *   // whether to bundle JS and assets in release mode
- *   bundleInRelease: true,
- *
- *   // whether to bundle JS and assets in another build variant (if configured).
- *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
- *   // The configuration property can be in the following formats
- *   //         'bundleIn${productFlavor}${buildType}'
- *   //         'bundleIn${buildType}'
- *   // bundleInFreeDebug: true,
- *   // bundleInPaidRelease: true,
- *   // bundleInBeta: true,
- *
- *   // whether to disable dev mode in custom build variants (by default only disabled in release)
- *   // for example: to disable dev mode in the staging build type (if configured)
- *   devDisabledInStaging: true,
- *   // The configuration property can be in the following formats
- *   //         'devDisabledIn${productFlavor}${buildType}'
- *   //         'devDisabledIn${buildType}'
- *
- *   // the root of your project, i.e. where "package.json" lives
- *   root: "../../",
- *
- *   // where to put the JS bundle asset in debug mode
- *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
- *
- *   // where to put the JS bundle asset in release mode
- *   jsBundleDirRelease: "$buildDir/intermediates/assets/release",
- *
- *   // where to put drawable resources / React Native assets, e.g. the ones you use via
- *   // require('./image.png')), in debug mode
- *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
- *
- *   // where to put drawable resources / React Native assets, e.g. the ones you use via
- *   // require('./image.png')), in release mode
- *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
- *
- *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
- *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
- *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
- *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
- *   // for example, you might want to remove it from here.
- *   inputExcludes: ["android/**", "ios/**"],
- *
- *   // override which node gets called and with what additional arguments
- *   nodeExecutableAndArgs: ["node"],
- *
- *   // supply additional arguments to the packager
- *   extraPackagerArgs: []
- * ]
+ * This is the configuration block to customize your React Native Android app.
+ * By default you don't need to apply any configuration, just uncomment the lines you need.
  */
-
-project.ext.react = [
-    enableHermes: false,  // clean and rebuild if changing
-]
-
-apply from: "../../node_modules/react-native/react.gradle"
-
-/**
- * Set this to true to create two separate APKs instead of one:
- *   - An APK that only works on ARM devices
- *   - An APK that only works on x86 devices
- * The advantage is the size of the APK is reduced by about 4MB.
- * Upload all the APKs to the Play Store and people will download
- * the correct one based on the CPU architecture of their device.
- */
-def enableSeparateBuildPerCPUArchitecture = false
+react {
+    /* Folders */
+    //   The root of your project, i.e. where "package.json" lives. Default is '..'
+    // root = file("../")
+    //   The folder where the react-native NPM package is. Default is ../node_modules/react-native
+    // reactNativeDir = file("../node_modules/react-native")
+    //   The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
+    // codegenDir = file("../node_modules/@react-native/codegen")
+    //   The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
+    // cliFile = file("../node_modules/react-native/cli.js")
+
+    /* Variants */
+    //   The list of variants to that are debuggable. For those we're going to
+    //   skip the bundling of the JS bundle and the assets. By default is just 'debug'.
+    //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
+    // debuggableVariants = ["liteDebug", "prodDebug"]
+
+    /* Bundling */
+    //   A list containing the node command and its flags. Default is just 'node'.
+    // nodeExecutableAndArgs = ["node"]
+    //
+    //   The command to run when bundling. By default is 'bundle'
+    // bundleCommand = "ram-bundle"
+    //
+    //   The path to the CLI configuration file. Default is empty.
+    // bundleConfig = file(../rn-cli.config.js)
+    //
+    //   The name of the generated asset file containing your JS bundle
+    // bundleAssetName = "MyApplication.android.bundle"
+    //
+    //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
+    // entryFile = file("../js/MyApplication.android.js")
+    //
+    //   A list of extra flags to pass to the 'bundle' commands.
+    //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
+    // extraPackagerArgs = []
+
+    /* Hermes Commands */
+    //   The hermes compiler command to run. By default it is 'hermesc'
+    // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
+    //
+    //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
+    // hermesFlags = ["-O", "-output-source-map"]
+}
 
 /**
- * Run Proguard to shrink the Java bytecode in release builds.
+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
  */
 def enableProguardInReleaseBuilds = false
 
 /**
- * The preferred build flavor of JavaScriptCore.
+ * The preferred build flavor of JavaScriptCore (JSC)
  *
  * For example, to use the international variant, you can use:
  * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
  *
  * The international variant includes ICU i18n library and necessary data
  * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
- * give correct results when using with locales other than en-US.  Note that
+ * give correct results when using with locales other than en-US. Note that
  * this variant is about 6MiB larger per architecture than default.
  */
 def jscFlavor = 'org.webkit:android-jsc:+'
 
-/**
- * Whether to enable the Hermes VM.
- *
- * This should be set on project.ext.react and that value will be read here. If it is not set
- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
- * and the benefits of using Hermes will therefore be sharply reduced.
- */
-def enableHermes = project.ext.react.get("enableHermes", false);
-
-/**
- * Architectures to build native code for.
- */
-def reactNativeArchitectures() {
-    def value = project.getProperties().get("reactNativeArchitectures")
-    return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
-}
-
 android {
     ndkVersion rootProject.ext.ndkVersion
 
     compileSdkVersion rootProject.ext.compileSdkVersion
 
+    namespace "com.compdfkit.pdfviewer"
     defaultConfig {
         applicationId "com.compdfkit.pdfviewer"
-
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
         versionCode 1
         versionName "1.0"
-        buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
-
-        if (isNewArchitectureEnabled()) {
-            // We configure the NDK build only if you decide to opt-in for the New Architecture.
-            externalNativeBuild {
-                ndkBuild {
-                    arguments "APP_PLATFORM=android-21",
-                        "APP_STL=c++_shared",
-                        "NDK_TOOLCHAIN_VERSION=clang",
-                        "GENERATED_SRC_DIR=$buildDir/generated/source",
-                        "PROJECT_BUILD_DIR=$buildDir",
-                        "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
-                        "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build"
-                    cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
-                    cppFlags "-std=c++17"
-                    // Make sure this target name is the same you specify inside the
-                    // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
-                    targets "pdfview_rn_appmodules"
-                    // Fix for windows limit on number of character in file paths and in command lines
-                    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
-                        arguments "NDK_APP_SHORT_COMMANDS=true"
-                    }
-                }
-            }
-            if (!enableSeparateBuildPerCPUArchitecture) {
-                ndk {
-                    abiFilters (*reactNativeArchitectures())
-                }
-            }
-        }
-    }
-
-    if (isNewArchitectureEnabled()) {
-        // We configure the NDK build only if you decide to opt-in for the New Architecture.
-        externalNativeBuild {
-            ndkBuild {
-                path "$projectDir/src/main/jni/Android.mk"
-            }
-        }
-        def reactAndroidProjectDir = project(':ReactAndroid').projectDir
-        def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
-            dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
-            from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
-            into("$buildDir/react-ndk/exported")
-        }
-        def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
-            dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
-            from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
-            into("$buildDir/react-ndk/exported")
-        }
-        afterEvaluate {
-            // If you wish to add a custom TurboModule or component locally,
-            // you should uncomment this line.
-            // preBuild.dependsOn("generateCodegenArtifactsFromSchema")
-            preDebugBuild.dependsOn(packageReactNdkDebugLibs)
-            preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
-
-            // Due to a bug inside AGP, we have to explicitly set a dependency
-            // between configureNdkBuild* tasks and the preBuild tasks.
-            // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
-            configureNdkBuildRelease.dependsOn(preReleaseBuild)
-            configureNdkBuildDebug.dependsOn(preDebugBuild)
-            reactNativeArchitectures().each { architecture ->
-                tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
-                    dependsOn("preDebugBuild")
-                }
-                tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
-                    dependsOn("preReleaseBuild")
-                }
-            }
-        }
-    }
-
-    splits {
-        abi {
-            reset()
-            enable enableSeparateBuildPerCPUArchitecture
-            universalApk false  // If true, also generate a universal APK
-            include (*reactNativeArchitectures())
-        }
     }
     signingConfigs {
         debug {
@@ -242,43 +101,19 @@ android {
             proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
         }
     }
-
-    // applicationVariants are e.g. debug, release
-    applicationVariants.all { variant ->
-        variant.outputs.each { output ->
-            // For each separate APK per architecture, set a unique version code as described here:
-            // https://developer.android.com/studio/build/configure-apk-splits.html
-            // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
-            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
-            def abi = output.getFilter(OutputFile.ABI)
-            if (abi != null) {  // null for the universal-debug, universal-release variants
-                output.versionCodeOverride =
-                        defaultConfig.versionCode * 1000 + versionCodes.get(abi)
-            }
-
-        }
-    }
     buildFeatures {
         viewBinding = true
     }
-    packagingOptions {
-        pickFirst 'lib/x86/libc++_shared.so'
-        pickFirst 'lib/x86_64/libc++_shared.so'
-        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
-        pickFirst 'lib/arm64-v8a/libc++_shared.so'
-    }
 }
 
 dependencies {
     implementation fileTree(dir: "libs", include: ["*.jar","*.aar"])
+    // The version of react-native is set by the React Native Gradle Plugin
+    implementation("com.facebook.react:react-android")
     //noinspection GradleDynamicVersion
     implementation "com.facebook.react:react-native:+"  // From node_modules
     implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
 
-    implementation 'com.compdf:compdfkit:1.9.1'
-    implementation 'com.compdf:compdfkit-ui:1.9.1'
-    implementation 'com.compdf:compdfkit-tools:1.9.1'
-
     api 'com.github.bumptech.glide:glide:4.15.1'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'
     implementation 'androidx.documentfile:documentfile:1.0.1'
@@ -287,55 +122,18 @@ dependencies {
     implementation 'androidx.appcompat:appcompat:1.6.1'
     implementation 'com.google.android.material:material:1.8.0'
 
-    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
-
-    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
-        exclude group:'com.facebook.fbjni'
-    }
 
+    debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
     debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
-        exclude group:'com.facebook.flipper'
         exclude group:'com.squareup.okhttp3', module:'okhttp'
     }
 
-    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
-        exclude group:'com.facebook.flipper'
-    }
-
-    if (enableHermes) {
-        def hermesPath = "../../node_modules/hermes-engine/android/";
-        debugImplementation files(hermesPath + "hermes-debug.aar")
-        releaseImplementation files(hermesPath + "hermes-release.aar")
+    debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}")
+    if (hermesEnabled.toBoolean()) {
+        implementation("com.facebook.react:hermes-android")
     } else {
         implementation jscFlavor
     }
 }
 
-if (isNewArchitectureEnabled()) {
-    // If new architecture is enabled, we let you build RN from source
-    // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
-    // This will be applied to all the imported transtitive dependency.
-    configurations.all {
-        resolutionStrategy.dependencySubstitution {
-            substitute(module("com.facebook.react:react-native"))
-                    .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source")
-        }
-    }
-}
-
-// Run this once to be able to run the application with BUCK
-// puts all compile dependencies into folder libs for BUCK to use
-task copyDownloadableDepsToLibs(type: Copy) {
-    from configurations.implementation
-    into 'libs'
-}
-
 apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
-
-def isNewArchitectureEnabled() {
-    // To opt-in for the New Architecture, you can either:
-    // - Set `newArchEnabled` to true inside the `gradle.properties` file
-    // - Invoke gradle with `-newArchEnabled=true`
-    // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
-    return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
-}

+ 0 - 19
android/app/build_defs.bzl

@@ -1,19 +0,0 @@
-"""Helper definitions to glob .aar and .jar targets"""
-
-def create_aar_targets(aarfiles):
-    for aarfile in aarfiles:
-        name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
-        lib_deps.append(":" + name)
-        android_prebuilt_aar(
-            name = name,
-            aar = aarfile,
-        )
-
-def create_jar_targets(jarfiles):
-    for jarfile in jarfiles:
-        name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
-        lib_deps.append(":" + name)
-        prebuilt_jar(
-            name = name,
-            binary_jar = jarfile,
-        )

BIN
android/app/libs/ComPDFKit-UI.aar


BIN
android/app/libs/ComPDFKit.aar


BIN
android/app/libs/ComPDFKit_Tools.aar


+ 4 - 2
android/app/src/debug/java/com/compdfkit/ReactNativeFlipper.java

@@ -17,7 +17,6 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;
 import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
 import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
 import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
 import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
 import com.facebook.react.ReactInstanceEventListener;
 import com.facebook.react.ReactInstanceManager;
@@ -25,13 +24,16 @@ import com.facebook.react.bridge.ReactContext;
 import com.facebook.react.modules.network.NetworkingModule;
 import okhttp3.OkHttpClient;
 
+/**
+ * Class responsible of loading Flipper inside your React Native application. This is the debug
+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.
+ */
 public class ReactNativeFlipper {
   public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
     if (FlipperUtils.shouldEnableFlipper(context)) {
       final FlipperClient client = AndroidFlipperClient.getInstance(context);
 
       client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
-      client.addPlugin(new ReactFlipperPlugin());
       client.addPlugin(new DatabasesFlipperPlugin(context));
       client.addPlugin(new SharedPreferencesFlipperPlugin(context));
       client.addPlugin(CrashReporterPlugin.getInstance());

+ 4 - 2
android/app/src/main/AndroidManifest.xml

@@ -1,10 +1,12 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.compdfkit.pdfviewer">
+    xmlns:tools="http://schemas.android.com/tools">
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
+        tools:ignore="ScopedStorage" />
+
     <application
       android:name=".MainApplication"
       android:label="@string/app_name"

+ 11 - 19
android/app/src/main/java/com/compdfkit/pdfviewer/MainActivity.java

@@ -2,7 +2,8 @@ package com.compdfkit.pdfviewer;
 
 import com.facebook.react.ReactActivity;
 import com.facebook.react.ReactActivityDelegate;
-import com.facebook.react.ReactRootView;
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
+import com.facebook.react.defaults.DefaultReactActivityDelegate;
 
 public class MainActivity extends ReactActivity {
 
@@ -12,29 +13,20 @@ public class MainActivity extends ReactActivity {
    */
   @Override
   protected String getMainComponentName() {
-    return "PDFView_RN";
+    return "ComPDFKit_RN";
   }
 
   /**
-   * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and
-   * you can specify the rendered you wish to use (Fabric or the older renderer).
+   * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
+   * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
+   * (aka React 18) with two boolean flags.
    */
   @Override
   protected ReactActivityDelegate createReactActivityDelegate() {
-    return new MainActivityDelegate(this, getMainComponentName());
-  }
-
-  public static class MainActivityDelegate extends ReactActivityDelegate {
-    public MainActivityDelegate(ReactActivity activity, String mainComponentName) {
-      super(activity, mainComponentName);
-    }
-
-    @Override
-    protected ReactRootView createRootView() {
-      ReactRootView reactRootView = new ReactRootView(getContext());
-      // If you opted-in for the New Architecture, we enable the Fabric Renderer.
-      reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
-      return reactRootView;
-    }
+    return new DefaultReactActivityDelegate(
+        this,
+        getMainComponentName(),
+        // If you opted-in for the New Architecture, we enable the Fabric Renderer.
+        DefaultNewArchitectureEntryPoint.getFabricEnabled());
   }
 }

+ 21 - 48
android/app/src/main/java/com/compdfkit/pdfviewer/MainApplication.java

@@ -1,24 +1,22 @@
 package com.compdfkit.pdfviewer;
 
 import android.app.Application;
-import android.content.Context;
 
+import com.compdfkit.ReactNativeFlipper;
 import com.compdfkit.pdfviewer.pdf.PDFReactPackage;
 import com.facebook.react.PackageList;
 import com.facebook.react.ReactApplication;
-import com.facebook.react.ReactInstanceManager;
 import com.facebook.react.ReactNativeHost;
 import com.facebook.react.ReactPackage;
-import com.facebook.react.config.ReactFeatureFlags;
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
+import com.facebook.react.defaults.DefaultReactNativeHost;
 import com.facebook.soloader.SoLoader;
-import com.compdfkit.pdfviewer.newarchitecture.MainApplicationReactNativeHost;
-import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
 public class MainApplication extends Application implements ReactApplication {
 
   private final ReactNativeHost mReactNativeHost =
-      new ReactNativeHost(this) {
+      new DefaultReactNativeHost(this) {
         @Override
         public boolean getUseDeveloperSupport() {
           return BuildConfig.DEBUG;
@@ -29,7 +27,8 @@ public class MainApplication extends Application implements ReactApplication {
           @SuppressWarnings("UnnecessaryLocalVariable")
           List<ReactPackage> packages = new PackageList(this).getPackages();
           // Packages that cannot be autolinked yet can be added manually here, for example:
-           packages.add(new PDFReactPackage());
+          // packages.add(new MyReactNativePackage());
+            packages.add(new PDFReactPackage());
           return packages;
         }
 
@@ -37,57 +36,31 @@ public class MainApplication extends Application implements ReactApplication {
         protected String getJSMainModuleName() {
           return "index";
         }
-      };
 
-  private final ReactNativeHost mNewArchitectureNativeHost =
-      new MainApplicationReactNativeHost(this);
+        @Override
+        protected boolean isNewArchEnabled() {
+          return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
+        }
+
+        @Override
+        protected Boolean isHermesEnabled() {
+          return BuildConfig.IS_HERMES_ENABLED;
+        }
+      };
 
   @Override
   public ReactNativeHost getReactNativeHost() {
-    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
-      return mNewArchitectureNativeHost;
-    } else {
-      return mReactNativeHost;
-    }
+    return mReactNativeHost;
   }
 
   @Override
   public void onCreate() {
     super.onCreate();
-    // If you opted-in for the New Architecture, we enable the TurboModule system
-    ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
     SoLoader.init(this, /* native exopackage */ false);
-    initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
-  }
-
-  /**
-   * Loads Flipper in React Native templates. Call this in the onCreate method with something like
-   * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
-   *
-   * @param context
-   * @param reactInstanceManager
-   */
-  private static void initializeFlipper(
-      Context context, ReactInstanceManager reactInstanceManager) {
-    if (BuildConfig.DEBUG) {
-      try {
-        /*
-         We use reflection here to pick up the class that initializes Flipper,
-        since Flipper library is not available in release mode
-        */
-        Class<?> aClass = Class.forName("com.compdfkit.ReactNativeFlipper");
-        aClass
-            .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
-            .invoke(null, context, reactInstanceManager);
-      } catch (ClassNotFoundException e) {
-        e.printStackTrace();
-      } catch (NoSuchMethodException e) {
-        e.printStackTrace();
-      } catch (IllegalAccessException e) {
-        e.printStackTrace();
-      } catch (InvocationTargetException e) {
-        e.printStackTrace();
-      }
+    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
+      // If you opted-in for the New Architecture, we load the native entry point for this app.
+      DefaultNewArchitectureEntryPoint.load();
     }
+    ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
   }
 }

+ 0 - 118
android/app/src/main/java/com/compdfkit/pdfviewer/newarchitecture/MainApplicationReactNativeHost.java

@@ -1,118 +0,0 @@
-package com.compdfkit.pdfviewer.newarchitecture;
-
-import android.app.Application;
-import androidx.annotation.NonNull;
-
-import com.compdfkit.pdfviewer.BuildConfig;
-import com.compdfkit.pdfviewer.newarchitecture.components.MainComponentsRegistry;
-import com.compdfkit.pdfviewer.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.JSIModulePackage;
-import com.facebook.react.bridge.JSIModuleProvider;
-import com.facebook.react.bridge.JSIModuleSpec;
-import com.facebook.react.bridge.JSIModuleType;
-import com.facebook.react.bridge.JavaScriptContextHolder;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.UIManager;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.react.fabric.CoreComponentsRegistry;
-import com.facebook.react.fabric.EmptyReactNativeConfig;
-import com.facebook.react.fabric.FabricJSIModuleProvider;
-import com.facebook.react.uimanager.ViewManagerRegistry;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
- * TurboModule delegates and the Fabric Renderer.
- *
- * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationReactNativeHost extends ReactNativeHost {
-  public MainApplicationReactNativeHost(Application application) {
-    super(application);
-  }
-
-  @Override
-  public boolean getUseDeveloperSupport() {
-    return BuildConfig.DEBUG;
-  }
-
-  @Override
-  protected List<ReactPackage> getPackages() {
-    List<ReactPackage> packages = new PackageList(this).getPackages();
-    // Packages that cannot be autolinked yet can be added manually here, for example:
-    //     packages.add(new MyReactNativePackage());
-    // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
-    //     packages.add(new TurboReactPackage() { ... });
-    // If you have custom Fabric Components, their ViewManagers should also be loaded here
-    // inside a ReactPackage.
-    return packages;
-  }
-
-  @Override
-  protected String getJSMainModuleName() {
-    return "index";
-  }
-
-  @NonNull
-  @Override
-  protected ReactPackageTurboModuleManagerDelegate.Builder
-      getReactPackageTurboModuleManagerDelegateBuilder() {
-    // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
-    // for the new architecture and to use TurboModules correctly.
-    return new MainApplicationTurboModuleManagerDelegate.Builder();
-  }
-
-  @Override
-  protected JSIModulePackage getJSIModulePackage() {
-    return new JSIModulePackage() {
-      @Override
-      public List<JSIModuleSpec> getJSIModules(
-          final ReactApplicationContext reactApplicationContext,
-          final JavaScriptContextHolder jsContext) {
-        final List<JSIModuleSpec> specs = new ArrayList<>();
-
-        // Here we provide a new JSIModuleSpec that will be responsible of providing the
-        // custom Fabric Components.
-        specs.add(
-            new JSIModuleSpec() {
-              @Override
-              public JSIModuleType getJSIModuleType() {
-                return JSIModuleType.UIManager;
-              }
-
-              @Override
-              public JSIModuleProvider<UIManager> getJSIModuleProvider() {
-                final ComponentFactory componentFactory = new ComponentFactory();
-                CoreComponentsRegistry.register(componentFactory);
-
-                // Here we register a Components Registry.
-                // The one that is generated with the template contains no components
-                // and just provides you the one from React Native core.
-                MainComponentsRegistry.register(componentFactory);
-
-                final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
-
-                ViewManagerRegistry viewManagerRegistry =
-                    new ViewManagerRegistry(
-                        reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
-
-                return new FabricJSIModuleProvider(
-                    reactApplicationContext,
-                    componentFactory,
-                    new EmptyReactNativeConfig(),
-                    viewManagerRegistry);
-              }
-            });
-        return specs;
-      }
-    };
-  }
-}

+ 0 - 36
android/app/src/main/java/com/compdfkit/pdfviewer/newarchitecture/components/MainComponentsRegistry.java

@@ -1,36 +0,0 @@
-package com.compdfkit.pdfviewer.newarchitecture.components;
-
-import com.facebook.jni.HybridData;
-import com.facebook.proguard.annotations.DoNotStrip;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.soloader.SoLoader;
-
-/**
- * Class responsible to load the custom Fabric Components. This class has native methods and needs a
- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/
- * folder for you).
- *
- * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-@DoNotStrip
-public class MainComponentsRegistry {
-  static {
-    SoLoader.loadLibrary("fabricjni");
-  }
-
-  @DoNotStrip private final HybridData mHybridData;
-
-  @DoNotStrip
-  private native HybridData initHybrid(ComponentFactory componentFactory);
-
-  @DoNotStrip
-  private MainComponentsRegistry(ComponentFactory componentFactory) {
-    mHybridData = initHybrid(componentFactory);
-  }
-
-  @DoNotStrip
-  public static MainComponentsRegistry register(ComponentFactory componentFactory) {
-    return new MainComponentsRegistry(componentFactory);
-  }
-}

+ 0 - 48
android/app/src/main/java/com/compdfkit/pdfviewer/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java

@@ -1,48 +0,0 @@
-package com.compdfkit.pdfviewer.newarchitecture.modules;
-
-import com.facebook.jni.HybridData;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.soloader.SoLoader;
-import java.util.List;
-
-/**
- * Class responsible to load the TurboModules. This class has native methods and needs a
- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/
- * folder for you).
- *
- * <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationTurboModuleManagerDelegate
-    extends ReactPackageTurboModuleManagerDelegate {
-
-  private static volatile boolean sIsSoLibraryLoaded;
-
-  protected MainApplicationTurboModuleManagerDelegate(
-      ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
-    super(reactApplicationContext, packages);
-  }
-
-  protected native HybridData initHybrid();
-
-  native boolean canCreateTurboModule(String moduleName);
-
-  public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
-    protected MainApplicationTurboModuleManagerDelegate build(
-        ReactApplicationContext context, List<ReactPackage> packages) {
-      return new MainApplicationTurboModuleManagerDelegate(context, packages);
-    }
-  }
-
-  @Override
-  protected synchronized void maybeLoadOtherSoLibraries() {
-    if (!sIsSoLibraryLoaded) {
-      // If you change the name of your application .so file in the Android.mk file,
-      // make sure you update the name here as well.
-      SoLoader.loadLibrary("pdfview_rn_appmodules");
-      sIsSoLibraryLoaded = true;
-    }
-  }
-}

+ 9 - 3
android/app/src/main/java/com/compdfkit/pdfviewer/pdf/PDFActivity.java

@@ -28,14 +28,14 @@ import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.compdfkit.core.annotation.CPDFAnnotation;
-import com.compdfkit.core.annotation.form.CPDFWidget;
+import com.compdfkit.core.common.CPDFDocumentException;
 import com.compdfkit.core.edit.CPDFEditManager;
 import com.compdfkit.pdfviewer.R;
 import com.compdfkit.pdfviewer.databinding.PdfSampleActivityBinding;
 import com.compdfkit.tools.common.activity.CBasicActivity;
 import com.compdfkit.tools.common.contextmenu.CPDFContextMenuHelper;
 import com.compdfkit.tools.common.utils.CFileUtils;
-import com.compdfkit.tools.common.utils.CUriUtil;
+import com.compdfkit.tools.common.utils.CToastUtil;
 import com.compdfkit.tools.common.utils.annotation.CPDFAnnotationManager;
 import com.compdfkit.tools.common.utils.dialog.CAlertDialog;
 import com.compdfkit.tools.common.utils.task.CExtractAssetFileTask;
@@ -424,6 +424,12 @@ public class PDFActivity extends CBasicActivity {
                 alertDialog.dismiss();
                 selectDocumentLauncher.launch(CFileUtils.getContentIntent());
             }, e -> {
+                if (e instanceof CPDFDocumentException){
+                    CToastUtil.showLongToast(this, "save fail, errorCode: " + ((CPDFDocumentException) e).getErrType().name());
+                } else {
+                    CToastUtil.showLongToast(this, "save fail");
+                }
+                e.printStackTrace();
                 alertDialog.dismiss();
                 selectDocumentLauncher.launch(CFileUtils.getContentIntent());
             });
@@ -491,7 +497,7 @@ public class PDFActivity extends CBasicActivity {
 
     @Override
     public void onBackPressed() {
-        if (binding.pdfView != null) {
+        if (binding.pdfView != null && binding.pdfView.getCPdfReaderView().getPDFDocument() != null) {
             binding.pdfView.savePDF((filePath, pdfUri) -> super.onBackPressed(), e -> super.onBackPressed());
         }else {
             super.onBackPressed();

+ 0 - 49
android/app/src/main/jni/Android.mk

@@ -1,49 +0,0 @@
-THIS_DIR := $(call my-dir)
-
-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
-
-# If you wish to add a custom TurboModule or Fabric component in your app you
-# will have to include the following autogenerated makefile.
-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
-include $(CLEAR_VARS)
-
-LOCAL_PATH := $(THIS_DIR)
-
-# You can customize the name of your application .so file here.
-LOCAL_MODULE := pdfview_rn_appmodules
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)
-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
-
-# If you wish to add a custom TurboModule or Fabric component in your app you
-# will have to uncomment those lines to include the generated source 
-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
-#
-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
-
-# Here you should add any native library you wish to depend on.
-LOCAL_SHARED_LIBRARIES := \
-  libfabricjni \
-  libfbjni \
-  libfolly_futures \
-  libfolly_json \
-  libglog \
-  libjsi \
-  libreact_codegen_rncore \
-  libreact_debug \
-  libreact_nativemodule_core \
-  libreact_render_componentregistry \
-  libreact_render_core \
-  libreact_render_debug \
-  libreact_render_graphics \
-  librrc_view \
-  libruntimeexecutor \
-  libturbomodulejsijni \
-  libyoga
-
-LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall
-
-include $(BUILD_SHARED_LIBRARY)

+ 0 - 24
android/app/src/main/jni/MainApplicationModuleProvider.cpp

@@ -1,24 +0,0 @@
-#include "MainApplicationModuleProvider.h"
-
-#include <rncore.h>
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr<TurboModule> MainApplicationModuleProvider(
-    const std::string moduleName,
-    const JavaTurboModule::InitParams &params) {
-  // Here you can provide your own module provider for TurboModules coming from
-  // either your application or from external libraries. The approach to follow
-  // is similar to the following (for a library called `samplelibrary`:
-  //
-  // auto module = samplelibrary_ModuleProvider(moduleName, params);
-  // if (module != nullptr) {
-  //    return module;
-  // }
-  // return rncore_ModuleProvider(moduleName, params);
-  return rncore_ModuleProvider(moduleName, params);
-}
-
-} // namespace react
-} // namespace facebook

+ 0 - 16
android/app/src/main/jni/MainApplicationModuleProvider.h

@@ -1,16 +0,0 @@
-#pragma once
-
-#include <memory>
-#include <string>
-
-#include <ReactCommon/JavaTurboModule.h>
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr<TurboModule> MainApplicationModuleProvider(
-    const std::string moduleName,
-    const JavaTurboModule::InitParams &params);
-
-} // namespace react
-} // namespace facebook

+ 0 - 45
android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp

@@ -1,45 +0,0 @@
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainApplicationModuleProvider.h"
-
-namespace facebook {
-namespace react {
-
-jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
-MainApplicationTurboModuleManagerDelegate::initHybrid(
-    jni::alias_ref<jhybridobject>) {
-  return makeCxxInstance();
-}
-
-void MainApplicationTurboModuleManagerDelegate::registerNatives() {
-  registerHybrid({
-      makeNativeMethod(
-          "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
-      makeNativeMethod(
-          "canCreateTurboModule",
-          MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
-  });
-}
-
-std::shared_ptr<TurboModule>
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
-    const std::string name,
-    const std::shared_ptr<CallInvoker> jsInvoker) {
-  // Not implemented yet: provide pure-C++ NativeModules here.
-  return nullptr;
-}
-
-std::shared_ptr<TurboModule>
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
-    const std::string name,
-    const JavaTurboModule::InitParams &params) {
-  return MainApplicationModuleProvider(name, params);
-}
-
-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
-    std::string name) {
-  return getTurboModule(name, nullptr) != nullptr ||
-      getTurboModule(name, {.moduleName = name}) != nullptr;
-}
-
-} // namespace react
-} // namespace facebook

+ 0 - 38
android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h

@@ -1,38 +0,0 @@
-#include <memory>
-#include <string>
-
-#include <ReactCommon/TurboModuleManagerDelegate.h>
-#include <fbjni/fbjni.h>
-
-namespace facebook {
-namespace react {
-
-class MainApplicationTurboModuleManagerDelegate
-    : public jni::HybridClass<
-          MainApplicationTurboModuleManagerDelegate,
-          TurboModuleManagerDelegate> {
- public:
-  // Adapt it to the package you used for your Java class.
-  static constexpr auto kJavaDescriptor =
-      "Lcom/pdfview_rn/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
-
-  static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
-
-  static void registerNatives();
-
-  std::shared_ptr<TurboModule> getTurboModule(
-      const std::string name,
-      const std::shared_ptr<CallInvoker> jsInvoker) override;
-  std::shared_ptr<TurboModule> getTurboModule(
-      const std::string name,
-      const JavaTurboModule::InitParams &params) override;
-
-  /**
-   * Test-only method. Allows user to verify whether a TurboModule can be
-   * created by instances of this class.
-   */
-  bool canCreateTurboModule(std::string name);
-};
-
-} // namespace react
-} // namespace facebook

+ 0 - 61
android/app/src/main/jni/MainComponentsRegistry.cpp

@@ -1,61 +0,0 @@
-#include "MainComponentsRegistry.h"
-
-#include <CoreComponentsRegistry.h>
-#include <fbjni/fbjni.h>
-#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
-#include <react/renderer/components/rncore/ComponentDescriptors.h>
-
-namespace facebook {
-namespace react {
-
-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
-
-std::shared_ptr<ComponentDescriptorProviderRegistry const>
-MainComponentsRegistry::sharedProviderRegistry() {
-  auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
-
-  // Custom Fabric Components go here. You can register custom
-  // components coming from your App or from 3rd party libraries here.
-  //
-  // providerRegistry->add(concreteComponentDescriptorProvider<
-  //        AocViewerComponentDescriptor>());
-  return providerRegistry;
-}
-
-jni::local_ref<MainComponentsRegistry::jhybriddata>
-MainComponentsRegistry::initHybrid(
-    jni::alias_ref<jclass>,
-    ComponentFactory *delegate) {
-  auto instance = makeCxxInstance(delegate);
-
-  auto buildRegistryFunction =
-      [](EventDispatcher::Weak const &eventDispatcher,
-         ContextContainer::Shared const &contextContainer)
-      -> ComponentDescriptorRegistry::Shared {
-    auto registry = MainComponentsRegistry::sharedProviderRegistry()
-                        ->createComponentDescriptorRegistry(
-                            {eventDispatcher, contextContainer});
-
-    auto mutableRegistry =
-        std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
-
-    mutableRegistry->setFallbackComponentDescriptor(
-        std::make_shared<UnimplementedNativeViewComponentDescriptor>(
-            ComponentDescriptorParameters{
-                eventDispatcher, contextContainer, nullptr}));
-
-    return registry;
-  };
-
-  delegate->buildRegistryFunction = buildRegistryFunction;
-  return instance;
-}
-
-void MainComponentsRegistry::registerNatives() {
-  registerHybrid({
-      makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
-  });
-}
-
-} // namespace react
-} // namespace facebook

+ 0 - 32
android/app/src/main/jni/MainComponentsRegistry.h

@@ -1,32 +0,0 @@
-#pragma once
-
-#include <ComponentFactory.h>
-#include <fbjni/fbjni.h>
-#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
-#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
-
-namespace facebook {
-namespace react {
-
-class MainComponentsRegistry
-    : public facebook::jni::HybridClass<MainComponentsRegistry> {
- public:
-  // Adapt it to the package you used for your Java class.
-  constexpr static auto kJavaDescriptor =
-      "Lcom/pdfview_rn/newarchitecture/components/MainComponentsRegistry;";
-
-  static void registerNatives();
-
-  MainComponentsRegistry(ComponentFactory *delegate);
-
- private:
-  static std::shared_ptr<ComponentDescriptorProviderRegistry const>
-  sharedProviderRegistry();
-
-  static jni::local_ref<jhybriddata> initHybrid(
-      jni::alias_ref<jclass>,
-      ComponentFactory *delegate);
-};
-
-} // namespace react
-} // namespace facebook

+ 0 - 11
android/app/src/main/jni/OnLoad.cpp

@@ -1,11 +0,0 @@
-#include <fbjni/fbjni.h>
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainComponentsRegistry.h"
-
-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
-  return facebook::jni::initialize(vm, [] {
-    facebook::react::MainApplicationTurboModuleManagerDelegate::
-        registerNatives();
-    facebook::react::MainComponentsRegistry::registerNatives();
-  });
-}

+ 1 - 1
android/app/src/main/res/drawable/rn_edit_text_material.xml

@@ -20,7 +20,7 @@
        android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
 
     <selector>
-        <!-- 
+        <!--
           This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
           The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
           NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'

+ 1 - 1
android/app/src/main/res/values/strings.xml

@@ -1,5 +1,5 @@
 <resources>
-    <string name="app_name">PDFView_RN</string>
+    <string name="app_name">ComPDFKit_RN</string>
     <string name="app_permission_storage">Apply for SD card read and write permission</string>
 
 </resources>

+ 20 - 0
android/app/src/release/java/com/compdfkit_rn/ReactNativeFlipper.java

@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * <p>This source code is licensed under the MIT license found in the LICENSE file in the root
+ * directory of this source tree.
+ */
+package com.compdfkit;
+
+import android.content.Context;
+import com.facebook.react.ReactInstanceManager;
+
+/**
+ * Class responsible of loading Flipper inside your React Native application. This is the release
+ * flavor of it so it's empty as we don't want to load Flipper.
+ */
+public class ReactNativeFlipper {
+  public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
+    // Do nothing as we don't want to initialize Flipper on Release.
+  }
+}

+ 3 - 29
android/build.gradle

@@ -1,5 +1,3 @@
-import org.apache.tools.ant.taskdefs.condition.Os
-
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
@@ -9,6 +7,8 @@ buildscript {
         compileSdkVersion = 33
         targetSdkVersion = 33
 
+        // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
+//        ndkVersion = "23.1.7779620"
         if (System.properties['os.arch'] == "aarch64") {
             // For M1 Users we need to use the NDK 24 which added support for aarch64
             ndkVersion = "24.0.8215888"
@@ -22,33 +22,7 @@ buildscript {
         mavenCentral()
     }
     dependencies {
-        classpath("com.android.tools.build:gradle:7.3.1")
+        classpath("com.android.tools.build:gradle")
         classpath("com.facebook.react:react-native-gradle-plugin")
-        classpath("de.undercouch:gradle-download-task:4.1.2")
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        mavenCentral()
-        maven {
-            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
-            url("$rootDir/../node_modules/react-native/android")
-        }
-        maven {
-            // Android JSC is installed from npm
-            url("$rootDir/../node_modules/jsc-android/dist")
-        }
-        mavenCentral {
-            // We don't want to fetch react-native from Maven Central as there are
-            // older versions over there.
-            content {
-                excludeGroup "com.facebook.react"
-            }
-        }
-        google()
-        maven { url 'https://www.jitpack.io' }
     }
 }

+ 6 - 2
android/gradle.properties

@@ -25,7 +25,7 @@ android.useAndroidX=true
 android.enableJetifier=true
 
 # Version of flipper SDK to use with React Native
-FLIPPER_VERSION=0.125.0
+FLIPPER_VERSION=0.182.0
 
 # Use this property to specify which architecture you want to build.
 # You can also override it from the CLI using
@@ -37,4 +37,8 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
 # your application. You should enable this flag either if you want
 # to write custom TurboModules/Fabric components OR use libraries that
 # are providing them.
-newArchEnabled=false
+newArchEnabled=true
+
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true

BIN
android/gradle/wrapper/gradle-wrapper.jar


+ 2 - 1
android/gradle/wrapper/gradle-wrapper.properties

@@ -1,5 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
+networkTimeout=10000
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

+ 14 - 4
android/gradlew

@@ -55,7 +55,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,10 +80,10 @@ do
     esac
 done
 
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
 
 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
@@ -143,12 +143,16 @@ fi
 if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
     case $MAX_FD in #(
       max*)
+        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC3045 
         MAX_FD=$( ulimit -H -n ) ||
             warn "Could not query maximum file descriptor limit"
     esac
     case $MAX_FD in  #(
       '' | soft) :;; #(
       *)
+        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+        # shellcheck disable=SC3045 
         ulimit -n "$MAX_FD" ||
             warn "Could not set maximum file descriptor limit to $MAX_FD"
     esac
@@ -205,6 +209,12 @@ set -- \
         org.gradle.wrapper.GradleWrapperMain \
         "$@"
 
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+    die "xargs is not available"
+fi
+
 # Use "xargs" to parse quoted args.
 #
 # With -n1 it outputs one arg per line, with the quotes and backslashes removed.

+ 9 - 6
android/gradlew.bat

@@ -14,7 +14,7 @@
 @rem limitations under the License.
 @rem
 
-@if "%DEBUG%" == "" @echo off
+@if "%DEBUG%"=="" @echo off
 @rem ##########################################################################
 @rem
 @rem  Gradle startup script for Windows
@@ -25,7 +25,8 @@
 if "%OS%"=="Windows_NT" setlocal
 
 set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
 set APP_BASE_NAME=%~n0
 set APP_HOME=%DIRNAME%
 
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
 
 set JAVA_EXE=java.exe
 %JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
+if %ERRORLEVEL% equ 0 goto execute
 
 echo.
 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 
 :end
 @rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 0 goto mainEnd
 
 :fail
 rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
 
 :mainEnd
 if "%OS%"=="Windows_NT" endlocal

+ 2 - 7
android/settings.gradle

@@ -1,9 +1,4 @@
-rootProject.name = 'PDFViewer_RN'
+rootProject.name = 'ComPDFKit_RN'
 apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
 include ':app'
-includeBuild('../node_modules/react-native-gradle-plugin')
-
-if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
-    include(":ReactAndroid")
-    project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
-}
+includeBuild('../node_modules/@react-native/gradle-plugin')

+ 3 - 3
app.json

@@ -1,4 +1,4 @@
 {
-  "name": "PDFView_RN",
-  "displayName": "PDFView_RN"
-}
+  "name": "ComPDFKit_RN",
+  "displayName": "ComPDFKit_RN"
+}

+ 11 - 0
ios/.xcode.env

@@ -0,0 +1,11 @@
+# This `.xcode.env` file is versioned and is used to source the environment
+# used when running script phases inside Xcode.
+# To customize your local environment, you can create an `.xcode.env.local`
+# file that is not versioned.
+
+# NODE_BINARY variable contains the PATH to the node executable.
+#
+# Customize the NODE_BINARY variable here.
+# For example, to use nvm with brew, add the following line
+# . "$(brew --prefix nvm)/nvm.sh" --no-use
+export NODE_BINARY=$(command -v node)

+ 118 - 24
ios/CPDFViewController.m

@@ -1,6 +1,6 @@
 //
 //  CPDFViewController.m
-//   PDFView_RN
+//   ContentEditor
 //
 //  Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
 //
@@ -17,7 +17,7 @@
 #import <AVFAudio/AVFAudio.h>
 #import <AVFoundation/AVFoundation.h>
 
-@interface CPDFViewController () <CPDFSoundPlayBarDelegate,CPDFAnnotationBarDelegate,CPDFToolsViewControllerDelegate,CPDFNoteOpenViewControllerDelegate,CPDFBOTAViewControllerDelegate,CPDFEditToolBarDelegate,CPDFFormBarDelegate,CPDFListViewDelegate,CPDFSignatureViewControllerDelegate,CPDFPageEditViewControllerDelegate,CPDFKeyboardToolbarDelegate>
+@interface CPDFViewController () <CPDFSoundPlayBarDelegate,CPDFAnnotationBarDelegate,CPDFToolsViewControllerDelegate,CPDFNoteOpenViewControllerDelegate,CPDFBOTAViewControllerDelegate,CPDFEditToolBarDelegate,CPDFFormBarDelegate,CPDFListViewDelegate,CPDFSignatureViewControllerDelegate,CPDFPageEditViewControllerDelegate,CPDFKeyboardToolbarDelegate,UINavigationControllerDelegate,UIImagePickerControllerDelegate>
 
 @property(nonatomic, strong) CPDFAnnotationToolBar *annotationBar;
 
@@ -35,6 +35,10 @@
 
 @property(nonatomic, strong) CPDFSignatureWidgetAnnotation * signatureAnnotation;
 
+@property(nonatomic, assign) CGRect addImageRect;
+
+@property(nonatomic, retain) CPDFPage *addImagePage;
+
 @end
 
 @implementation CPDFViewController
@@ -93,16 +97,7 @@
 }
 
 - (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;
+    [super initWitNavigationTitle];
 }
 
 - (void)viewWillLayoutSubviews {
@@ -196,7 +191,18 @@
     self.annotationBar.hidden = YES;
     self.formBar.hidden = YES;
     self.pdfListView.toolModel = CToolModelEdit;
-    [self.pdfListView beginEditingLoadType:CEditingLoadTypeText | CEditingLoadTypeImage];
+    
+   if (CPDFEditModeText == self.toolBar.editToolBarSelectType) {
+        [self.pdfListView beginEditingLoadType:CEditingLoadTypeText];
+        [self.pdfListView setShouAddEditAreaType:CAddEditingAreaTypeText];
+    } else if (CPDFEditModeImage == self.toolBar.editToolBarSelectType) {
+        [self.pdfListView beginEditingLoadType:CEditingLoadTypeImage];
+        [self.pdfListView setShouAddEditAreaType:CAddEditingAreaTypeImage];
+    } else {
+        [self.pdfListView beginEditingLoadType:CEditingLoadTypeText | CEditingLoadTypeImage];
+        [self.pdfListView setShouAddEditAreaType:CAddEditingAreaTypeNone];
+    }
+
     self.navigationTitle = NSLocalizedString(@"Content Edit", nil);
     [self.titleButton setTitle:self.navigationTitle forState:UIControlStateNormal];
     
@@ -338,7 +344,7 @@
 
 #pragma mark - Action
 
-- (void)navigationRightItemBota {
+- (void)buttonItemClicked_Bota:(id)sender {
     CPDFBOTAViewController *botaViewController = [[CPDFBOTAViewController alloc] initCustomizeWithPDFView:self.pdfListView navArrays:@[@(CPDFBOTATypeStateOutline),@(CPDFBOTATypeStateBookmark),@(CPDFBOTATypeStateAnnotation)]];
 
     botaViewController.delegate = self;
@@ -362,6 +368,10 @@
 
 #pragma - CPDFEditToolBarDelegate
 
+- (void)editClickInToolBar:(CPDFEditToolBar*)toolBar editMode:(CPDFEditMode)mode {
+    self.editMode = mode;
+}
+
 - (void)undoDidClickInToolBar:(CPDFEditToolBar *)toolBar{
     [self.pdfListView editTextUndo];
 }
@@ -386,6 +396,15 @@
         self.baseVC.transitioningDelegate = presentationController;
         
         [self presentViewController:self.baseVC animated:YES completion:nil];
+    } else if (CAddEditingAreaTypeText == self.pdfListView.shouAddEditAreaType) {
+        _baseVC.editMode = CPDFEditModeText;
+        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];
+
     }
 }
 
@@ -407,6 +426,40 @@
     [keyBoadrdToolbar bindToTextView:textView];
 }
 
+- (void)PDFViewEditingAddTextArea:(CPDFView * _Nonnull)pdfView addPage:(CPDFPage * _Nonnull )page addRect:(CGRect)rect {
+   
+    UIColor *fontColor = [CPDFTextProperty sharedManager].fontColor;
+    if (fontColor) {
+        CGFloat red, green, blue, alpha;
+        [fontColor getRed:&red green:&green blue:&blue alpha:&alpha];
+        fontColor = [UIColor colorWithRed:red green:green blue:blue alpha:[CPDFTextProperty sharedManager].textOpacity];
+    }
+    if(!fontColor)
+        fontColor = [UIColor blackColor];
+    
+    UIFont *font = [UIFont fontWithName:[CPDFTextProperty sharedManager].fontName size:[CPDFTextProperty sharedManager].fontSize];
+    if(!font)
+        font = [UIFont fontWithName:@"Helvetica-Oblique" size:10];
+    
+    struct CEditAttributes atributes = {
+        font,
+        fontColor,
+        [CPDFTextProperty sharedManager].isBold,
+        [CPDFTextProperty sharedManager].isItalic,
+        [CPDFTextProperty sharedManager].textAlignment};
+    
+    [self.pdfListView createStringBounds:rect withAttributes:atributes page:page];
+}
+
+- (void)PDFViewEditingAddImageArea:(CPDFView * _Nonnull)pdfView addPage:(CPDFPage * _Nonnull)page addRect:(CGRect)rect {
+    self.addImageRect = rect;
+    self.addImagePage = page;
+    UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
+    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
+    imagePicker.delegate = self;
+    [self presentViewController:imagePicker animated:YES completion:nil];
+}
+
 #pragma mark - CPDFListViewDelegate
 
 - (void)PDFListViewPerformTouchEnded:(CPDFListView *)pdfView {
@@ -783,22 +836,26 @@
 
     CPDFPageEditViewController *pageEditViewcontroller = [[CPDFPageEditViewController alloc] initWithPDFView:self.pdfListView];
     pageEditViewcontroller.pageEditDelegate = self;
-    pageEditViewcontroller.modalPresentationStyle = UIModalPresentationFullScreen;
-    [self.navigationController presentViewController:pageEditViewcontroller animated:YES completion:nil];
+    CNavigationController *nav = [[CNavigationController alloc]initWithRootViewController:pageEditViewcontroller];
+    nav.modalPresentationStyle = UIModalPresentationFullScreen;
+    [self.navigationController presentViewController:nav 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) {
+    __weak typeof(self) weakSelf = self;
+    [pageEditViewController dismissViewControllerAnimated:YES completion:^{
+        if (pageEditViewController.isPageEdit) {
+            [weakSelf reloadDocumentWithFilePath:self.filePath password:self.pdfListView.document.password completion:^(BOOL result) {
+                [weakSelf.pdfListView reloadInputViews];
+                [weakSelf selectDocumentRefresh];
+            }];
+            
             [weakSelf.pdfListView reloadInputViews];
-            [weakSelf selectDocumentRefresh];
-        }];
-        
-        [weakSelf.pdfListView reloadInputViews];
-    }
+        }
+    }];
+
 }
 
 - (void)pageEditViewController:(CPDFPageEditViewController *)pageEditViewController pageIndex:(NSInteger)pageIndex isPageEdit:(BOOL)isPageEdit {
@@ -816,4 +873,41 @@
     [self.pdfListView goToPageIndex:pageIndex animated:NO];
 }
 
+#pragma mark - imagePickerDelegate
+
+- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
+    NSURL * url = nil;
+    if (@available(iOS 11.0, *))
+         url = info[UIImagePickerControllerImageURL];
+    else
+         url = info[UIImagePickerControllerMediaURL];
+    
+    UIImage * image = [[UIImage alloc] initWithContentsOfFile:url.path];
+    CGFloat img_width = 0;
+    CGFloat img_height = 0;
+    CGFloat scaled_width = 149;
+    CGFloat scaled_height = 210;
+    
+    if(image.imageOrientation!=UIImageOrientationUp){
+        UIGraphicsBeginImageContext(image.size);
+        [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
+        image = UIGraphicsGetImageFromCurrentImageContext();
+        UIGraphicsEndImageContext();
+        img_width = image.size.height;
+        img_height = image.size.width;
+    } else {
+        img_width = image.size.width;
+        img_height = image.size.height;
+    }
+    
+    CGFloat scaled = MIN(scaled_width/img_width, scaled_height/img_height);
+    scaled_height = img_height*scaled;
+    scaled_width = img_width*scaled;
+    
+    CGRect rect = CGRectMake(self.addImageRect.origin.x, self.addImageRect.origin.y- scaled_height, scaled_width, scaled_height);
+    [self.pdfListView createEmptyImage:rect page:self.addImagePage path:url.path];
+    
+    [picker dismissViewControllerAnimated:YES completion:nil];
+}
+
 @end

+ 41 - 0
ios/ComPDFKit.xcframework/Info.plist

@@ -0,0 +1,41 @@
+<?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>AvailableLibraries</key>
+	<array>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>ios-arm64_armv7</string>
+			<key>LibraryPath</key>
+			<string>ComPDFKit.framework</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+				<string>armv7</string>
+			</array>
+			<key>SupportedPlatform</key>
+			<string>ios</string>
+		</dict>
+		<dict>
+			<key>LibraryIdentifier</key>
+			<string>ios-arm64_x86_64-simulator</string>
+			<key>LibraryPath</key>
+			<string>ComPDFKit.framework</string>
+			<key>SupportedPlatform</key>
+			<string>ios</string>
+			<key>SupportedArchitectures</key>
+			<array>
+				<string>arm64</string>
+				<string>x86_64</string>
+			</array>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
+		</dict>
+	</array>
+	<key>CFBundlePackageType</key>
+	<string>XFWK</string>
+	<key>XCFrameworkFormatVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>

+ 25 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/0d264c89.0

@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEKTCCAxGgAwIBAgIUBpuFKDddR8lam2b8CVChExzoBPwwDQYJKoZIhvcNAQEL
+BQAwgZsxCzAJBgNVBAYTAlVLMR8wHQYDVQQKDBZPcGVuU1NMIFNlbGYgU2lnbmF0
+dXJlMQ8wDQYDVQQDDAZQZGRkZFAxDjAMBgNVBAgMBWh1bmFuMRMwEQYDVQQHDApj
+aGFuZ3NoYWFhMRMwEQYDVQQLDAprZGFubW9iaWxlMSAwHgYJKoZIhvcNAQkBFhFw
+eUBrZGFubW9iaWxlLmNvbTAeFw0xOTExMTkwNzIwMTVaFw0xOTEyMTkwNzIwMTVa
+MIGbMQswCQYDVQQGEwJVSzEfMB0GA1UECgwWT3BlblNTTCBTZWxmIFNpZ25hdHVy
+ZTEPMA0GA1UEAwwGUGRkZGRQMQ4wDAYDVQQIDAVodW5hbjETMBEGA1UEBwwKY2hh
+bmdzaGFhYTETMBEGA1UECwwKa2Rhbm1vYmlsZTEgMB4GCSqGSIb3DQEJARYRcHlA
+a2Rhbm1vYmlsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDn
+oh+f7XtgW7mgJ7/c5K3XqqquuCfKCQt7Ls9qH2zsOmtlMNRYJrpHxPtQqbHx8Ac9
+YfDiBJDjiCs8vz5k8eFgez09kTwIFAqj+kkOBOEDjverWnYz8/Gxcm7wqwdrLMZ3
+mTazPn8M5m0Aoxi2xB4yei1CcGGB+lQIHmuZ4AIp+dQPsmJ/5DvxDZD9ispx/zjW
++bCroDUyJrlPtDnQ1cSwalNYTsN+EsR11XL/Ug5lVaz9HqB+yUMb+tFJ2wwbReUr
+3iN8bvl4A1je3KdtF4UGEji8INcvGZFYmzgjmAgBDZBka2oKoHcJIuqRMkASuxtb
+uNx+kRRT97nO7VqOdP/rAgMBAAGjYzBhMB0GA1UdDgQWBBQ8kfj6QlFzTtyewyNd
+6+m5EWdnTjAfBgNVHSMEGDAWgBQ8kfj6QlFzTtyewyNd6+m5EWdnTjAPBgNVHRMB
+Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEA1dl4
+8UfbNCoVgnGa3J8TriUypPvNeK3PqdVXRcxMw5xTlPezLkmKd3yRGH2l4jYZ43zW
+2exs86n9/CP6jwineUNCrpkwYyIc7lM/Cfu33yBhiy+pYFxkv19e5603ViBxbjdz
+rzRBPCis/91EwHjreGASm7sCbyCzx38wyJ/H/88bPLLAYWGF7d7HXURDSs7pDQQv
+Im4T1iT0/bHanBj7lERM1HTETTgezIlT1DP9zkKsmuNbRXgiUbXBWl8uVxdtdvYs
+CphzO947MXSSsGenKpdKhhi2uqm9++uT3m0z6HUeHeyDjlfOLjQcjKUkXuNRKNWx
+uyb9Ba5qVOVcGCBQ0Q==
+-----END CERTIFICATE-----

+ 15 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/1801b70e.0

@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE-----
+MIICaDCCAdECFAZkG02SLoFOKZn4ly7ekuioL2rZMA0GCSqGSIb3DQEBCwUAMHMx
+CzAJBgNVBAYTAmNoMQ4wDAYDVQQIDAVodW5hbjERMA8GA1UEBwwIY2hhbmdzaGEx
+CzAJBgNVBAoMAmtkMQwwCgYDVQQLDANwZGYxCzAJBgNVBAMMAnB5MRkwFwYJKoZI
+hvcNAQkBFgpweUAxNjMuY29tMB4XDTE5MDkxMTA3MjIwMVoXDTIwMDkxMDA3MjIw
+MVowczELMAkGA1UEBhMCY2gxDjAMBgNVBAgMBWh1bmFuMREwDwYDVQQHDAhjaGFu
+Z3NoYTELMAkGA1UECgwCa2QxDDAKBgNVBAsMA3BkZjELMAkGA1UEAwwCcHkxGTAX
+BgkqhkiG9w0BCQEWCnB5QDE2My5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAMYeKJxWVaYEepiTVtFReFgjmsAzdVbH7Abjpq2Wu/V8k601QSHfXuyOOpur
+XaWAAULAFt9pWgxsBhkmLZ0Nr+wTWDM7K4r9BVGyw32sc7JWMcJnp1sHSVBmy6oQ
+oY9RzqyE4nXDkE7sxFP4exzwcGF6ObOm5WgBXNpp6gfJXAmtAgMBAAEwDQYJKoZI
+hvcNAQELBQADgYEAV6AMWgnUoOHrKk0mqltbAytrt9Bgr3XSl9o2xPAI7d3MHahS
+lInNskbcItyEp+Cae7XzmG6Ld7RTWZXBgPvKUY9NHYp+JTdRGQNISISvwzLBXTv1
+3wFKnv8PevcBIleneqfKLUIRSUlqzjxwITTI1A6Cn7Jrq6aVMoRQc5hVWxc=
+-----END CERTIFICATE-----

+ 32 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/62edae9d.0

@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFkzCCA3ugAwIBAgIRANaWLsEKFZMSr49jvNREyVswDQYJKoZIhvcNAQELBQAw
+YzELMAkGA1UEBhMCVFcxIzAhBgNVBAoMGkNodW5naHdhIFRlbGVjb20gQ28uLCBM
+dGQuMS8wLQYDVQQDDCZlUEtJIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
+LSBHMjAeFw0xNTExMTcwODIzNDJaFw0zNzEyMzExNTU5NTlaMGMxCzAJBgNVBAYT
+AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEvMC0GA1UE
+AwwmZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCkWR+gL9++4Pvp3LWJ/lqXA8k6d6eO
+XK/y4xg59ardD0bSaA9XnKdjYNNYzjXCp/aIwk9/Gyjp0KcAxBdNbeIPxQ4mIyCr
+9zoookwKC8yOzuYAmlpADdRQGpvRDZyU+dvuXNDxigfNmitALEmkXWJfp2vf7lYI
+UPNCGGwxsF7lnHOSvA7SDH3FOFe8u1jbJhkC7eNDhIpOVmvbraEx2cwiZ5Z4/3ed
+zGTFMiBq704w1SQl/Yh5r3Ea/tVLGxWIvBhwqr2tOApmMEbliYXVdiSpqbPmWWAP
+tKlTwjqdRRrWruN3XsRiNjMvMMS/lfEtOKV16NFqky5Fh0tKot+/WCeaymIZql7U
+sYBJlt0r7F+Pm+Cdl4j1hAOjr7Olcy1BuuUHt29rcff3yVqvaZmzL8hPQutsa3Fn
+eN8KrE/XSoUARhrVzbif6pWdD3zRxgWF5gjeiBeB9tW1buqhHNdhquNZQomcWX6x
+fGQ03WEjKjm1EKv8hqlTGsXrauKATlmRwDiJ/rNd1vuR6dewfdl4CMz1K8wr4aHW
+lHPB/lH0jH0KtZqKufXa4Mmz2I+qgoONaVMt/QAEGEqg2lTheYyJ63/1gueguXdN
+rvm6AjuIdut8XbNaE9t8KRZrmdEd5Eghog1eAYjovvGYTT7HFlccX+EIbxxMWENW
+94BljHEOogRnTwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRy
+W7qqcjjuJZAktZQi+gmIyosK+zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEL
+BQADggIBAAaj8bZzVcZnZiHlnVvWlC5KImDyVAGQof21v8CVvxhfLPZrNQ78Mcjt
+RA6Sl9yv3VbPtR+6cpwwyJuxkcB2d9QPGpUa6U0UiKHPawKmautkRU1kjd7862zy
+UwmhhVEV0E+eYvoRuc7IJA5yZIh1NCMwKj+8PDnMzN0LNru9BoKPEgHFcQXRJKGZ
+bMrk96rtitenCq2v8OCAu6GyP1qHZHCGM3sNHtcAhoNDl3X1O8FI/bYOQ6gCbrg+
+f49O4l20fZ4wNC+o8esnh2gNWgpNAdvJFFiV8ppNFqpz2/QliBc4t69ZCQm0Hy0P
+q/W4J1XuRTAzuO0bjryIbK/4Wipr4KyxBSShCfyjD/OwLXuWuraUBxVFjincWA6p
+Bdg7OqB7zYrHZoKXz9Yz4Gf8pttALwXlxYt6KnrwsDabDBj2N+lBof2xKPlva73r
+H0xjcXtQ3Sny/+73x0Vf6DYK6GxbIsPowOcm3OOolYDluToT2wBLGv2uM0d+eJTj
+sV0rtVa1QoufgcX8k0wQtboKvH434/pUbfUExXCzqQTSUdeFzX1vQ49ZaOUxVhFx
++WQpCRP+0B+8iwA4stDKNFZ2EDlWc2bD0UnZvldPPxZ9ani3qIK4W86uhYoKQgwD
+0RfEGPfYV4jGgrgHuT79pOku3G+6kJLuZbBQNNMH2gGXD7znc4J7
+-----END CERTIFICATE-----

+ 39 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/71b2c918.0

@@ -0,0 +1,39 @@
+-----BEGIN CERTIFICATE-----
+MIIG3zCCBMegAwIBAgIRALIUN9DWfGOHSET4RhxfS1QwDQYJKoZIhvcNAQELBQAw
+YzELMAkGA1UEBhMCVFcxIzAhBgNVBAoMGkNodW5naHdhIFRlbGVjb20gQ28uLCBM
+dGQuMS8wLQYDVQQDDCZlUEtJIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
+LSBHMjAeFw0xOTEwMTgwMjUwMjlaFw0zNzEyMjkxNjAwMDBaMFYxCzAJBgNVBAYT
+AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEiMCAGA1UE
+AwwZZVBLSSBUaW1lc3RhbXBpbmcgQ0EgLSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBALDG3EFOaxFjpsbjw10nufUL6JA5SzuhGXZecLoVtONZsJWu
+5n20TNlRhygApWlCr52x8z8uSmk7W3RwFrBEoliQW8UYLwjo5k60i72uJZ5pZFG3
+9EJjUsvvshQkM8Bl9AI4RPI4FuSVHpeDTqQ2e6/Zew7sdsM/cjFE8KPFkhvlKV+0
++p2XgB3I2YccduQxEn3gQGsMd4yWHIBFtLK/av9MgcksloWnph446PCZzTco2i3n
+jD/5Rna7voQEmPb3WQrLVEYSTFzk555VFs5DDUx24+cuhtJ20cilFUUumCqO2ti3
+fKvhM1k1jD4uyjIZikQg/A5i8MHhFCeHGVTPagiQBIpu3fuOn0Vld3kUuv1lULJt
+022REm7c80eFdtQJxwDBVNIa87ZXe5qsYt6T7yzOrXuLhuj1+9KmXOArhjYvXqi0
+e1Q4OQAVKPxHOyoRDT+SJa0ah95gom5zP/MFAvGlFT8unJGuCrWpMYybPxgcxJSN
+Lk4WLw5aLlVmE+Wd+od3dV4UZzrp565QkxQcm8jh1q5d/TSCCFMF8I4PA1yJEIUx
+pRDPmYRk/Dl0lR548HW70RsZoOQ6BD2nosMym68dt2Oxw1L3TJaiEU+PVEw5eIkr
+Ytf5mDbBsM76TiKJTfSDg1bjzWtYVvFwHbYd/Owk4QGKtnuH63zIxmKPlSobAgMB
+AAGjggGZMIIBlTAfBgNVHSMEGDAWgBRyW7qqcjjuJZAktZQi+gmIyosK+zAdBgNV
+HQ4EFgQU1pai1ZZuLT5AsaOybYh3e/bW9MowDgYDVR0PAQH/BAQDAgGGMDwGA1Ud
+HwQ1MDMwMaAvoC2GK2h0dHA6Ly9lY2EuaGluZXQubmV0L3JlcG9zaXRvcnkvQ1JM
+Mi9DQS5jcmwwgYIGCCsGAQUFBwEBBHYwdDA7BggrBgEFBQcwAoYvaHR0cDovL2Vj
+YS5oaW5ldC5uZXQvcmVwb3NpdG9yeS9DZXJ0cy9lQ0FHMi5jcnQwNQYIKwYBBQUH
+MAGGKWh0dHA6Ly9vY3NwLmVjYS5oaW5ldC5uZXQvT0NTUC9vY3NwRzJzaGEyMBIG
+A1UdEwEB/wQIMAYBAf8CAQAwVwYDVR0gBFAwTjA9BgsrBgEEAYG3I2QAAzAuMCwG
+CCsGAQUFBwIBFiBodHRwczovL2VjYS5oaW5ldC5uZXQvcmVwb3NpdG9yeTANBgsr
+BgEEAYG3I2QEAzATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG9w0BAQsFAAOC
+AgEAk/ds47HZHXdNUFlXKM8P0k8sY0GPgvvxwujvcVHYDopovqZmzJD9cZjwQqw2
+THTUyJFBNYEZew3j4ga2t/vPq/IAAoxWD87nQOVr97H0ehnoJHek21D8y7qrI91u
+VnPd22S1RaedI8PcjeTzOCDJG78aoSnf0y0kjrVOnYIGYd79cHXClJoOGYp79j2o
+souxLrBqfL0abzPCGjLqvWGPqC+gLwzg9rSx3nVq+8JpU3EB0H8OxcbbSZoppa3L
+oXuSWICHbFeXmUgEiZlxgQ5O8qh+XxaizJeKsYbp32uNHgs5EFZCoOZV7EN+PDoW
+42MK1MtMGDywkNmQhbPTRzlgT7RRfWs6dWzVBRSu0TBCgs64lEqU6n2f+GTHmlCp
+2BhRI8SkjriZqPEP23zWLzRW+JY9uHwZzBZnxGGnsNC7Ql6u+4JrYwTl6KLY4PPj
+dHlKoXCbiMIWyIfimizUwW/J2EvItsOgo/HSXqEQRsyT47rKcjZh6zbpUSoug0SS
+oPO9BH6mGmuPjBZLzFE50VomARXc/s1NF6WsZQc1Tt6DN9wi4SOynr+Km0NHm5fJ
+CNcNsVwY+Ydj1CL81gOXTZJG1AouKjZeA/a4EUyXeJ6aPBFB7UwGdr16poOwzKxX
+FuO1XmIA+kwB5OjwHJV2TXLnB7gZeZoH/BDPBfUvF2K165g=
+-----END CERTIFICATE-----

+ 29 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/a10809e8.0

@@ -0,0 +1,29 @@
+-----BEGIN CERTIFICATE-----
+MIIE7zCCA9egAwIBAgIQNvszzu+P/uEBDmB/jJA3mzANBgkqhkiG9w0BAQsFADBP
+MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0
+ZC4xGzAZBgNVBAMMEih0ZXN0KSBUU0EgQ0EgLSBHMTAeFw0xOTA5MDkwODQ1MzFa
+Fw0yOTA5MDkwODQ1MzFaMEUxCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3
+YSBUZWxlY29tIENvLiwgTHRkLjERMA8GA1UEAwwIVGVzdCBUU0EwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYFBU17R4FVtXOoyyTnKnggwJ7/iB9DzHU
+ZJ8kGTCbFwPuOe9wztwqFPUtei81Ni50zknEzc37YcTaApM7Zh8LfABKTqY77uV8
+sDd+Y/4FxRxTNjG66NzB4OsL2ZJWCbVHBkdYZK6tGIV6W52x7ZR8+4MNxpvAs16Q
+WXgtW4L0CV1Lx4oQ7vtTVjC9MS2st2TjYhgokYSA0gEnRntapQLXCLeqZyO06ZoA
+F3GtrPFU2LKewUDZdDaiCWIp9tVRWmt7XQYW6f4KrT19uqDyZThn2GsJS97bGnvY
+ESiACdtIyw0Op4YPQOjFcoyG4UNdoXK1qRFFOJz74DZiGuifFYqnAgMBAAGjggHP
+MIIByzB/BggrBgEFBQcBAQRzMHEwPwYIKwYBBQUHMAKGM2h0dHA6Ly9yZXBvc2l0
+b3J5LnRlc3R0bHMuaGluZXQubmV0L2NlcnRzL1RTQUcxLmNydDAuBggrBgEFBQcw
+AYYiaHR0cDovL29jc3AudGVzdHRscy5oaW5ldC5uZXQvT0NTUDBKBgNVHSAEQzBB
+MD8GCysGAQQBgbcjZAADMDAwLgYIKwYBBQUHAgEWImh0dHBzOi8vZWNhLmhpbmV0
+Lm5ldC9yZXBvc2l0b3J5X2gwgYgGA1UdHwSBgDB+MDygOqA4hjZodHRwOi8vcmVw
+b3NpdG9yeS50ZXN0dGxzLmhpbmV0Lm5ldC9jcmwvVFNBLTIwMDAtMS5jcmwwPqA8
+oDqGOGh0dHA6Ly9yZXBvc2l0b3J5LnRlc3R0bHMuaGluZXQubmV0L2NybC9UU0Et
+Y29tcGxldGUuY3JsMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMB8GA1UdIwQYMBaA
+FEKhrS3RLn4I2dSu/DfEGcn3D3ryMB0GA1UdDgQWBBSudvFn1URYSoqGWmLlmS2E
+JAer4jAOBgNVHQ8BAf8EBAMCB4AwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOC
+AQEAgXjgJVt+HCH5z8w4aJ8rI1lqH34xhp1beWzAMS2Zx6UIYlbCnnGOAQPsLSVq
+oS7cSFrGEQ58xas8e1lUMQzhAY2YmlL7oSc9Bb7huLiyfapmYU37g9g0fd+AL70o
+GpP1siNd9BBPeF7nwnYknEMx9JqtVsTvUfrsQ1Dpo9LKRLlv5qhSQokslR3nI49c
+lihcJwiGgkYCIbtyfCmFrb+W6sVxYmAcaRNC/ImyAbo5YxFvm0+LbO8I3BzBp9m7
+DS68pigWJZFqhQs/Yd/FQ+rL2ae8JI86aFBH0nGoytIIbXlUlYICUb8G9pED6ux9
+OoYgLdAmCS+YUydulrvWSrtjlg==
+-----END CERTIFICATE-----

+ 65 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Cert/eCA_64s.crt

@@ -0,0 +1,65 @@
+-----BEGIN CERTIFICATE-----
+MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe
+MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0
+ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
+Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw
+IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL
+SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH
+SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh
+ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X
+DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1
+TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ
+fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA
+sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU
+WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS
+nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH
+dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip
+NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC
+AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF
+MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
+ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB
+uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl
+PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP
+JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/
+gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2
+j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6
+5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB
+o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS
+/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z
+Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE
+W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D
+hNQ+IIX3Sj0rnP0qCglN6oH4EZw=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFkzCCA3ugAwIBAgIRANaWLsEKFZMSr49jvNREyVswDQYJKoZIhvcNAQELBQAw
+YzELMAkGA1UEBhMCVFcxIzAhBgNVBAoMGkNodW5naHdhIFRlbGVjb20gQ28uLCBM
+dGQuMS8wLQYDVQQDDCZlUEtJIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
+LSBHMjAeFw0xNTExMTcwODIzNDJaFw0zNzEyMzExNTU5NTlaMGMxCzAJBgNVBAYT
+AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEvMC0GA1UE
+AwwmZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCkWR+gL9++4Pvp3LWJ/lqXA8k6d6eO
+XK/y4xg59ardD0bSaA9XnKdjYNNYzjXCp/aIwk9/Gyjp0KcAxBdNbeIPxQ4mIyCr
+9zoookwKC8yOzuYAmlpADdRQGpvRDZyU+dvuXNDxigfNmitALEmkXWJfp2vf7lYI
+UPNCGGwxsF7lnHOSvA7SDH3FOFe8u1jbJhkC7eNDhIpOVmvbraEx2cwiZ5Z4/3ed
+zGTFMiBq704w1SQl/Yh5r3Ea/tVLGxWIvBhwqr2tOApmMEbliYXVdiSpqbPmWWAP
+tKlTwjqdRRrWruN3XsRiNjMvMMS/lfEtOKV16NFqky5Fh0tKot+/WCeaymIZql7U
+sYBJlt0r7F+Pm+Cdl4j1hAOjr7Olcy1BuuUHt29rcff3yVqvaZmzL8hPQutsa3Fn
+eN8KrE/XSoUARhrVzbif6pWdD3zRxgWF5gjeiBeB9tW1buqhHNdhquNZQomcWX6x
+fGQ03WEjKjm1EKv8hqlTGsXrauKATlmRwDiJ/rNd1vuR6dewfdl4CMz1K8wr4aHW
+lHPB/lH0jH0KtZqKufXa4Mmz2I+qgoONaVMt/QAEGEqg2lTheYyJ63/1gueguXdN
+rvm6AjuIdut8XbNaE9t8KRZrmdEd5Eghog1eAYjovvGYTT7HFlccX+EIbxxMWENW
+94BljHEOogRnTwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRy
+W7qqcjjuJZAktZQi+gmIyosK+zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEL
+BQADggIBAAaj8bZzVcZnZiHlnVvWlC5KImDyVAGQof21v8CVvxhfLPZrNQ78Mcjt
+RA6Sl9yv3VbPtR+6cpwwyJuxkcB2d9QPGpUa6U0UiKHPawKmautkRU1kjd7862zy
+UwmhhVEV0E+eYvoRuc7IJA5yZIh1NCMwKj+8PDnMzN0LNru9BoKPEgHFcQXRJKGZ
+bMrk96rtitenCq2v8OCAu6GyP1qHZHCGM3sNHtcAhoNDl3X1O8FI/bYOQ6gCbrg+
+f49O4l20fZ4wNC+o8esnh2gNWgpNAdvJFFiV8ppNFqpz2/QliBc4t69ZCQm0Hy0P
+q/W4J1XuRTAzuO0bjryIbK/4Wipr4KyxBSShCfyjD/OwLXuWuraUBxVFjincWA6p
+Bdg7OqB7zYrHZoKXz9Yz4Gf8pttALwXlxYt6KnrwsDabDBj2N+lBof2xKPlva73r
+H0xjcXtQ3Sny/+73x0Vf6DYK6GxbIsPowOcm3OOolYDluToT2wBLGv2uM0d+eJTj
+sV0rtVa1QoufgcX8k0wQtboKvH434/pUbfUExXCzqQTSUdeFzX1vQ49ZaOUxVhFx
++WQpCRP+0B+8iwA4stDKNFZ2EDlWc2bD0UnZvldPPxZ9ani3qIK4W86uhYoKQgwD
+0RfEGPfYV4jGgrgHuT79pOku3G+6kJLuZbBQNNMH2gGXD7znc4J7
+-----END CERTIFICATE-----

BIN
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/ComPDFKit


BIN
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/DroidSansFallback.ttf


+ 30 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFAction.h

@@ -0,0 +1,30 @@
+//
+//  CPDFAction.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+/**
+ * An action that is performed when, for example, a PDF annotation is activated or an outline item is clicked.
+ *
+ * @discussion A CPDFAction object represents an action associated with a PDF element, such as an annotation or a link, that the viewer application can perform. See the Adobe PDF Specification for more about actions and action types.
+ * CPDFAction is an abstract superclass of the following concrete classes: CPDFGoToAction, CPDFURLAction, CPDFNamedAction, CPDFResetFormAction.
+ */
+@interface CPDFAction : NSObject
+
+/**
+ * Returns the type of the action.
+ *
+ * @discussion Type based on the Adobe PDF Specification (1.7), Table 8.48: Action types.
+ */
+@property (nonatomic,readonly) NSInteger type;
+
+@end

+ 39 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFAnnotation+AP.h

@@ -0,0 +1,39 @@
+//
+//  CPDFAnnotation+AP.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+@interface CPDFAnnotation (AP)
+
+- (void)updateAppearanceStreamWithImage:(CPDFKitPlatformImage *)image;
+
+- (void)updateAppearanceStreamWithImage:(CPDFKitPlatformImage *)image rotation:(NSInteger)rotation;
+
+- (void)updateAppearanceStreamWithPaths:(NSArray<NSArray *> *)paths
+                                  border:(CGFloat)border
+                                  color:(CPDFKitPlatformColor *)color;
+
+- (void)updateAppearanceStreamWithRect:(CGRect)rect
+                                border:(CGFloat)border
+                                 color:(CPDFKitPlatformColor *)color
+                             fillColor:(CPDFKitPlatformColor *)fillColor;
+
+- (void)updateAppearanceStreamWithArc:(CGRect)rect
+                               border:(CGFloat)border
+                                color:(CPDFKitPlatformColor *)color
+                            fillColor:(CPDFKitPlatformColor *)fillColor;
+
+- (void)updateAppearanceStream:(NSInteger)rotation;
+
+- (NSInteger)appearanceStreamRotation;
+
+@end

+ 188 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFAnnotation.h

@@ -0,0 +1,188 @@
+//
+//  CPDFAnnotation.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+#import <ComPDFKit/CPDFPage.h>
+#import <ComPDFKit/CPDFBorder.h>
+
+/**
+ * A set of flags specifying various characteristics of the annotation.
+ * ComPDFKit doesn't support all of those flag settings.
+ */
+typedef NS_OPTIONS(NSInteger, CPDFAnnotationFlags) {
+    /* [IGNORED] If set, ignore annotation AP stream if there is no handler available. */
+    CPDFAnnotationFlagInvisible = 1,
+    /* If set, do not display or print the annotation or allow it to interact with the user. */
+    CPDFAnnotationFlagHidden = 1 << 1,
+    /* [IGNORED] If set, print the annotation when the page is printed. */
+    CPDFAnnotationFlagPrint = 1 << 2,
+    /* [IGNORED] If set, don't scale the annotation’s appearance to match the magnification of the page. */
+    CPDFAnnotationFlagNoZoom = 1 << 3,
+    /* [IGNORED] If set, don't rotate the annotation’s appearance to match the rotation of the page. */
+    CPDFAnnotationFlagNoRotate = 1 << 4,
+    /* [IGNORED] If set, don't display the annotation on the screen. (But printing might be allowed) */
+    CPDFAnnotationFlagNoView = 1 << 5,
+    /**
+     * If set, don’t allow the annotation to be deleted or its properties to be modified, including `contents`.
+     * This is ignored for widget annotations (form elements).
+     * For widget annotations the `isReadOnly` property of the associated form field should be used instead.
+     * This flag only restricts the ComPDFKit UI and does not impact programmatic modification of the annotation.
+     */
+    CPDFAnnotationFlagReadOnly = 1 << 6,
+    /* If set, don’t allow the annotation to be deleted or its properties to be modified, except for `contents`. */
+    CPDFAnnotationFlagLocked = 1 << 7,
+    /* [IGNORED] If set, invert the interpretation of the `.noView` flag for certain events. */
+    CPDFAnnotationFlagToggleNoView = 1 << 8,
+    /* [IGNORED] If set, don't allow the `contents` of the annotation to be modified by the user. */
+    CPDFAnnotationFlagLockedContents = 1 << 9
+};
+
+/**
+ * An annotation in a PDF document.
+ *
+ * @discussion In addition to its primary textual content, a PDF file can contain annotations that represent links, form elements, highlighting circles, textual notes, and so on.
+ * Each annotation is associated with a specific location on a page and may offer interactivity with the user.
+ *
+ * This is the base class for all annotations. A CPDFAnnotation object by itself is not useful, only subclasses (like CPDFCircleAnnotation, CPDFTextAnnotation) are interesting.
+ * In parsing a PDF however, any unknown or unsupported annotations will be represented as this base class.
+ */
+@interface CPDFAnnotation : NSObject
+
+#pragma mark - Initializers
+
+/**
+ * Initializes a PDF annotation object.
+ *
+ * @discussion Subclasses of CPDFAnnotation should use this method to initialize annotation instances.
+ * Invoking initWithDocument: directly on a CPDFAnnotation object creates an illegal NULL type.
+ */
+- (instancetype)initWithDocument:(CPDFDocument *)document;
+
+#pragma mark - Accessors
+
+/**
+ * Returns the page that the annotation is associated with (may return nil if annotation not associated with a page).
+ *
+ * @discussion The addAnnotation: method in the CPDFPage class lets you associate an annotation with a page.
+ */
+@property (nonatomic,readonly) CPDFPage *page;
+
+/**
+ * Returns the type of the annotation. Examples include: "Text", "Link", "Line", etc.
+ *
+ * @discussion The type of the annotation. Types include Line, Link, Text, and so on, referring to the CPDFAnnotation subclasses.
+ * In the Adobe PDF Specification, this attribute is called Subtype, and the common “type” for all annotations in the PDF Specification is Annot.
+ */
+@property (nonatomic,readonly) NSString *type;
+
+/**
+ * Method to get / set the bounding box for the annotation in page space. Required for all annotations.
+ *
+ * @discussion Page space is coordinate system with the origin at the lower-left corner of the current page.
+ */
+@property (nonatomic,assign) CGRect bounds;
+
+/**
+ * Method to get / set the textual content (if any) associated with the annotation.
+ *
+ * @discussion Textual content is typically associated with CPDFTextAnnotation and CPDFFreeTextAnnotation annotations.
+ */
+@property (nonatomic,retain) NSString *contents;
+
+/**
+ * Method to get / set the stroke thickness for the annotation.
+ *
+ * @discussion For the "geometry" annotations (Circle, Ink, Line, Square), the stroke thickness indicates the line width.
+ * CPDFAnnotation markup types (Highlight, Strikethrough, Underline) ignores the stroke thickness.
+ */
+@property (nonatomic,assign) CGFloat borderWidth;
+
+/**
+ * Optional border or border style that describes how to draw the annotation border (if any).
+ * @discussion For the "geometry" annotations (Circle, Ink, Line, Square), the border indicates the line width and whether to draw with a dash pattern or solid pattern.
+ * CPDFAnnotation markup types (Highlight, Strikethrough, Underline) ignores the border.
+ */
+@property (nonatomic,retain) CPDFBorder *border;
+
+/**
+ * Method to get / set the opacity for the annotation.
+ */
+@property (nonatomic,assign) CGFloat opacity;
+
+/**
+ * Method to get / set the color for the annotation.
+ * @discussion For many annotations ("Circle", "Square") the stroke color. Used for other annotations as well.
+ */
+@property (nonatomic,retain) CPDFKitPlatformColor *color;
+
+@property (nonatomic,assign) BOOL isNoRotate;
+
+/**
+ * Returns the modification date of the annotation.
+ */
+- (NSDate *)modificationDate;
+- (void)setModificationDate:(NSDate *)modificationDate;
+
+/**
+ * Returns the name of the user who created the annotation.
+ */
+- (NSString *)userName;
+- (void)setUserName:(NSString *)userName;
+
+/**
+ * Returns the flags of the annotation.
+ *
+ * @see CPDFAnnotationFlags
+ */
+- (CPDFAnnotationFlags)flags;
+/**
+ * Sets the flags of the annotation.
+ *
+ * @see CPDFAnnotationFlags
+ */
+- (void)setFlags:(CPDFAnnotationFlags)flags;
+
+/**
+ * This is a convenience property that checks for `CPDFAnnotationFlagHidden` in `flags`.
+ */
+- (BOOL)isHidden;
+- (void)setHidden:(BOOL)hidden;
+
+/**
+ * This is a convenience property that checks for `CPDFAnnotationFlagReadOnly` in `flags`.
+ */
+- (BOOL)isReadOnly;
+- (void)setReadOnly:(BOOL)readOnly;
+
+/**
+ * This is a convenience property that checks for `CPDFAnnotationFlagLocked` in `flags`.
+ */
+- (BOOL)isLocked;
+- (void)setLocked:(BOOL)locked;
+
+/**
+ * Update appearance stream for the annotation.
+ *
+ * @discussion ComPDFKit will update the annotation appearance by default when you modify the annotation properties.
+ * You can also manually update the appearance by calling the updateAppearanceStream method,
+ * but you must call the updateAppearanceStream method manually when you modify the bounds of CPDFTextAnnotation, CPDFStampAnnotation, CPDFSignatureAnnotation annotations.
+ */
+- (void)updateAppearanceStream;
+
+#pragma mark - Drawing
+
+/**
+ * Draw method. Draws in page-space relative to origin of "box" passed in and to the given context.
+ */
+- (void)drawWithBox:(CPDFDisplayBox)box inContext:(CGContextRef)context;
+
+@end

+ 103 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBackground.h

@@ -0,0 +1,103 @@
+//
+//  CPDFBackground.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+typedef NS_ENUM(NSInteger, CPDFBackgroundType) {
+    CPDFBackgroundTypeColor = 0,
+    CPDFBackgroundTypeImage
+};
+
+/**
+ * Adds and removes the background.
+ */
+@interface CPDFBackground : NSObject
+
+#pragma mark - Accessors
+
+/**
+ * Method to get / set the type of the background.
+ *
+ * @see CPDFBackgroundType
+ */
+@property (nonatomic,assign) CPDFBackgroundType type;
+
+/**
+ * Method to get / set the color of the background.
+ */
+@property (nonatomic,retain) CPDFKitPlatformColor *color;
+
+/**
+ * Method to get / set the scale of the background.
+ */
+@property (nonatomic,assign) CGFloat scale;
+
+/**
+ * Method to get / set the rotation angle of the background.
+ */
+@property (nonatomic,assign) CGFloat rotation;
+
+/**
+ * Method to get / set the opacity of the background.
+ */
+@property (nonatomic,assign) CGFloat opacity;
+
+/**
+ * Method to get / set the page range of the background by string, such as "0,3,5-7".
+ */
+@property (nonatomic,retain) NSString *pageString;
+
+/**
+ * Method to get / set the vertical alignment of the background.
+ */
+@property (nonatomic,assign) NSUInteger verticalAlignment;
+
+/**
+ * Method to get / set the horizontal offset of the background.
+ */
+@property (nonatomic,assign) NSUInteger horizontalAlignment;
+
+/**
+ * Method to get / set the horizontal offset of the background.
+ */
+@property (nonatomic,assign) CGFloat xOffset;
+
+/**
+ * Method to get / set the vertical offset of the background.
+ */
+@property (nonatomic,assign) CGFloat yOffset;
+
+/**
+ * Method to get / set whether to support the background to be displayed.
+ */
+@property (nonatomic,assign) BOOL isAllowsView;
+
+/**
+ * Method to get / set whether to support the background to be printed.
+ */
+@property (nonatomic,assign) BOOL isAllowsPrint;
+
+/**
+ * Sets the image of the background.
+ */
+- (void)setImage:(CPDFKitPlatformImage *)image;
+
+/**
+ * Updates the background.
+ */
+- (void)update;
+/**
+ * Removes the background.
+ */
+- (void)clear;
+
+@end

+ 20 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBates.h

@@ -0,0 +1,20 @@
+//
+//  CPDFBates.h
+//  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 <ComPDFKit/CPDFHeaderFooter.h>
+
+/**
+ * Adds and removes the bates numbers.
+ */
+@interface CPDFBates : CPDFHeaderFooter
+
+@end

+ 41 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBookmark.h

@@ -0,0 +1,41 @@
+//
+//  CPDFBookmark.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+@class CPDFDocument;
+
+@interface CPDFBookmark : NSObject
+
+#pragma mark - Accessors
+
+/**
+ * Returns the document with which the bookmark is associated.
+ */
+@property (nonatomic,readonly) CPDFDocument *document;
+
+/**
+ * Returns the page index that the bookmark refers to.
+ */
+@property (nonatomic,readonly) NSInteger pageIndex;
+
+/**
+ * Method to get / set the label for the bookmark.
+ */
+@property (nonatomic,retain) NSString *label;
+
+/**
+ * Method to get / set the date for the bookmark.
+ */
+@property (nonatomic,retain) NSDate *date;
+
+@end

+ 47 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFBorder.h

@@ -0,0 +1,47 @@
+//
+//  CPDFBorder.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+/**
+ * Style in which CPDFBorder is displayed.
+ */
+typedef NS_ENUM(NSInteger, CPDFBorderStyle) {
+    CPDFBorderStyleSolid = 0,
+    CPDFBorderStyleDashed = 1,
+    CPDFBorderStyleBeveled = 2,
+    CPDFBorderStyleInset = 3,
+    CPDFBorderStyleUnderline = 4
+};
+
+@interface CPDFBorder : NSObject
+
+- (instancetype)initWithStyle:(CPDFBorderStyle)style lineWidth:(CGFloat)lineWidth dashPattern:(NSArray *)dashPattern;
+
+/**
+ * Whether border is drawn solid, dashed etc.
+ *
+ * @see CPDFBorderStyle
+ */
+@property (nonatomic,readonly) CPDFBorderStyle style;
+
+/**
+ * Width of line used to stroke border.
+ */
+@property (nonatomic,readonly) CGFloat lineWidth;
+
+/**
+ * Array of floats specifying the dash pattern.
+ */
+@property (nonatomic,readonly) NSArray *dashPattern;
+
+@end

+ 102 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFButtonWidgetAnnotation.h

@@ -0,0 +1,102 @@
+//
+//  CPDFButtonWidgetAnnotation.h
+//  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 <ComPDFKit/CPDFWidgetAnnotation.h>
+
+typedef NS_ENUM(NSInteger, CPDFWidgetControlType) {
+    CPDFWidgetUnknownControl = -1,
+    CPDFWidgetPushButtonControl = 0,
+    CPDFWidgetRadioButtonControl = 1,
+    CPDFWidgetCheckBoxControl = 2
+};
+
+typedef NS_ENUM(NSInteger, CPDFWidgetButtonStyle) {
+    CPDFWidgetButtonStyleNone = -1,
+    CPDFWidgetButtonStyleCheck = 0,
+    CPDFWidgetButtonStyleCircle,
+    CPDFWidgetButtonStyleCross,
+    CPDFWidgetButtonStyleDiamond,
+    CPDFWidgetButtonStyleSquare,
+    CPDFWidgetButtonStyleStar
+};
+
+@class CPDFAction;
+
+/**
+ * A CPDFButtonWidgetAnnotation object provides user interactivity on a page of a PDF document. There are three types of buttons available: push button, radio button, and checkbox.
+ *
+ * @discussion CPDFButtonWidgetAnnotation inherits general annotation behavior from the CPDFWidgetAnnotation class.
+ */
+@interface CPDFButtonWidgetAnnotation : CPDFWidgetAnnotation
+
+/**
+ * Initializes CPDFButtonWidgetAnnotation object.
+ *
+ * @see CPDFWidgetControlType
+ */
+- (instancetype)initWithDocument:(CPDFDocument *)document controlType:(CPDFWidgetControlType)controlType;
+
+/**
+ * Returns the type of the control.
+ *
+ * @see CPDFWidgetControlType
+ */
+- (CPDFWidgetControlType)controlType;
+
+/**
+ * Returns the state of the control.
+ *
+ * @discussion Applies to CPDFWidgetRadioButtonControl or CPDFWidgetCheckBoxControl only.
+ */
+- (NSInteger)state;
+/**
+ * Sets the state of the control.
+ *
+ * @discussion Applies to CPDFWidgetRadioButtonControl or CPDFWidgetCheckBoxControl only.
+ */
+- (void)setState:(NSInteger)value;
+
+/**
+ * Returns the text of the label on a push button control.
+ *
+ * @discussion This method applies only to the label drawn on a control of type CPDFWidgetPushButtonControl.
+ */
+- (NSString *)caption;
+/**
+ * Sets the text of the label on a push button control.
+ *
+ * @discussion This method applies only to the label drawn on a control of type CPDFWidgetPushButtonControl.
+ */
+- (void)setCaption:(NSString *)name;
+
+- (CPDFAction *)action;
+- (void)setAction:(CPDFAction *)action;
+
+- (BOOL)isTick;
+- (void)setIsTick:(NSInteger)isTick;
+
+/**
+ *Get the button selected style of check boxes or radio buttons.
+ *
+ * @see CPDFWidgetButtonStyle
+ */
+- (CPDFWidgetButtonStyle)widgetCheckStyle;
+
+/**
+ * Set the button selected style of check boxes or radio buttons.
+ *
+ * @see CPDFWidgetButtonStyle
+ */
+- (void)setWidgetCheckStyle:(CPDFWidgetButtonStyle)widgetCheckStyle;
+
+
+@end

+ 31 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFChoiceWidgetAnnotation+Protected.h

@@ -0,0 +1,31 @@
+//
+//  CPDFChoiceWidgetAnnotation+Protected.h
+//  ComPDFKit
+//
+//  Copyright © 2014-2022 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/ComPDFKit.h>
+
+@interface CPDFChoiceWidgetAnnotation (Protected)
+
+- (BOOL)multiSelcetFlag DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+- (BOOL)setMultiSelcetFlag:(BOOL)multiSelcetFlag DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (BOOL)isEditable DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+- (BOOL)setIsEditable:(BOOL)isEditable DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (BOOL)commitFlag DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+- (BOOL)setCommitFlag:(BOOL)commitFlag DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (BOOL)setComBoxValueUTF:(NSString *)stringValue DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (NSIndexSet *)selectItemAtIndexs DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+- (BOOL)setSelectItemAtIndexs:(NSIndexSet *)selectItemAtIndexs DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+@end

+ 48 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFChoiceWidgetAnnotation.h

@@ -0,0 +1,48 @@
+//
+//  CPDFChoiceWidgetAnnotation.h
+//  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 <ComPDFKit/CPDFWidgetAnnotation.h>
+
+@interface CPDFChoiceWidgetItem : NSObject
+
+@property (nonatomic,retain) NSString *value;
+@property (nonatomic,retain) NSString *string;
+
+@end
+
+/**
+ * A CPDFChoiceWidgetAnnotation object provides user interactivity on a page of a PDF document, in the form of pop-up menus and lists.
+ *
+ * @discussion CPDFButtonWidgetAnnotation inherits general annotation behavior from the CPDFWidgetAnnotation class.
+ */
+@interface CPDFChoiceWidgetAnnotation : CPDFWidgetAnnotation
+
+/**
+ * Initializes CPDFChoiceWidgetAnnotation object.
+ */
+- (instancetype)initWithDocument:(CPDFDocument *)document listChoice:(BOOL)isListChoice;
+
+/**
+ * Returns a Boolean value indicating whether the widget annotation is a list.
+ *
+ * @discussion There are two flavors of Choice widget annotations, lists and pop-up menus. These methods allow you to differentiate.
+ */
+@property (nonatomic,readonly) BOOL isListChoice;
+
+/**
+ * Returns an array of CPDFChoiceWidgetItem that represent the items available in the list or pop-up menu of the choice widget annotation.
+ */
+@property (nonatomic,retain) NSArray<CPDFChoiceWidgetItem *> *items;
+
+@property (nonatomic,assign) NSInteger selectItemAtIndex;
+
+@end

+ 34 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCircleAnnotation.h

@@ -0,0 +1,34 @@
+//
+//  CPDFCircleAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+/**
+ * A CPDFCircleAnnotation object displays an ellipse on a page.
+ *
+ * @discussion Circle annotations are like square annotations (instances of the CPDFSquareAnnotation class) apart from the shape.
+ * The setBorderWidth: method of the CPDFAnnotation class determines the stroke thickness.
+ * The setColor: method of the CPDFAnnotation class determines the stroke color.
+ */
+@interface CPDFCircleAnnotation : CPDFAnnotation
+
+/**
+ * Method to get / set the fill opacity used for drawing the annotation.
+ */
+@property (nonatomic,assign) CGFloat interiorOpacity;
+
+/**
+ * Method to get / set the fill color used for drawing the annotation.
+ */
+@property (nonatomic,retain) CPDFKitPlatformColor *interiorColor;
+
+@end

+ 79 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCompareContent.h

@@ -0,0 +1,79 @@
+//
+//  CPDFCompareContent.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+#import "CPDFCompareResults.h"
+
+typedef NS_ENUM(NSInteger, CPDFCompareType) {
+    CPDFCompareTypeText = 0,
+    CPDFCompareTypeImage,
+    CPDFCompareTypeAll
+};
+
+@class CPDFDocument;
+
+@interface CPDFCompareContent : NSObject
+
+/**
+ * Initialize it with the given two versions of a document.
+ * By default, it will generate a comparison document according to the order of pages, starting from the first page of both versions of the document.
+ *
+ * @param oldDocument The old version of a document
+ * @param newDocument The new version of a document.
+ */
+- (instancetype)initWithOldDocument:(CPDFDocument *)oldDocument
+                        newDocument:(CPDFDocument *)newDocument;
+
+/**
+ * Specifies pages and types to compare.
+*/
+- (CPDFCompareResults *)compareOldPageIndex:(NSInteger)oldPageIndex
+                               newPageIndex:(NSInteger)newPageIndex
+                                       type:(CPDFCompareType)type
+                            isDrawHighlight:(BOOL)isDrawHighlight;
+
+/**
+ * Sets to replace the highlight color.
+ */
+- (void)setReplaceColor:(CPDFKitPlatformColor *)color;
+
+/**
+ * Sets the opacity of the replace highlighted color
+ */
+- (void)setReplaceOpacity:(CGFloat)opacity;
+
+/**
+* Sets to insert the highlight color.
+*/
+- (void)setInsertColor:(CPDFKitPlatformColor *)color;
+
+/**
+ * Sets the opacity of the insert highlighted color
+ */
+- (void)setInsertOpacity:(CGFloat)opacity;
+
+/**
+ * Sets to remove the highlight color.
+ */
+- (void)setDeleteColor:(CPDFKitPlatformColor *)color;
+
+/**
+ * Sets the opacity of the remove highlighted color
+ */
+- (void)setDeleteOpacity:(CGFloat)opacity;
+
+/**
+ * Saves the comparison document.
+ */
+- (BOOL)saveAsComparisonDocumentWithFilePath:(NSString *)filePath;
+
+@end

+ 128 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCompareOverlay.h

@@ -0,0 +1,128 @@
+//
+//  CPDFCompareOverlay.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+typedef NS_ENUM(NSInteger, CPDFBlendMode) {
+      CPDFBlendModeNormal = 0,
+      CPDFBlendModeMultiply,
+      CPDFBlendModeDarken,
+      CPDFBlendModeColorBurn,
+      CPDFBlendModeHardLight,
+      CPDFBlendModeDifference,
+      CPDFBlendModeExclusion,
+      CPDFBlendModeLuminosity,
+      CPDFBlendModeLast = CPDFBlendModeLuminosity,
+};
+
+@class CPDFDocument;
+
+@interface CPDFCompareOverlay : NSObject
+
+/**
+ * Initialize it with the given two versions of a document.
+ * By default, it will generate a comparison document according to the order of pages, starting from the first page of both versions of the document.
+ *
+ * @param oldDocument The old version of a document
+ * @param newDocument The new version of a document.
+ */
+- (instancetype)initWithOldDocument:(CPDFDocument *)oldDocument
+                        newDocument:(CPDFDocument *)newDocument;
+
+/**
+ * Initialize it with the given two versions of a document.
+ * and indices of the pages on which the points should be selected in both versions of a document.
+ * 
+ * @param oldDocument The old version of a document
+ * @param oldPageRange The page range of the old document, for example: 1,3,5,6-10.
+ * @param newDocument The new version of a document.
+ * @param newPageString The page range of the new document, for example: 1,3,5,6-10.
+ */
+- (instancetype)initWithOldDocument:(CPDFDocument *)oldDocument
+                       oldPageRange:(NSString *)oldPageString
+                        newDocument:(CPDFDocument *)newDocument
+                       newPageRange:(NSString *)newPageString;
+
+/**
+ * Compares the document.
+ */
+- (BOOL)compare;
+
+/**
+ * Sets the color that will be used to replace all strokes in the old version of a document.
+ *
+ * Returns true on success, false on failure.
+ * @param strokeColor RGB color value, range 0-255.
+ */
+- (BOOL)setOldDocumentStrokeColor:(CPDFKitPlatformColor *)strokeColor;
+
+/**
+ * Sets the color that will be used to replace all strokes in the new version of a document.
+ *
+ * Returns true on success, false on failure.
+ * @param strokeColor RGB color value, range 0-255.
+ */
+- (BOOL)setNewDocumentStrokeColor:(CPDFKitPlatformColor *)strokeColor;
+
+/**
+ * Sets the opacity that will be used to replace all strokes in the old version of a document.
+ *
+ * Returns true on success, false on failure.
+ * @param strokeAlpha Opacity value, range 0-1.
+ */
+- (BOOL)setOldDocumentStrokeOpacity:(CGFloat)strokeAlpha;
+
+/**
+ * Sets the opacity that will be used to replace all strokes in the new version of a document.
+ *
+ * Returns true on success, false on failure.
+ * @param strokeAlpha Opacity value, range 0-1.
+ */
+- (BOOL)setNewDocumentStrokeOpacity:(CGFloat)strokeAlpha;
+
+/**
+ * Sets the fill opacity that will be used to replace all strokes in the old version of a document.
+ *
+ * Returns true on success, false on failure.
+ * @param fillAlpha Opacity value, range 0-1.
+ */
+- (BOOL)setOldDocumentFillOpacity:(CGFloat)fillAlpha;
+
+/**
+ * Sets the fill opacity that will be used to replace all strokes in the new version of a document.
+ *
+ * Returns true on success, false on failure.
+ * @param fillAlpha Opacity value, range 0-1.
+ */
+- (BOOL)setNewDocumentFillOpacity:(CGFloat)fillAlpha;
+
+/**
+ * Sets whether the path is filled with white.
+ */
+- (BOOL)setNoFill:(BOOL)noFill;
+
+/**
+ * Sets the blend mode that will be used when overlaying the new version of a document onto the old version.
+ *
+ * Returns true on success, false on failure.
+ * @see CPDFBlendMode
+ */
+- (BOOL)setBlendMod:(CPDFBlendMode)blendMod;
+
+/**
+ * Gets the generated comparison document once the user compares both versions of a document.
+ *
+ * Returns The generated document.
+ */
+- (CPDFDocument *)comparisonDocument;
+
+@end

+ 79 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFCompareResults.h

@@ -0,0 +1,79 @@
+//
+//  CPDFCompareResults.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+typedef NS_ENUM(NSInteger, CPDFCompareResultType) {
+      CPDFCompareResultTypeNone = 0,
+      CPDFCompareResultTypeDelete,
+      CPDFCompareResultTypeInsert,
+      CPDFCompareResultTypeReplace,
+      CPDFCompareResultTypeChange,
+};
+
+@interface CPDFCompareResult : NSObject
+
+/**
+* Gets the type of a result of comparing content.
+*/
+- (CPDFCompareResultType)type;
+
+/**
+ * Gets a page index that compares the contents of the old document.
+ */
+- (NSInteger)oldPageIndex;
+
+/**
+ * Gets a page index that compares the contents of the new document.
+ */
+- (NSInteger)newPageIndex;
+
+/**
+ * Gets the page range of the old document content comparison results.
+ */
+- (CGRect)oldBounds;
+
+/**
+ * Gets the page range of the new document content comparison results.
+ */
+- (CGRect)newBounds;
+
+@end
+
+@interface CPDFCompareResults : NSObject
+
+/**
+ * Gets an array of results for all text compared in the document version.
+ */
+- (NSArray <CPDFCompareResult *>*)textResults;
+
+/**
+ * Gets an array of results for all image compared in the document version.
+ */
+- (NSArray <CPDFCompareResult *>*)imageResults;
+
+/**
+* Gets the count of removal.
+*/
+- (NSInteger)deleteCount;
+
+/**
+* Gets the count of insert.
+*/
+- (NSInteger)insertCount;
+
+/**
+* Gets the count of replacement.
+*/
+- (NSInteger)replaceCount;
+
+@end

+ 76 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFDestination.h

@@ -0,0 +1,76 @@
+//
+//  CPDFDestination.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+@class CPDFDocument;
+
+/**
+ * A CPDFDestination object describes a point on a PDF page.
+ *
+ * @discussion In typical usage, you do not initialize CPDFDestination objects but rather get them as either attributes of CPDFLinkAnnotation or CPDFOutline objects,
+ * or in response to the CPDFView method currentDestination.
+ */
+@interface CPDFDestination : NSObject
+
+#pragma mark - Initializers
+
+/**
+ * Initializes the destination.
+ *
+ * @discussion Specify point in page space. Typically, there’s no need to initialize destinations. Instead, you get them from CPDFLinkAnnotation, CPDFOutline, or CPDFView objects.
+ * @param document The document with which the destination is associated.
+ * @param pageIndex The page index of the destination.
+ */
+- (instancetype)initWithDocument:(CPDFDocument *)document
+                       pageIndex:(NSInteger)pageIndex;
+
+/**
+ * Initializes the destination.
+ *
+ * @discussion Specify point in page space. Typically, there’s no need to initialize destinations. Instead, you get them from CPDFLinkAnnotation, CPDFOutline, or CPDFView objects.
+ * Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ * @param document The document with which the destination is associated.
+ * @param pageIndex The page index of the destination.
+ * @param point The point of the destination, in page space.
+ * @param zoom The zoom of the destination.
+ */
+- (instancetype)initWithDocument:(CPDFDocument *)document
+                       pageIndex:(NSInteger)pageIndex
+                         atPoint:(CGPoint)point
+                            zoom:(CGFloat)zoom;
+
+#pragma mark - Accessors
+
+/**
+ * Returns the document with which the destination is associated.
+ */
+@property (nonatomic,readonly) CPDFDocument *document;
+
+/**
+ * Returns the page index that the destination refers to.
+ */
+@property (nonatomic,readonly) NSInteger pageIndex;
+
+/**
+ * Returns the point, in page space, that the destination refers to.
+ *
+ * @discussion Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+@property (nonatomic,readonly) CGPoint point;
+
+/**
+ * Returns the scale factor the PDF viewer should assume for this destination.
+ */
+@property (nonatomic,readonly) CGFloat zoom;
+
+@end

+ 69 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFDocument+Protected.h

@@ -0,0 +1,69 @@
+//
+//  CPDFDocument+Protected.h
+//  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 <ComPDFKit/CPDFDocument.h>
+
+typedef NSString *CPDFDocumentOptimizeOption NS_STRING_ENUM;
+
+extern CPDFDocumentOptimizeOption const CPDFDocumentImageQualityOption; // NSNumber for the image quality.
+
+@class CPDFSignature, CPDFSignatureWidgetAnnotation;
+
+@interface CPDFDocument (Protected)
+
+- (void)setPasswordOptions:(NSDictionary<CPDFDocumentWriteOption, id> *)options DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (BOOL)isImageDocument;
+
+#pragma mark - Accessors
+
+- (Class)pageClass;
+
+#pragma mark - Pages
+
+/**
+ * Insert the page number to the specified location
+ *
+ * @discussion page can only be used in the current document, if it is recommended from the page of another document "Use -importPages:fromDocument:atIndex:"
+ */
+- (BOOL)insertPageObject:(CPDFPage *)page atIndex:(NSUInteger)index;
+
+#pragma mark - Signature
+
+- (NSArray<CPDFSignature *> *)signatures;
+
+- (void)removeSignature:(CPDFSignature *)signature;
+
+- (BOOL)writeSignatureToURL:(NSURL *)url withWidget:(CPDFSignatureWidgetAnnotation *)widget PKCS12Cert:(NSString *)path password:(NSString *)password isLock:(BOOL)isLock;
+
+#pragma mark - XFDF
+
+- (BOOL)exportCustomWidget:(NSArray *)fieldNames toXFDFPath:(NSString *)xfdfPath;
+- (BOOL)importCustomWidgetFromXFDFPath:(NSString *)xfdfPath;
+
+#pragma mark - Form Data
+
+- (BOOL)exportWidgetDataXFDFPath:(NSString *)xfdfPath DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+- (BOOL)importWidgetDataWithXFDFPath:(NSString *)xfdfPath DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+#pragma mark - Optimize
+
+- (BOOL)writeOptimizeToURL:(NSURL *)url withOptions:(NSDictionary<CPDFDocumentOptimizeOption, id> *)options;
+
+#pragma mark - Extract
+
+- (NSUInteger)extractImageFromPages:(NSIndexSet *)indexSet toPath:(NSString *)path progress:(NSString* (^)(NSInteger pageIndex, NSInteger imageIndex, NSInteger index))progress;
+
+- (CPDFKitPlatformImage *)extractImageFromPage:(CPDFPage *)page imageSelection:(CPDFSelection *)imageSelection;
+
+
+@end

+ 563 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFDocument.h

@@ -0,0 +1,563 @@
+//
+//  CPDFDocument.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+extern NSNotificationName const CPDFDocumentDidUnlockNotification;
+
+extern NSNotificationName const CPDFDocumentPageCountChangedNotification;
+
+extern NSErrorDomain const CPDFDocumentErrorDomain;
+
+NS_ERROR_ENUM(CPDFDocumentErrorDomain) {
+    CPDFDocumentUnknownError  = 1,  // Unknown error.
+    CPDFDocumentFileError     = 2,  // File not found or could not be opened.
+    CPDFDocumentFormatError   = 3,  // File not in PDF format or corrupted.
+    CPDFDocumentPasswordError = 4,  // Password required or incorrect password.
+    CPDFDocumentSecurityError = 5,  // Unsupported security scheme.
+    CPDFDocumentPageError     = 6   // Page not found or content error.
+};
+
+/**
+ * An enumeration that specifies document permissions status.
+ */
+typedef NS_ENUM(NSInteger, CPDFDocumentPermissions) {
+    /** The status that indicates no document permissions. */
+    CPDFDocumentPermissionsNone = 0,
+    /** The status that indicates user document permissions. */
+    CPDFDocumentPermissionsUser,
+    /** The status that indicates owner document permissions. */
+    CPDFDocumentPermissionsOwner
+};
+
+typedef NS_OPTIONS(NSInteger, CPDFSearchOptions) {
+    CPDFSearchCaseInsensitive = 0,
+    /** If not set, it will not match case by default. */
+    CPDFSearchCaseSensitive = 1,
+    /** If not set, it will not match the whole word by default. */
+    CPDFSearchMatchWholeWord = 2,
+    /** If not set, it will skip past the current match to look for the next match. */
+    CPDFSearchConsecutive = 4
+};
+
+/**
+ * PDF/A conformance levels.
+ */
+typedef NS_ENUM(NSInteger, CPDFType) {
+    CPDFTypePDF = 0,
+    /** PDF/A-1a */
+    CPDFTypePDFA1a,
+    /** PDF/A-1b */
+    CPDFTypePDFA1b,
+    /** PDF/A-2a */
+    CPDFTypePDFA2a,
+    /** PDF/A-2u */
+    CPDFTypePDFA2u,
+    /** PDF/A-2b */
+    CPDFTypePDFA2b,
+    /** PDF/A-3a */
+    CPDFTypePDFA3a,
+    /** PDF/A-3u */
+    CPDFTypePDFA3u,
+    /** PDF/A-3b */
+    CPDFTypePDFA3b
+};
+
+typedef NS_ENUM(NSInteger, CPDFDocumentEncryptionLevel) {
+    CPDFDocumentEncryptionLevelRC4 = 0,
+    CPDFDocumentEncryptionLevelAES128,
+    CPDFDocumentEncryptionLevelAES256,
+    //If the encryption level is set to CPDFDocumentEncryptionLevelNoEncryptAlgo, it is equivalent to encrypting with the RC4 algorithm; if the document encryption level obtained is CPDFDocumentNoEncryptAlgo, it means that the document is not encrypted.
+    CPDFDocumentEncryptionLevelNoEncryptAlgo
+};
+
+typedef NSString *CPDFDocumentAttribute NS_STRING_ENUM;
+
+extern CPDFDocumentAttribute const CPDFDocumentTitleAttribute;             // NSString containing document title.
+extern CPDFDocumentAttribute const CPDFDocumentAuthorAttribute;            // NSString containing document author.
+extern CPDFDocumentAttribute const CPDFDocumentSubjectAttribute;           // NSString containing document title.
+extern CPDFDocumentAttribute const CPDFDocumentCreatorAttribute;           // NSString containing name of app that created document.
+extern CPDFDocumentAttribute const CPDFDocumentProducerAttribute;          // NSString containing name of app that produced PDF data.
+extern CPDFDocumentAttribute const CPDFDocumentKeywordsAttribute;          // NSString containing document keywords.
+extern CPDFDocumentAttribute const CPDFDocumentCreationDateAttribute;      // NSString representing document creation date.
+extern CPDFDocumentAttribute const CPDFDocumentModificationDateAttribute;  // NSString representing last document modification date.
+
+typedef NSString *CPDFDocumentWriteOption NS_STRING_ENUM;
+
+extern CPDFDocumentWriteOption const CPDFDocumentOwnerPasswordOption;      // NSString for the owner's password.
+extern CPDFDocumentWriteOption const CPDFDocumentUserPasswordOption;       // NSString for the user's password.
+extern CPDFDocumentWriteOption const CPDFDocumentEncryptionLevelOption;
+
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsPrintingOption;
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsHighQualityPrintingOption;
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsCopyingOption;
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsDocumentChangesOption;
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsDocumentAssemblyOption;
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsCommentingOption;
+extern CPDFDocumentWriteOption const CPDFDocumentAllowsFormFieldEntryOption;
+
+@class CPDFPage, CPDFOutline, CPDFBookmark, CPDFWatermark, CPDFHeaderFooter, CPDFBates, CPDFBackground, CPDFSelection;
+@protocol CPDFDocumentDelegate;
+
+/**
+ * An object that represents a PDF file and defines methods for writing, searching, and selecting PDF data.
+ *
+ * @discussion The other utility classes are either instantiated from methods in CPDFDocument, as are CPDFPage and CPDFOutline; or support it, as do CPDFWatermark and CPDFDestination.
+ * You initialize a CPDFDocument object with a URL to a PDF file. You can then ask for the page count, add or delete pages, perform a find, or parse selected content into an NSString object.
+ */
+@interface CPDFDocument : NSObject
+
+#pragma mark - Initializers
+
+/**
+ * Initializes a CPDFDocument object with new PDF.
+ */
+- (instancetype)init;
+
+/**
+ * Initializes a CPDFDocument object with the contents at the specified URL.
+ */
+- (instancetype)initWithURL:(NSURL *)url;
+
+#pragma mark - Accessors
+
+/**
+ * The object acting as the delegate for the CPDFDocument object.
+ *
+ * @see CPDFDocumentDelegate
+ */
+@property (nonatomic,assign) id<CPDFDocumentDelegate> delegate;
+
+/**
+ * The URL for the document.
+ *
+ * @discussion May return NULL if the document was created from an new object.
+ */
+@property (nonatomic,readonly) NSURL *documentURL;
+
+/**
+ * The password for the document.
+ *
+ * @discussion May return NULL if the document is not an encrypted document.
+ */
+@property (nonatomic,readonly) NSString *password;
+
+/**
+ * Error message for the document loading.
+ *
+ * @discussion To determine the error type, use the code to obtain error of type CPDFDocumentErrorDomain.
+ * Except for the CPDFDocumentPasswordError error, other errors cannot open the document.
+ * If CPDFDocumentPasswordError, reading the document requires a password.
+ */
+@property (nonatomic,readonly) NSError *error;
+
+/**
+ * A Boolean value specifying whether the document is encrypted.
+ *
+ * @discussion Whether the PDF is encrypted. With the right password, a PDF can be unlocked - nonetheless, the PDF still indicates that it is encrypted - just no longer locked.
+ * Some PDF's may be encrypted but can be unlocked with the empty string. These are unlocked automatically.
+ */
+@property (nonatomic,readonly) BOOL isEncrypted;
+
+/**
+ * A Boolean value indicating whether the document is locked.
+ *
+ * @discussion Only encrypted documents can be locked. Use the unlockWithPassword: method to unlock a document using a password.
+ */
+@property (nonatomic,readonly) BOOL isLocked;
+
+/**
+ * Attempts to unlock an encrypted document.
+ *
+ * @discussion If the password is correct, this method returns YES, and a CPDFDocumentDidUnlockNotification notification is sent.
+ * Once unlocked, you cannot use this function to relock the document.
+ * @param password The password to unlock an encrypted document (you cannot lock an unlocked PDF document by using an incorrect password).
+ */
+- (BOOL)unlockWithPassword:(NSString *)password;
+
+/**
+ * The major version of the document.
+ *
+ * @discussion PDF version of the PDF file (example: major version = 1; PDF v1.4).
+ */
+@property (nonatomic,readonly) NSInteger majorVersion;
+/**
+ * The minor version of the document.
+ *
+ * @discussion PDF version of the PDF file (example: minor version = 4; PDF v1.4).
+ */
+@property (nonatomic,readonly) NSInteger minorVersion;
+
+/**
+ * The permissions status of the PDF document.
+ *
+ * @discussion Returns the permissions status of the PDF document. You have CPDFDocumentPermissionsNone status for an encrypted
+ * document that you have not supplied either a valid user or owner password. For a document with no encryption, you automatically have CPDFDocumentPermissionsUser status.
+ * @see CPDFDocumentPermissions
+ */
+@property (nonatomic,readonly) CPDFDocumentPermissions permissionsStatus;
+
+/**
+ * A Boolean value indicating whether the document allows printing.
+ */
+@property (nonatomic,readonly) BOOL allowsPrinting;
+/**
+ * A Boolean value indicating whether the document allows printing in high fidelity.
+ */
+@property (nonatomic,readonly) BOOL allowsHighQualityPrinting;
+/**
+ * A Boolean value indicating whether the document allows copying of content to the Pasteboard.
+ */
+@property (nonatomic,readonly) BOOL allowsCopying;
+/**
+ * A Boolean value indicating whether you can modify the document contents except for document attributes.
+ */
+@property (nonatomic,readonly) BOOL allowsDocumentChanges;
+/**
+ * A Boolean value indicating whether you can manage a document by inserting, deleting, and rotating pages.
+ */
+@property (nonatomic,readonly) BOOL allowsDocumentAssembly;
+/**
+ * A Boolean value indicating whether you can create or modify document annotations, including form field entries.
+ */
+@property (nonatomic,readonly) BOOL allowsCommenting;
+/**
+ * A Boolean value indicating whether you can modify form field entries even if you can't edit document annotations.
+ */
+@property (nonatomic,readonly) BOOL allowsFormFieldEntry;
+
+
+@property (nonatomic,readonly) CPDFDocumentEncryptionLevel encryptionLevel;
+
+#pragma mark - Save
+
+/**
+ * A Boolean value indicating whether the document has been modified.
+ */
+- (BOOL)isModified;
+
+/**
+ * Writes the document to a location specified by the passed-in URL.
+ */
+- (BOOL)writeToURL:(NSURL *)url;
+
+/**
+ * Writes the document to the specified URL with the specified options.
+ *
+ * @discussion Set the password to the document by setting options.
+ * @param options CPDFDocumentOwnerPasswordOption, CPDFDocumentUserPasswordOption.
+ */
+- (BOOL)writeToURL:(NSURL *)url withOptions:(NSDictionary<CPDFDocumentWriteOption, id> *)options;
+
+/**
+ * Writes the document to the specified URL after flattening.
+ */
+- (BOOL)writeFlattenToURL:(NSURL *)url;
+
+/**
+ * Writes the document to the specified URL after removing annotions and form field entries.
+ */
+- (BOOL)writeContentToURL:(NSURL *)url;
+
+/**
+ * Writes the document to the specified URL after removing permissions.
+ */
+- (BOOL)writeDecryptToURL:(NSURL *)url;
+
+#pragma mark - Attributes
+
+/**
+ * A dictionary of document metadata.
+ *
+ * @discussion Metadata is optional for PDF documents. The dictionary may be empty, or only some of the keys may have associated values.
+ */
+- (NSDictionary<CPDFDocumentAttribute, id> *)documentAttributes;
+- (void)setDocumentAttributes:(NSDictionary<CPDFDocumentAttribute, id> *)documentAttributes;
+
+#pragma mark - Outline
+
+/**
+ * The document’s root outline to a PDF outline object.
+ *
+ * @discussion When a PDF document is saved, the outline tree structure is written out to the destination PDF file.
+ */
+- (CPDFOutline *)outlineRoot;
+
+/**
+ * Create a root outline for the document.
+ */
+- (CPDFOutline *)setNewOutlineRoot;
+
+#pragma mark - Bookmark
+
+/**
+ * A array of document’s bookmarks.
+ */
+- (NSArray<CPDFBookmark *> *)bookmarks;
+/**
+ * Add a bookmark at the specified index number.
+ *
+ * @discussion Indexes are zero based. This method raises an exception if index is out of bounds.
+ */
+- (BOOL)addBookmark:(NSString *)label forPageIndex:(NSUInteger)pageIndex;
+/**
+ * Remove the bookmark at the specified index number.
+ *
+ * @discussion Indexes are zero based. This method raises an exception if index is out of bounds.
+ */
+- (BOOL)removeBookmarkForPageIndex:(NSUInteger)pageIndex;
+/**
+ * Returns the bookmark at the specified index number.
+ *
+ * @discussion Indexes are zero based. This method raises an exception if index is out of bounds.
+ */
+- (CPDFBookmark *)bookmarkForPageIndex:(NSUInteger)pageIndex;
+
+#pragma mark - Watermark
+
+/**
+ * A array of document’s watermarks.
+ */
+- (NSArray<CPDFWatermark *> *)watermarks;
+/**
+ * Add a watermark.
+ *
+ * @param watermark A PDF watermark object.
+ */
+- (BOOL)addWatermark:(CPDFWatermark *)watermark;
+/**
+ * Remove the watermark.
+ *
+ * @param watermark The PDF watermark object from document’s watermarks.
+ */
+- (BOOL)removeWatermark:(CPDFWatermark *)watermark;
+/**
+ * Update the watermark.
+ *
+ * @param watermark The PDF watermark object from document’s watermarks.
+ */
+- (BOOL)updateWatermark:(CPDFWatermark *)watermark;
+
+#pragma mark - HeaderFooter
+
+/**
+ * Gets the header & footer of the document.
+ */
+- (CPDFHeaderFooter *)headerFooter;
+
+#pragma mark - Bates
+
+/**
+ * Gets the bates numbers of the document.
+ */
+- (CPDFBates *)bates;
+
+#pragma mark - Background
+
+/**
+ * Gets the background of the document.
+ */
+- (CPDFBackground *)background;
+
+#pragma mark - Pages
+
+/**
+ * The number of pages in the document.
+ */
+@property (nonatomic,readonly) NSUInteger pageCount;
+
+/**
+ * Returns the page size at the specified index number.
+ *
+ * @discussion Indexes are zero based. This method raises an exception if index is out of bounds.
+ */
+- (CGSize)pageSizeAtIndex:(NSUInteger)index;
+
+/**
+ * Returns a CPDFPage object representing the page at index.
+ *
+ * @discussion Indexes are zero based. This method raises an exception if index is out of bounds.
+ */
+- (CPDFPage *)pageAtIndex:(NSUInteger)index;
+
+/**
+ * Gets the index number for the specified page.
+ *
+ * @discussion Given a CPDFPage, returns the pages index within the document. Indices are zero-based.
+ */
+- (NSUInteger)indexForPage:(CPDFPage *)page;
+
+/**
+ * Inserts a blank page at the specified index point.
+ *
+ * @discussion Indexes are zero based. The index must lie within bounds, or be equal to the length of bounds.
+ */
+- (BOOL)insertPage:(CGSize)pageSize atIndex:(NSUInteger)index;
+/**
+ * Inserts a blank page with image at the specified index point.
+ *
+ * @discussion Indexes are zero based. The index must lie within bounds, or be equal to the length of bounds.
+ */
+- (BOOL)insertPage:(CGSize)pageSize withImage:(NSString *)imagePath atIndex:(NSUInteger)index;
+/**
+ * Removes page(s) at the specified index set.
+ */
+- (BOOL)removePageAtIndexSet:(NSIndexSet *)indexSet;
+/**
+ * Move one page to another.
+ *
+ * @discussion This method raises an exception if either index value is out of bounds.
+ */
+- (BOOL)movePageAtIndex:(NSUInteger)indexA withPageAtIndex:(NSUInteger)indexB;
+/**
+ * Exchanges one page with another.
+ *
+ * @discussion This method raises an exception if either index value is out of bounds.
+ */
+- (BOOL)exchangePageAtIndex:(NSUInteger)indexA withPageAtIndex:(NSUInteger)indexB;
+/**
+ * Import page(s) from another document at the specified index point.
+ *
+ * @discussion This method raises an exception if either index value is out of bounds.
+ */
+- (BOOL)importPages:(NSIndexSet *)indexSet fromDocument:(CPDFDocument *)document atIndex:(NSUInteger)index;
+
+#pragma mark - Annotations
+
+/**
+ * Export annotation to XFDF document.
+ */
+- (BOOL)exportAnnotationToXFDFPath:(NSString *)xfdfPath;
+/**
+ * Import annotations from XFDF document.
+ */
+- (BOOL)importAnnotationFromXFDFPath:(NSString *)xfdfPath;
+
+/**
+ * Remove all signatures.
+ */
+- (BOOL)removeAllSignature;
+
+/**
+ * A Boolean value indicating whether the document contains annotations.
+ */
+- (BOOL)hasAnnotations;
+
+/**
+ * Reset all forms in PDF document.
+ */
+- (void)resetForm;
+
+#pragma mark - Extract
+
+/**
+ * Extract image at the specified index set.
+ */
+- (NSUInteger)extractImageFromPages:(NSIndexSet *)indexSet toPath:(NSString *)path;
+
+/**
+ * Cancels a extract initiated with extractImageFromPages:toPath:.
+ */
+- (void)cancelExtractImage;
+
+#pragma mark - Summary
+
+- (NSString *)summaryHTML;
+
+#pragma mark - PDF/A
+
+/**
+ * Gets PDF/A conformance levels.
+ *
+ * @see CPDFType
+ */
+- (CPDFType)type;
+
+/**
+ * Converts existing PDF files to PDF/A compliant documents, including PDF/A-1a and PDF/A-1b only.
+ *
+ * @discussion The conversion option analyzes the content of existing PDF files and performs a sequence of modifications in order to produce a PDF/A compliant document.
+ * Features that are not suitable for long-term archiving (such as encryption, obsolete compression schemes, missing fonts, or device-dependent color) are replaced with their PDF/A compliant equivalents.
+ * Because the conversion process applies only necessary changes to the source file, the information loss is minimal.
+ * @see CPDFType
+ */
+- (BOOL)writePDFAToURL:(NSURL *)url withType:(CPDFType)type;
+
+#pragma mark - Find
+
+/**
+ * Returns a Boolean value indicating whether an asynchronous find operation is in progress.
+ */
+@property (nonatomic,readonly) BOOL isFinding;
+
+/**
+ * Synchronously finds all instances of the specified string in the document.
+ *
+ * @discussion Each hit gets added to an NSArray object as a CPDFSelection object. If there are no hits, this method returns an empty array.
+ * Use this method when the complete search process will be brief and when you don’t need the flexibility or control offered by beginFindString:withOptions:.
+ * @see CPDFSearchOptions
+ */
+- (NSArray<NSArray<CPDFSelection *> *> *)findString:(NSString *)string withOptions:(CPDFSearchOptions)options;
+
+/**
+ * Asynchronously finds all instances of the specified string in the document.
+ *
+ * @discussion This method returns immediately. It causes delegate methods to be called when searching begins and ends, on each search hit, and when the search proceeds to a new page.
+ * @see CPDFDocumentDelegate
+ */
+- (void)beginFindString:(NSString *)string withOptions:(CPDFSearchOptions)options;
+
+/**
+ * Cancels a search initiated with beginFindString:withOptions:.
+ */
+- (void)cancelFindString;
+
+#pragma mark - Redact
+
+/**
+ * Applies redaction annotations in the document.
+ */
+- (void)applyRedactions;
+
+@end
+
+/**
+ * The delegate for the CPDFDocument object.
+ */
+@protocol CPDFDocumentDelegate <NSObject>
+
+@optional
+
+/**
+ * Called when the beginFindString:withOptions: or findString:withOptions: method begins finding.
+ */
+- (void)documentDidBeginDocumentFind:(CPDFDocument *)document;
+/**
+ * Called when the beginFindString:withOptions: or findString:withOptions: method returns.
+ */
+- (void)documentDidEndDocumentFind:(CPDFDocument *)document;
+/**
+ * Called when a find operation begins working on a new page of a document.
+ */
+- (void)documentDidBeginPageFind:(CPDFDocument *)document pageAtIndex:(NSUInteger)index;
+/**
+ * Called when a find operation finishes working on a page in a document.
+ */
+- (void)documentDidEndPageFind:(CPDFDocument *)document pageAtIndex:(NSUInteger)index;
+/**
+ * Called when a string match is found in a document.
+ *
+ * @discussion To determine the string selection found, use the selection.
+ */
+- (void)documentDidFindMatch:(CPDFSelection *)selection;
+
+@end

+ 39 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFFreeTextAnnotation.h

@@ -0,0 +1,39 @@
+//
+//  CPDFFreeTextAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+/**
+ * A CPDFFreeTextAnnotation object displays text on a page.
+ *
+ * @discussion The CPDFAnnotation class’s contents and setContents: methods let you get and set the textual content for a CPDFFreeTextAnnotation object.
+ */
+@interface CPDFFreeTextAnnotation : CPDFAnnotation
+
+/**
+ * Method to get / set the font used for the annotation’s text field.
+ */
+@property (nonatomic,retain) CPDFKitPlatformFont *font;
+
+/**
+ * Method to get / set the font color used in the text field of the annotation.
+ */
+@property (nonatomic,retain) CPDFKitPlatformColor *fontColor;
+
+/**
+ * Method to get / set the horizontal alignment of text within the bounds of the annotation.
+ *
+ * @discussion Supported values are NSLeftTextAlignment, NSRightTextAlignment, and NSCenterTextAlignment.
+ */
+@property (nonatomic,assign) NSTextAlignment alignment;
+
+@end

+ 40 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFGoToAction.h

@@ -0,0 +1,40 @@
+//
+//  CPDFGoToAction.h
+//  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 <ComPDFKit/CPDFAction.h>
+
+@class CPDFDestination;
+
+/**
+ * CPDFGoToAction, a subclass of CPDFAction, defines methods for getting and setting the destination of a go-to action.
+ *
+ * @discussion A CPDFGoToAction object represents the action of going to a specific location within the PDF document.
+ */
+@interface CPDFGoToAction : CPDFAction
+
+#pragma mark - Initializers
+
+/**
+ * Initializes the go-to action.
+ *
+ * @param destination The destination with which to initialize the go-to action.
+ */
+- (instancetype)initWithDestination:(CPDFDestination *)destination NS_DESIGNATED_INITIALIZER;
+
+#pragma mark - Accessors
+
+/**
+ * Returns the destination associated with the action.
+ */
+- (CPDFDestination *)destination;
+
+@end

+ 77 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFHeaderFooter.h

@@ -0,0 +1,77 @@
+//
+//  CPDFHeaderFooter.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+/**
+ * Adds and removes the header & footer.
+ */
+@interface CPDFHeaderFooter : NSObject
+
+#pragma mark - Accessors
+
+/**
+ * Method to get / set the page range of the header & footer by string, such as "0,3,5-7".
+ */
+@property (nonatomic,retain) NSString *pageString;
+
+/**
+ * Method to get / set the margins of the header & footer.
+ */
+@property (nonatomic,assign) CPDFKitPlatformEdgeInsets margin;
+
+/**
+ * Gets the text of the header & footer at the specified index.
+ */
+- (NSString *)textAtIndex:(NSUInteger)index;
+/**
+ * Sets the text of the header & footer at the specified index.
+ */
+- (void)setText:(NSString *)text atIndex:(NSUInteger)index;
+
+/**
+ * Gets the font color of the header & footer at the specified index.
+ */
+- (CPDFKitPlatformColor *)textColorAtIndex:(NSUInteger)index;
+/**
+ * Sets the font color of the header & footer at the specified index.
+ */
+- (void)setTextColor:(CPDFKitPlatformColor *)color atIndex:(NSUInteger)index;
+
+/**
+ * Gets the font size of the header & footer at the specified index.
+ */
+- (CGFloat)fontSizeAtIndex:(NSUInteger)index;
+/**
+ * Sets the font size of the header & footer at the specified index.
+ */
+- (void)setFontSize:(CGFloat)fontSize atIndex:(NSUInteger)index;
+
+/**
+ * Gets the font name of the header & footer at the specified index.
+ */
+- (NSString *)fontNameAtIndex:(NSUInteger)index;
+/**
+ * Sets the font name of the header & footer at the specified index.
+ */
+- (void)setFontName:(NSString *)fontName atIndex:(NSUInteger)index;
+
+/**
+ * Updates the header & footer.
+ */
+- (void)update;
+/**
+ * Removes the header & footer.
+ */
+- (void)clear;
+
+@end

+ 26 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFInkAnnotation+Protected.h

@@ -0,0 +1,26 @@
+//
+//  CPDFInkAnnotation+Protected.h
+//  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 <ComPDFKit/CPDFInkAnnotation.h>
+
+typedef NS_ENUM(NSInteger, CPDFInkType) {
+    CPDFInkTypeNormal = 0,
+    CPDFInkTypeSignature = 1,
+    CPDFInkTypeMicpen = 2
+};
+
+@interface CPDFInkAnnotation (Protected)
+
+- (CPDFInkType)inkType;
+- (void)setInkType:(CPDFInkType)inkType;
+
+@end

+ 28 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFInkAnnotation.h

@@ -0,0 +1,28 @@
+//
+//  CPDFInkAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+/**
+ * A CPDFInkAnnotation object displays one or more disjoint paths on a page. This is typically used to represent a freehand jotting or “scribble” of handwritten text.
+ *
+ * @discussion The setBorderWidth: method of the CPDFAnnotation class determines the stroke thickness.
+ * The setColor: method of the CPDFAnnotation class determines the stroke color.
+ */
+@interface CPDFInkAnnotation : CPDFAnnotation
+
+/**
+ * Method to get / set an array containing the points that make up an annotation.
+ */
+@property (nonatomic,retain) NSArray<NSArray *> *paths;
+
+@end

+ 83 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKit.h

@@ -0,0 +1,83 @@
+//
+//  CPDFKit.h
+//  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 <Foundation/Foundation.h>
+
+typedef NS_ENUM(NSInteger, CPDFKitFeatureType) {
+    CPDFKitFeatureViewerOutline,
+    CPDFKitFeatureViewerBookmark,
+    CPDFKitFeatureViewerRender,
+    CPDFKitFeatureViewerSearch,
+    CPDFKitFeatureAnnotationNote,
+    CPDFKitFeatureAnnotationLink,
+    CPDFKitFeatureAnnotationFreeText,
+    CPDFKitFeatureAnnotationShape,
+    CPDFKitFeatureAnnotationMarkup,
+    CPDFKitFeatureAnnotationStandardStamp,
+    CPDFKitFeatureAnnotationCustomizedStamp,
+    CPDFKitFeatureAnnotationInk,
+    CPDFKitFeatureAnnotationSound,
+    CPDFKitFeatureAnnotationDelete,
+    CPDFKitFeatureAnnotationFlatten,
+    CPDFKitFeatureAnnotationXFDF,
+    CPDFKitFeatureForm,
+    CPDFKitFeatureFormFill,
+    CPDFKitFeatureEditorPage,
+    CPDFKitFeatureEditorExtract,
+    CPDFKitFeatureEditorInfo,
+    CPDFKitFeatureEditorConvert,
+    CPDFKitFeatureSecurityEncrypt,
+    CPDFKitFeatureSecurityDecrypt,
+    CPDFKitFeatureSecurityWatermark,
+    CPDFKitFeatureConversionPDFA
+};
+
+@interface CPDFKit : NSObject
+
+/**
+ * The shared ComPDFKit instance.
+ */
++ (instancetype)sharedInstance;
+
+/**
+ * Activate ComPDFKit with your license key and secret.
+ */
++ (void)setLicenseKey:(NSString *)licenseKey secret:(NSString *)licenseSecret;
+
+/**
+ * Returns the full ComPDFKit product version string. (e.g. "ComPDFKit 1.0.1 for iOS (101)")
+ */
+@property(atomic,readonly) NSString *versionString;
+
+/**
+ * Returns just the framework version. (e.g. 1.0.1)
+ */
+@property(atomic,readonly) NSString *versionNumber;
+
+/**
+ * The internal build number. Increments with every version.
+ */
+@property(atomic,readonly) NSUInteger buildNumber;
+
+/**
+ * Whether to allow to use specified features.
+ *
+ * @see CPDFKitFeatureType
+ */
+- (BOOL)allowsFeature:(CPDFKitFeatureType)type;
+
+/**
+ * Convert files (doc, docx, xls, xlsx, ppt, pptx, txt, jpeg, and png) to PDF.
+ */
+- (void)convertFilePath:(NSString *)filePath toPath:(NSString *)pdfFilePath completion:(void (^)(BOOL result))completion;
+
+@end

+ 54 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKitConfig+Private.h

@@ -0,0 +1,54 @@
+//
+//  CPDFKitConfig+Private.h
+//  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 "CPDFKitConfig.h"
+
+typedef NS_ENUM(NSInteger, FreeHandPenStyle) {
+    PEN_STYLE_PENCIL,
+    PEN_STYLE_MIC,
+};
+
+@interface CPDFKitConfig () {
+    dispatch_queue_t _queue;
+    dispatch_queue_t _searchQueue;
+}
+
+@property (nonatomic,assign) CGFloat textmarkOpcity;
+
+@property (nonatomic,assign) CGFloat  shapeOpcity;
+@property (nonatomic,assign) CGFloat  shapeFillOpcity;
+@property (nonatomic,assign) CGFloat  shapeThickness;
+@property (nonatomic,assign) BOOL     drawFillColor;
+@property (nonatomic,assign) BOOL     drawBorderColor;
+
+@property (nonatomic,assign) FreeHandPenStyle freehandPenType;
+@property (nonatomic,assign) CGFloat pencilOpcity;
+@property (nonatomic,assign) CGFloat micPenOpcity;
+@property (nonatomic,assign) CGFloat pencilSize;
+@property (nonatomic,assign) CGFloat micPenSize;
+
+@property (nonatomic,retain) CPDFKitPlatformColor  *typeWriteColor;
+@property (nonatomic,retain) NSString *typeWriteFontName;
+@property (nonatomic,assign) CGFloat   typeWriteFontSize;
+@property (nonatomic,assign) CGFloat   typeWriteOpacity;
+
+@property (nonatomic,assign) BOOL  isShowFormRequiredFlagColor DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+@property (nonatomic,retain) CPDFKitPlatformColor  *formRequiredFlagColor DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+@property (nonatomic,retain) CPDFKitPlatformColor  *enableFormFieldHighlightColor DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+@property (nonatomic,retain) CPDFKitPlatformColor  *enableLinkFieldHighlightColor DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+@property (nonatomic,assign) BOOL isShowReadOnlySignatureAnnotation DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (dispatch_queue_t)queue;
+
+- (dispatch_queue_t)searchQueue;
+
+@end

+ 233 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKitConfig.h

@@ -0,0 +1,233 @@
+//
+//  CPDFKitConfig.h
+//  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 <Foundation/Foundation.h>
+#import <ComPDFKit/CPDFKitPlatform.h>
+#import <ComPDFKit/CPDFView.h>
+
+#define CPDFKitShareConfig [CPDFKitConfig sharedInstance]
+
+@interface CPDFKitConfig : NSObject
+
+/**
+ * The shared CPDFKitConfig configuration instance.
+ */
++ (instancetype)sharedInstance;
+
+/**
+ * Get the cache size.
+ */
+- (unsigned long long)cacheSize;
+/**
+ * Clear the cache.
+ */
+- (void)clearCache;
+
+/**
+ * Get the default view mode of CPDFView.
+ * View Mode : Horizontally, Vertically
+ *
+ * @see CPDFDisplayDirection
+ */
+- (CPDFDisplayDirection)displayDirection;
+/**
+ * Set the default view mode of CPDFView.
+ *
+ * @see CPDFDisplayDirection
+ */
+- (void)setDisplayDirection:(CPDFDisplayDirection)displayDirection;
+
+/**
+ * Get the default reading mode of CPDFView.
+ * Reading Mode : Night, Soft, Green, Other
+ *
+ * @see CPDFDisplayMode
+ */
+- (CPDFDisplayMode)displayMode;
+/**
+ * Set the default reading mode of CPDFView.
+ *
+ * @see CPDFDisplayMode
+ */
+- (void)setDisplayMode:(CPDFDisplayMode)displayMode;
+
+/**
+ * Get a custom background color for the rendered mode of CPDFView.
+ */
+- (CPDFKitPlatformColor *)displayModeCustomColor;
+/**
+ * Set a custom background color for the rendered mode of CPDFView.
+ */
+- (void)setDisplayModeCustomColor:(CPDFKitPlatformColor *)displayModeCustomColor;
+
+/**
+ * Get whether to allow to highlight link field in the CPDFView.
+ */
+- (BOOL)enableLinkFieldHighlight;
+/**
+ * Set whether to allow to highlight link field in the CPDFView.
+ */
+- (void)setEnableLinkFieldHighlight:(BOOL)enableLinkFieldHighlight;
+/**
+ * Get whether to allow to highlight form field in the CPDFView.
+ */
+- (BOOL)enableFormFieldHighlight;
+/**
+ * Set whether to allow to highlight form field in the CPDFView.
+ */
+- (void)setEnableFormFieldHighlight:(BOOL)enableFormFieldHighlight;
+/**
+ * Get whether to allow annotation rotation.
+ */
+- (BOOL)enableAnnotationNoRotate;
+/**
+ * If set, do not rotate the annotation’s appearance to match the rotation of the page.
+ * The upper-left corner of the annotation rectangle shall remain in a fixed location on the page, regardless of the page rotation.
+ */
+- (void)setEnableAnnotationNoRotate:(BOOL)enableAnnotationNoRotate;
+
+/**
+ * Get the default author of annotations.
+ */
+- (NSString *)annotationAuthor;
+/**
+ * Set the default author of annotations.
+ */
+- (void)setAnnotationAuthor:(NSString *)annotationAuthor;
+
+/**
+ * Get whether to allow to add freehand annotation by PencilKit.
+ */
+- (BOOL)enableFreehandPencilKit;
+/**
+ * Set whether to allow to add annotation by PencilKit.
+ */
+- (void)setEnableFreehandPencilKit:(BOOL)enableFreehandPencilKit;
+
+/**
+ * Get the default color of highlight annotations.
+ */
+- (CPDFKitPlatformColor *)highlightAnnotationColor;
+/**
+ * Set the default color of highlight annotations.
+ */
+- (void)setHighlightAnnotationColor:(CPDFKitPlatformColor *)highlightAnnotationColor;
+
+/**
+ * Get the default color of underline annotations.
+ */
+- (CPDFKitPlatformColor *)underlineAnnotationColor;
+/**
+ * Set the default color of underline annotations.
+ */
+- (void)setUnderlineAnnotationColor:(CPDFKitPlatformColor *)underlineAnnotationColor;
+
+/**
+ * Get the default color of strikeout annotations.
+ */
+- (CPDFKitPlatformColor *)strikeoutAnnotationColor;
+/**
+ * Set the default color of strikeout annotations.
+ */
+- (void)setStrikeoutAnnotationColor:(CPDFKitPlatformColor *)strikeoutAnnotationColor;
+
+/**
+ * Get the default color of squiggly annotations.
+ */
+- (CPDFKitPlatformColor *)squigglyAnnotationColor;
+/**
+ * Set the default color of squiggly annotations.
+ */
+- (void)setSquigglyAnnotationColor:(CPDFKitPlatformColor *)squigglyAnnotationColor;
+
+/**
+ * Get the default opacity of markup annotations.
+ */
+- (CGFloat)markupAnnotationOpacity;
+/**
+ * Set the default opacity of markup annotations.
+ */
+- (void)setMarkupAnnotationOpacity:(CGFloat)markupAnnotationOpacity;
+
+/**
+ * Get the default color of shape annotations.
+ */
+- (CPDFKitPlatformColor *)shapeAnnotationColor;
+/**
+ * Set the default color of shape annotations.
+ */
+- (void)setShapeAnnotationColor:(CPDFKitPlatformColor *)shapeAnnotationColor;
+
+/**
+ * Get the default interior color of shape annotations.
+ */
+- (CPDFKitPlatformColor *)shapeAnnotationInteriorColor;
+/**
+ * Set the default interior color of shape annotations.
+ */
+- (void)setShapeAnnotationInteriorColor:(CPDFKitPlatformColor *)shapeAnnotationInteriorColor;
+
+/**
+ * Get the default opacity of shape annotations.
+ */
+- (CGFloat)shapeAnnotationOpacity;
+/**
+ * Set the default opacity of shape annotations.
+ */
+- (void)setShapeAnnotationOpacity:(CGFloat)shapeAnnotationOpacity;
+
+/**
+ * Get the default interior opacity of shape annotations.
+ */
+- (CGFloat)shapeAnnotationInteriorOpacity;
+/**
+ * Set the default interior opacity of shape annotations.
+ */
+- (void)setShapeAnnotationInteriorOpacity:(CGFloat)shapeAnnotationInteriorOpacity;
+
+/**
+ * Get the default border width of shape annotations.
+ */
+- (CGFloat)shapeAnnotationBorderWidth;
+/**
+ * Set the default border width of shape annotations.
+ */
+- (void)setShapeAnnotationBorderWidth:(CGFloat)shapeAnnotationBorderWidth;
+
+/**
+ * Get the default color of freehand annotations.
+ */
+- (CPDFKitPlatformColor *)freehandAnnotationColor;
+/**
+ * Set the default color of freehand annotations.
+ */
+- (void)setFreehandAnnotationColor:(CPDFKitPlatformColor *)freehandAnnotationColor;
+
+/**
+ * Get the default opacity of freehand annotations.
+ */
+- (CGFloat)freehandAnnotationOpacity;
+/**
+ * Set the default opacity of freehand annotations.
+ */
+- (void)setFreehandAnnotationOpacity:(CGFloat)freehandAnnotationOpacity;
+
+/**
+ * Get the default border width of freehand annotations.
+ */
+- (CGFloat)freehandAnnotationBorderWidth;
+/**
+ * Set the default border width of freehand annotations.
+ */
+- (void)setFreehandAnnotationBorderWidth:(CGFloat)freehandAnnotationBorderWidth;
+
+@end

+ 39 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFKitPlatform.h

@@ -0,0 +1,39 @@
+//
+//  CPDFKitPlatform.h
+//  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.
+//
+
+#ifndef CPDFKitPlatform_h
+#define CPDFKitPlatform_h
+
+#import <Foundation/Foundation.h>
+#import <CoreGraphics/CoreGraphics.h>
+
+#if TARGET_OS_IPHONE
+
+#import <UIKit/UIKit.h>
+
+#define CPDFKitPlatformColor        UIColor
+#define CPDFKitPlatformImage        UIImage
+#define CPDFKitPlatformFont         UIFont
+#define CPDFKitPlatformEdgeInsets   UIEdgeInsets
+
+#elif TARGET_OS_MAC
+
+#import <Cocoa/Cocoa.h>
+
+#define CPDFKitPlatformColor        NSColor
+#define CPDFKitPlatformImage        NSImage
+#define CPDFKitPlatformFont         NSFont
+#define CPDFKitPlatformEdgeInsets   NSEdgeInsets
+
+#endif
+
+#endif /* CPDFKitPlatform_h */

+ 80 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFLineAnnotation.h

@@ -0,0 +1,80 @@
+//
+//  CPDFLineAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+/**
+ * The following constants specify the available line ending styles.
+ */
+typedef NS_ENUM(NSInteger, CPDFLineStyle) {
+    /** No line ending. */
+    CPDFLineStyleNone = 0,
+    /** An open arrowhead line ending, composed from two short lines meeting in an acute angle at the line end. */
+    CPDFLineStyleOpenArrow = 1,
+    /** A closed arrowhead line ending, consisting of a triangle with the acute vertex at the line end and filled with the annotation’s interior color, if any. */
+    CPDFLineStyleClosedArrow = 2,
+    /** A square line ending filled with the annotation’s interior color, if any. */
+    CPDFLineStyleSquare = 3,
+    /** A circular line ending filled with the annotation’s interior color, if any. */
+    CPDFLineStyleCircle = 4,
+    /** A diamond-shaped line ending filled with the annotation’s interior color, if any. */
+    CPDFLineStyleDiamond = 5
+};
+
+/**
+ * A PDFAnnotationLine object displays a single line on a page.
+ *
+ * @discussion The setBorderWidth: method of the CPDFAnnotation class determines the stroke thickness.
+ * The setColor: method of the CPDFAnnotation class determines the stroke color.
+ */
+@interface CPDFLineAnnotation : CPDFAnnotation
+
+/**
+ * Method to get / set the starting point for the line, in page space.
+ *
+ * @discussion Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+@property (nonatomic,assign) CGPoint startPoint;
+/**
+ * Method to get / set the ending point for the line in page space.
+ *
+ * @discussion Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+@property (nonatomic,assign) CGPoint endPoint;
+
+/**
+ * Method to get / set the line ending style for the starting point of the line.
+ *
+ * @see CPDFLineStyle
+ */
+@property (nonatomic,assign) CPDFLineStyle startLineStyle;
+/**
+ * Method to get / set the line ending style for the ending point of the line.
+ *
+ * @see CPDFLineStyle
+ */
+@property (nonatomic,assign) CPDFLineStyle endLineStyle;
+
+/**
+ * Method to get / set the opacity used to fill the ornament at the ends of the line.
+ *
+ * @discussion The ornament at the end of a line is optional (for more information, see the Adobe PDF Specification 1.4).
+ */
+@property (nonatomic,assign) CGFloat interiorOpacity;
+/**
+ * Method to get / set the color used to fill the ornament at the ends of the line.
+ *
+ * @discussion The ornament at the end of a line is optional (for more information, see the Adobe PDF Specification 1.4).
+ */
+@property (nonatomic,retain) CPDFKitPlatformColor *interiorColor;
+
+@end

+ 38 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFLinkAnnotation.h

@@ -0,0 +1,38 @@
+//
+//  CPDFAnnotationLink.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+@class CPDFDestination;
+
+/**
+ * A CPDFLinkAnnotation object represents either a hypertext link to another location in the document (specified as a CPDFDestination object) or a URL.
+ */
+@interface CPDFLinkAnnotation : CPDFAnnotation
+
+/**
+ * Gets the destination for the link when the destination was specified as a CPDFDestination object.
+ *
+ * @discussion Destination for the link. May be nil if no destination associated with link; in this case the -[URL] may be valid.
+ */
+- (CPDFDestination *)destination;
+- (void)setDestination:(CPDFDestination *)destination;
+
+/**
+ * Gets the destination for the link when the destination was specified as a URL.
+ *
+ * @discussion URL for the link. May be nil if no URL action associated with link; in this case the -[destination] may be valid.
+ */
+- (NSString *)URL;
+- (void)setURL:(NSString *)url;
+
+@end

+ 58 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFMarkupAnnotation.h

@@ -0,0 +1,58 @@
+//
+//  CPDFAnnotationMarkup.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+typedef NS_ENUM(NSInteger, CPDFMarkupType) {
+    CPDFMarkupTypeHighlight = 0,
+    CPDFMarkupTypeStrikeOut = 1,
+    CPDFMarkupTypeUnderline = 2,
+    CPDFMarkupTypeSquiggly = 3
+};
+
+/**
+ * A CPDFMarkupAnnotation object appears as highlighting, underlining, strikethrough, or a squiggly style applied to the text of a document.
+ */
+@interface CPDFMarkupAnnotation : CPDFAnnotation
+
+/**
+ * Initializes CPDFMarkupAnnotation object.
+ *
+ * @see CPDFMarkupType
+ */
+- (instancetype)initWithDocument:(CPDFDocument *)document markupType:(CPDFMarkupType)markupType;
+
+/**
+ * Method to get / set the array of quadrilateral points defining the bounds of the markup.
+ *
+ * @discussion Array of (n * 4) NSPoints defining n quadrilaterals in page space where n is the number of quad points.
+ * The points for each quad are ordered in a 'Z' pattern. That is, the first point should represent the upper left point representing the start of the marked-up text,
+ * the next point will be the upper right, the third point will represent the lower left of the text and the last point the lower right.
+ * Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+@property (nonatomic,retain) NSArray *quadrilateralPoints;
+
+/**
+ * Gets the markup style.
+ *
+ * @see CPDFMarkupType
+ */
+- (CPDFMarkupType)markupType;
+
+- (NSString *)markupText;
+- (void)setMarkupText:(NSString *)text;
+
+- (BOOL)popup;
+- (void)createPopup;
+- (void)removePopup;
+
+@end

+ 22 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFMovieAnnotation.h

@@ -0,0 +1,22 @@
+//
+//  CPDFMovieAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+/**
+ * A CPDFMovieAnnotation object contains animated graphics and sound to be presented on the computer screen and through the speakers.
+ */
+@interface CPDFMovieAnnotation : CPDFAnnotation
+
+- (NSString *)mediaPath;
+
+@end

+ 42 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFNamedAction.h

@@ -0,0 +1,42 @@
+//
+//  CPDFNamedAction.h
+//  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 <ComPDFKit/CPDFAction.h>
+
+typedef NS_ENUM(NSInteger, CPDFNamedActionName) {
+    CPDFNamedActionNone = 0,
+    CPDFNamedActionNextPage = 1,
+    CPDFNamedActionPreviousPage = 2,
+    CPDFNamedActionFirstPage = 3,
+    CPDFNamedActionLastPage = 4,
+    CPDFNamedActionPrint = 5
+};
+
+/**
+ * CPDFNamedAction defines methods used to work with actions in PDF documents, some of which are named in the Adobe PDF Specification.
+ *
+ * @discussion A CPDFNamedAction object represents an action with a defined name.
+ */
+@interface CPDFNamedAction : CPDFAction
+
+- (instancetype)initWithName:(CPDFNamedActionName)name NS_DESIGNATED_INITIALIZER;
+
+#pragma mark - Accessors
+
+/**
+ * Returns the name of the named action.
+ *
+ * @see CPDFNamedActionName
+ */
+- (CPDFNamedActionName)name;
+
+@end

+ 104 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFOutline.h

@@ -0,0 +1,104 @@
+//
+//  CPDFOutline.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+@class CPDFDocument, CPDFDestination, CPDFAction;
+
+/**
+ * A CPDFOutline object is an element in a tree-structured hierarchy that can represent the structure of a PDF document.
+ *
+ * @discussion An outline is an optional component of a PDF document, useful for viewing the structure of the document and for navigating within it.
+ * Outlines are created by the document’s author. If you represent a PDF document outline using outline objects, the root of the hierarchy is obtained from the PDF document itself.
+ * This root outline is not visible and serves merely as a container for the visible outlines.
+ */
+@interface CPDFOutline : NSObject
+
+#pragma mark - Accessors
+
+/**
+ * Returns the document with which the outline is associated.
+ */
+@property (nonatomic,readonly) CPDFDocument *document;
+
+/**
+ * Returns the parent outline object of the outline (returns NULL if called on the root outline object).
+ */
+@property (nonatomic,readonly) CPDFOutline *parent;
+
+/**
+ * Returns the number of child outline objects in the outline.
+ */
+@property (nonatomic,readonly) NSUInteger numberOfChildren;
+
+/**
+ * Returns the index of the outline item, relative to its siblings (and from the perspective of the parent).
+ *
+ * @discussion The root outline item (or any item with no parent) is always index 0.
+ */
+@property (nonatomic,readonly) NSUInteger index;
+
+/**
+ * Method to get / set the label for the outline.
+ *
+ * @discussion The root outline serves only as a container for the outlines it owns; it does not have a label.
+ */
+@property (nonatomic,retain) NSString *label;
+
+/**
+ * Method to get / set the destination associated with the outline.
+ *
+ * @discussion The root outline serves only as a container for the outlines it owns; it does not have a destination.
+ * Note that a CPDFOutline object can have either a destination or an action, not both.
+ * This method may return NULL if the outline has an associated action instead of a destination.
+ * Note that if the associated action is a CPDFGoToAction, this method returns the destination from the CPDFGoToAction object.
+ * However, it is better to use the action method for this purpose.
+ */
+@property (nonatomic,retain) CPDFDestination *destination;
+
+/**
+ * Method to get / set the action performed when users click the outline.
+ *
+ * @discussion The root outline serves only as a container for the outlines it owns; it does not have an action.
+ * Note that a CPDFOutline object can have either an action or a destination, not both.
+ * If the CPDFOutline object has a destination, instead of an action, action returns a CPDFGoToAction object (this is equivalent to calling destination on the CPDFOutline object).
+ * For other action types, action returns the appropriate PDF Kit action type object, such as CPDFURLAction.
+ */
+@property (nonatomic,retain) CPDFAction *action;
+
+/**
+ * Returns the child outline object at the specified index.
+ *
+ * @discussion The index is zero-based. This method throws an exception if index is out of range.
+ * A PDFOutline object retains all its children, so childAtIndex: returns the same retained child outline object every time it’s called.
+ * This means that you do not need to retain the object returned by childAtIndex:.
+ */
+- (CPDFOutline *)childAtIndex:(NSUInteger)index;
+
+/**
+ * Create a outline object and inserts the outline object at the specified index.
+ *
+ * @discussion To build a PDF outline hierarchy, use this method to add child outline objects.
+ */
+- (CPDFOutline *)insertChildAtIndex:(NSUInteger)index;
+
+/**
+ * @discussion When moving items around within an outline hierarchy, you should retain the item and call -[removeFromParent] first.
+ */
+- (void)insertChild:(CPDFOutline *)child atIndex:(NSUInteger)index;
+
+/**
+ * Removes the outline object from its parent.
+ */
+- (void)removeFromParent;
+
+@end

+ 58 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFPage+Protected.h

@@ -0,0 +1,58 @@
+//
+//  CPDFPage+Protected.h
+//  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 <ComPDFKit/CPDFPage.h>
+
+@interface CPDFPage (Protected)
+
+extern NSNotificationName const CPDFPageEditingDidChangedNotification;
+
+- (NSUInteger)pageIndex;
+
+- (NSInteger)getHierarchyIndexWithAnnotation:(CPDFAnnotation *)annotation;
+
+- (BOOL)moveHierarchyWithAnnotation:(CPDFAnnotation *)annotation atIndex:(NSInteger)index;
+
+- (BOOL)addStringBounds:(CGRect)rect withString:(NSString *)string withAttributes:(NSDictionary<NSAttributedStringKey, id> *)attributes DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+- (BOOL)isImagePage;
+
+#pragma mark - Rendering
+
+- (void)transformContext:(CGContextRef)context forBox:(CPDFDisplayBox)box;
+
+- (void)drawWithBox:(CPDFDisplayBox)box toContext:(CGContextRef)context;
+
+- (void)drawEditWithBox:(CPDFDisplayBox)box toContext:(CGContextRef)context;
+
+#pragma mark - Selections
+
+// Given a rect in page-space, returns a selection representing enclosed text on page.
+- (CPDFSelection *)selectionForRect:(CGRect)rect;
+
+// Given a point in page-space, returns a selection representing a whole word at that point. May return NULL if no
+// character (and by extension no word) under point. If data dectors are enabled (-[PDFView enableDataDetectors]),
+// this return the smart-selection for the content at the given point.
+- (CPDFSelection *)selectionForWordAtPoint:(CGPoint)point;
+
+// Given a point in page-space, returns a selection representing a whole line at that point. May return NULL if no
+// character (and by extension no line) under point.
+- (CPDFSelection *)selectionForLineAtPoint:(CGPoint)point;
+
+// Returns a selection representing text between startPt and endPt. Points are sorted first top to bottom, left to right.
+- (CPDFSelection *)selectionFromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint;
+
+#pragma mark - Redact
+
+- (BOOL)erasureRedactFromRect:(CGRect)rect DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+@end

+ 201 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFPage.h

@@ -0,0 +1,201 @@
+//
+//  CPDFPage.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+/**
+ * The following box types may be used with CPDFPage drawing and bounds-setting methods.
+ * See the Adobe PDF Specification for more information on box types, units, and coordinate systems.
+ */
+typedef NS_ENUM(NSInteger, CPDFDisplayBox) {
+    /** A rectangle defining the boundaries of the physical medium for display or printing, expressed in default user-space units. */
+    CPDFDisplayMediaBox = 0,
+    /** A rectangle defining the boundaries of the visible region , expressed in default user-space units. Default value equal to CPDFDisplayMediaBox. */
+    CPDFDisplayCropBox = 1,
+    /** A rectangle defining the boundaries of the clip region for the page contents in a production environment. Default value equal to CPDFDisplayCropBox. */
+    CPDFDisplayBleedBox = 2,
+    /** A rectangle defining the intended boundaries of the finished page. Default value equal to CPDFDisplayCropBox. */
+    CPDFDisplayTrimBox = 3,
+    /** A rectangle defining the boundaries of the page’s meaningful content including surrounding white space intended for display. Default value equal to CPDFDisplayCropBox. */
+    CPDFDisplayArtBox = 4
+};
+
+extern NSNotificationName const CPDFPageDidLoadAnnotationNotification;
+extern NSNotificationName const CPDFPageDidAddAnnotationNotification;
+extern NSNotificationName const CPDFPageDidRemoveAnnotationNotification;
+
+@class CPDFDocument, CPDFAnnotation, CPDFSelection;
+
+/**
+ * CPDFPage, a subclass of NSObject, defines methods used to render PDF pages and work with annotations, text, and selections.
+ *
+ * @discussion CPDFPage is a logical representation of a PDF document's page. Your application instantiates a CPDFPage object by asking for one from a CPDFDocument object.
+ * For simple display and navigation of PDF documents within your application, you don’t need to use CPDFPage. You need only use CPDFView.
+ */
+@interface CPDFPage : NSObject
+
+#pragma mark - Accessors
+
+/**
+ * Returns the CPDFDocument object with which the page is associated.
+ */
+@property (nonatomic,readonly) CPDFDocument *document;
+
+/**
+ * Returns the label for the page.
+ *
+ * @discussion Typically, the label is “1” for the first page, “2” for the second page, and so on, but nonnumerical labels are also possible (such as “xxi”, “4-1” and so on).
+ */
+@property (nonatomic,readonly) NSString *label;
+
+/**
+ * Returns the bounds for the specified PDF display box.
+ *
+ * @see CPDFDisplayBox
+ */
+- (CGRect)boundsForBox:(CPDFDisplayBox)box;
+
+/**
+ * Sets the bounds for the specified box.
+ *
+ * @discussion If the box does not exist, this method creates it for you.
+ * @see CPDFDisplayBox
+ */
+- (void)setBounds:(CGRect)bounds forBox:(CPDFDisplayBox)box;
+
+/**
+ * Sets the rotation angle for the page in degrees.
+ *
+ * @discussion Rotation on a page. Must be 0, 90, 180 or 270 (negative rotations will be "normalized" to one of 0, 90, 180 or 270).
+ * Some PDF's have an inherent rotation and so -[rotation] may be non-zero when a PDF is first opened.
+ */
+@property (nonatomic,assign) NSInteger rotation;
+
+@property (nonatomic,readonly) CGRect bounds;
+
+/**
+ * Returns the size of page after rotation.
+ */
+@property (nonatomic,readonly) CGSize size;
+
+#pragma mark - Annotations
+
+/**
+ * Returns an array containing the page’s annotations.
+ *
+ * @discussion The elements of the array will most likely be typed to subclasses of the CPDFAnnotation class.
+ */
+@property (nonatomic,readonly) NSArray<CPDFAnnotation *> *annotations;
+
+/**
+ * Adds the specified annotation object to the page.
+ */
+- (void)addAnnotation:(CPDFAnnotation *)annotation;
+/**
+ * Removes the specified annotation from the page.
+ */
+- (void)removeAnnotation:(CPDFAnnotation *)annotation;
+/**
+ * Removes all annotations from the page.
+ */
+- (void)removeAllAnnotations;
+
+/**
+ * Returns the annotation, if there is one, at the specified point.
+ *
+ * @discussion Use this method for hit-testing based on the current cursor position. If more than one annotation shares the specified point,
+ * the frontmost (or topmost) one is returned (the annotations are searched in reverse order of their appearance in the PDF data file). Returns NULL if there is no annotation at point.
+ * Specify the point in page space. Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+- (CPDFAnnotation *)annotationAtPoint:(CGPoint)point;
+- (BOOL)annotation:(CPDFAnnotation *)annotation atPoint:(CGPoint)point;
+
+#pragma mark - Conversion
+
+/**
+ * This transform correctly rotates and offsets based on the given page's rotation property.
+ */
+- (CGAffineTransform)transform;
+
+#pragma mark - Rendering
+
+/**
+ * Convenience function that returns an image of this page, with annotations.
+ */
+- (CPDFKitPlatformImage *)thumbnailOfSize:(CGSize)size;
+
+#pragma mark - Text
+
+/**
+ * Returns the number of characters on the page, including whitespace characters.
+ *
+ * @discussion Number of characters on the page (including linefeeds and spaces inserted).
+ */
+@property (nonatomic,readonly) NSUInteger numberOfCharacters;
+
+/**
+ * Returns the bounds, in page space, of the character at the specified index.
+ *
+ * @discussion In the unlikely event that there is more than one character at the specified index point, only the bounds of the first character is returned.
+ * Page space is a coordinate system with the origin at the lower-left corner of the current page. Note that the bounds returned are not guaranteed to have integer coordinates.
+ */
+- (CGRect)characterBoundsAtIndex:(NSInteger)index;
+
+/**
+ * Returns the character index value for the specified point in page space.
+ *
+ * @discussion Returns the index of the first character if multiple characters are at this point. If there is no character at the specified point, the method returns -1.
+ * Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+- (NSInteger)characterIndexAtPoint:(CGPoint)point;
+
+/**
+ * Returns an NSString object representing the text on the page.
+ *
+ * @discussion String (with linefeeds and in some cases spaces inserted) representing the text on the page.
+ */
+@property (nonatomic,readonly) NSString *string;
+
+/**
+ * Returns the text enclosed within the specified rectangle, expressed in page coordinates.
+ *
+ * @discussion Given a rect in page-space, returns a selection representing enclosed text on page.
+ */
+- (NSString *)stringForRect:(CGRect)rect;
+
+/**
+ * Returns the text enclosed within the specified range.
+ */
+- (NSString *)stringForRange:(NSRange)range;
+
+/**
+ * Returns the text enclosed within the specified range.
+ */
+- (NSString *)stringForLocation:(NSUInteger)location length:(NSUInteger)length;
+
+#pragma mark - Selections
+
+/**
+ * Returns the text contained within the specified range.
+ *
+ * @discussion Given a range, returns a selection representing text within that range. Will clamp any range that goes out of bounds. Will return NULL for an empty selection.
+ */
+- (CPDFSelection *)selectionForRange:(NSRange)range;
+
+#pragma mark - Redact
+
+/**
+ * Applies redaction annotations in the page.
+ */
+- (void)applyRedactions;
+
+@end

+ 90 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFRedactAnnotation.h

@@ -0,0 +1,90 @@
+//
+//  CPDFRedactAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+/**
+ * Redaction annotations are used to remove content from a document.
+ */
+@interface CPDFRedactAnnotation : CPDFAnnotation
+
+@property(nonatomic,assign) BOOL drawRedactionsAsRedacted;
+
+/**
+ * Gets the areas that should be covered by the redaction annotation.
+ */
+- (NSArray *)quadrilateralPoints;
+/**
+ * Uses the quadrilateral points property to set the areas that should be covered by the redaction annotation.
+ */
+- (void)setQuadrilateralPoints:(NSArray *)points;
+
+/**
+ * Gets the fill color displayed in the specified area after applying the redaction. The color is drawn on the specified rect. Defaults to black.
+ */
+- (CPDFKitPlatformColor *)interiorColor;
+/**
+ * Sets the fill color displayed in the specified area after applying the redaction. The color is drawn on the specified rect. Defaults to black.
+ */
+- (void)setInteriorColor:(CPDFKitPlatformColor *)color;
+
+/**
+ * Gets the color used for the redaction’s border in its marked state. Defaults to red.
+ */
+- (CPDFKitPlatformColor *)borderColor;
+/**
+ * Sets the color used for the redaction’s border in its marked state. Defaults to red.
+ */
+- (void)setBorderColor:(CPDFKitPlatformColor *)color;
+
+/**
+ * Gets the text font displayed in the specified area after applying the redaction.
+ */
+- (CPDFKitPlatformFont *)font;
+/**
+ * Sets the text font displayed in the specified area after applying the redaction.
+ */
+- (void)setFont:(CPDFKitPlatformFont *)font;
+
+/**
+ * Gets the text color displayed in the specified area after applying the redaction.
+ */
+- (CPDFKitPlatformColor *)fontColor;
+/**
+ * Sets the text color displayed in the specified area after applying the redaction.
+ */
+- (void)setFontColor:(CPDFKitPlatformColor *)fontColor;
+
+/**
+ * Gets the text alignment displayed in the specified area after applying the redaction.
+ */
+- (NSTextAlignment)alignment;
+/**
+ * Sets the text alignment displayed in the specified area after applying the redaction.
+ */
+- (void)setAlignment:(NSTextAlignment)alignment;
+
+/**
+ * Gets the text displayed in the specified area after applying the redaction.
+ */
+- (NSString *)overlayText;
+/**
+ * Sets the text displayed in the specified area after applying the redaction.
+ */
+- (void)setOverlayText:(NSString *)text;
+
+/**
+ * Applies redaction annotation.
+ */
+- (void)applyRedaction;
+
+@end

+ 22 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFResetFormAction.h

@@ -0,0 +1,22 @@
+//
+//  CPDFResetFormAction.h
+//  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 <ComPDFKit/CPDFAction.h>
+
+/**
+ * CPDFResetFormAction, a subclass of CPDFAction, defines methods for getting and clearing fields in a PDF form.
+ *
+ * @discussion A CPDFResetFormAction object represents an action associated with a PDF form.
+ */
+@interface CPDFResetFormAction : CPDFAction
+
+@end

+ 44 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSelection+Protected.h

@@ -0,0 +1,44 @@
+//
+//  CPDFSelection+Protected.h
+//  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 <ComPDFKit/CPDFSelection.h>
+
+typedef NS_ENUM(NSInteger, CPDFSelectionType) {
+    CPDFSelectionTypeText = 0,
+    CPDFSelectionTypeImage ,
+};
+
+@interface CPDFSelection (Protected)
+
+- (NSArray<CPDFPage *> *)pages;
+
+- (CPDFKitPlatformColor *)color;
+- (void)setColor:(CPDFKitPlatformColor *)color;
+
+- (NSAttributedString *)attributedString;
+
+- (CGRect)boundsForPage:(CPDFPage *)page;
+
+- (NSUInteger)numberOfTextRangesOnPage:(CPDFPage *)page;
+- (NSRange)rangeAtIndex:(NSUInteger)index onPage:(CPDFPage *)page;
+
+- (void)addSelection:(CPDFSelection *)selection;
+- (void)addSelections:(NSArray<CPDFSelection *> *)selections;
+
+- (void)extendSelectionAtEnd:(NSInteger)succeed;
+- (void)extendSelectionAtStart:(NSInteger)precede;
+
+- (CPDFSelectionType)selectionType;
+
+- (void)setSelectionType:(CPDFSelectionType)selectionType;
+
+@end

+ 56 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSelection.h

@@ -0,0 +1,56 @@
+//
+//  CPDFSelection.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+@class CPDFPage;
+
+/**
+ * A CPDFSelection object identifies a contiguous or noncontiguous selection of text in a PDF document.
+ */
+@interface CPDFSelection : NSObject
+
+- (instancetype)initWithPage:(CPDFPage *)page rect:(CGRect)rect;
+
+#pragma mark - Accessors
+
+/**
+ * Returns the page where the selection is located.
+ */
+@property (nonatomic,readonly) CPDFPage *page;
+
+/**
+ * Returns the bounds of the selection on the page.
+ *
+ * @discussion The selection rectangle is given in page space. Page space is a coordinate system with the origin at the lower-left corner of the current page.
+ */
+@property (nonatomic,readonly) CGRect bounds;
+
+/**
+ * Returns a range of contiguous text on the page.
+ */
+@property (nonatomic,readonly) NSRange range;
+
+/**
+ * Returns an array of selections, one for each line of text covered by the receiver.
+ *
+ * @discussion If you call this method on a CPDFSelection object that represents a paragraph, for example,
+ * selectionsByLine returns an array that contains one CPDFSelection object for each line of text in the paragraph.
+ */
+@property (nonatomic,readonly) NSArray<CPDFSelection *> *selectionsByLine;
+
+/**
+ * Returns an NSString object representing the text contained in the selection (may contain linefeed characters).
+ */
+- (NSString *)string;
+
+@end

+ 181 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignature.h

@@ -0,0 +1,181 @@
+//
+//  CPDFSignature.h
+//  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 <ComPDFKit/CPDFKitPlatform.h>
+
+@class CPDFDocument;
+
+typedef NS_ENUM(NSInteger, CPDFSignatureOCSPStatus) {
+    CPDFSignatureOCSPStatusNone = -2,
+    CPDFSignatureOCSPStatusFail = -1,
+    CPDFSignatureOCSPStatusGood = 0,
+    CPDFSignatureOCSPStatusRevoked = 1
+};
+
+typedef NS_ENUM(NSInteger, CPDFModifyType) {
+    CPDFModifyNone = 0,
+    CPDFModifyAddPage,
+    CPDFModifyDeletePage,
+    CPDFModifyPage,
+    CPDFModifyAddAnnotation,
+    CPDFModifyDeleteAnnotation,
+    CPDFModifyAnnotation,
+    CPDFModifyFillForm,
+    CPDFModifyRootIncrease,
+    CPDFModifyDocument
+};
+
+@interface CPDFModifyInfo : NSObject
+
+@property (nonatomic,readonly) CPDFModifyType type;
+
+@property (nonatomic,readonly) NSInteger pageIndex;
+
+@property (nonatomic,readonly) NSInteger annotationType;
+
+@property (nonatomic,readonly) NSInteger formType;
+
+@property (nonatomic,readonly) NSString *info;
+
+@end
+
+@interface CPDFSignatureCertificate : NSObject
+
+// Version 版本
+@property (nonatomic,readonly) NSString *version;
+
+// Signature algorithm 签名算法
+@property (nonatomic,readonly) NSString *signatureAlgorithmOID;
+@property (nonatomic,readonly) NSString *signatureAlgorithmType;
+
+// Subject 主题
+@property (nonatomic,readonly) NSString *subject;
+
+// C(国家),ST(省),L(地区),O(组织),OU(单位),CN(通用名)
+@property (nonatomic,readonly) NSDictionary *subjectDict;
+
+// Issuer 颁发者
+@property (nonatomic,readonly) NSString *issuer;
+
+// C(国家),ST(省),L(地区),O(组织),OU(单位),CN(通用名)
+@property (nonatomic,readonly) NSDictionary *issuerDict;
+
+// Serial number 序列号
+@property (nonatomic,readonly) NSString *serialNumber;
+
+// Validity starts 有效起始日期
+@property (nonatomic,readonly) NSDate *validityStarts;
+
+// Validity ends 有效截止日期
+@property (nonatomic,readonly) NSDate *validityEnds;
+
+// Authority info access 颁发机构信息访问
+@property (nonatomic,readonly) NSArray<NSDictionary *> *authorityInfoAccess;
+
+// Subject key identifier 主题密钥标识符
+@property (nonatomic,readonly) NSString *subjectKeyIdentifier;
+
+// Key usage 密钥用法
+@property (nonatomic,readonly) NSString *keyUsage;
+
+// Certificate policies 证书策略
+@property (nonatomic,readonly) NSString *certificatePolicies;
+
+// Authority key identifier 颁发结构密钥标识符
+@property (nonatomic,readonly) NSString *authorityKeyIdentifier;
+
+// CRL distribution points CRL分发点
+@property (nonatomic,readonly) NSArray<NSString *> *CRLDistributionPoints;
+
+// Basic constraints 基本限制
+@property (nonatomic,readonly) NSString *basicConstraints;
+
+// Public key 公钥
+@property (nonatomic,readonly) NSString *publicKey;
+
+// X.509 data X.509数据
+@property (nonatomic,readonly) NSString *X509Data;
+
+// SHA1 digest SHA1摘要
+@property (nonatomic,readonly) NSString *SHA1Digest;
+
+// MD5 digest MD5摘要
+@property (nonatomic,readonly) NSString *MD5Digest;
+
+@property (nonatomic,readonly) NSString *ocspURL;
+
+@property (nonatomic,readonly) CPDFSignatureOCSPStatus ocspStatus;
+
+@property (nonatomic,readonly) BOOL isTrusted;
+
+- (void)verifyOCSPWithCompletionHandler:(void (^)(BOOL result, CPDFSignatureOCSPStatus ocspStatus))handler;
+
+- (BOOL)exportToFilePath:(NSString *)filePath;
+
+- (BOOL)addToTrustedCertificates;
+
++ (CPDFSignatureCertificate *)certificateWithPKCS12Path:(NSString *)path password:(NSString *)password;
+
+@end
+
+@interface CPDFSigner : NSObject
+
+@property (nonatomic,readonly) BOOL isSignVerified;
+
+@property (nonatomic,readonly) BOOL isCertTrusted;
+
+@property (nonatomic,readonly) NSString *name;
+
+@property (nonatomic,readonly) NSDate *date;
+
+@property (nonatomic,readonly) NSArray<CPDFSignatureCertificate*> *certificates;
+
+@property (nonatomic,readonly) NSArray<CPDFSigner*> *timestampSigners;
+
+- (void)checkCertificateIsTrusted;
+
+@end
+
+@interface CPDFSignature : NSObject
+
+@property (nonatomic,readonly) NSArray<CPDFSigner *> *signers;
+
+@property (nonatomic,readonly) NSArray<CPDFModifyInfo *> *modifyInfos;
+
+@property (nonatomic,readonly) NSUInteger pageIndex;
+
+@property (nonatomic,readonly) NSString *fieldName;
+
+@property (nonatomic,readonly) CGRect bounds;
+
+/**
+ * The access permissions granted for this document.
+ *
+ * @discussion Valid values shall be:
+ * 1 : No changes to the document shall be permitted; any change to the document shall invalidate the signature.
+ * 2 : Permitted changes shall be filling in forms, instantiating page templates, and signing; other changes shall invalidate the signature.
+ * 3 : Permitted changes shall be the same as for 2, as well as annotation creation, deletion, and modification; other changes shall invalidate the signature.
+ */
+@property (nonatomic,readonly) NSInteger permissions;
+
+- (void)verifySignatureWithDocument:(CPDFDocument *)document;
+
+/**
+ * 生成P12证书
+ *
+ * @param info C(国家),ST(省),L(地区),O(组织),OU(单位),CN(通用名),emailaddress(邮箱)
+ * @param password 密码
+ * @param path 保存路径
+ */
++ (BOOL)generatePKCS12CertWithInfo:(NSDictionary *)info password:(NSString *)password toPath:(NSString *)path;
+
+@end

+ 19 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureAnnotation+Protected.h

@@ -0,0 +1,19 @@
+//
+//  CPDFSignatureAnnotation+Protected.h
+//  ComPDFKit
+//
+//  Copyright © 2014-2022 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/ComPDFKit.h>
+
+@interface CPDFSignatureAnnotation (Protected)
+
+@property (nonatomic,readonly) CPDFKitPlatformImage *signImage DEPRECATED_MSG_ATTRIBUTE("The api is currently in beta and Untested");
+
+@end

+ 21 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureAnnotation.h

@@ -0,0 +1,21 @@
+//
+//  CPDFSignatureAnnotation.h
+//  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 <ComPDFKit/CPDFAnnotation.h>
+
+@interface CPDFSignatureAnnotation : CPDFAnnotation
+
+- (void)setImage:(CPDFKitPlatformImage *)image;
+
+- (void)signature;
+
+@end

+ 50 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureWidgetAnnotation+Signature.h

@@ -0,0 +1,50 @@
+//
+//  CPDFSignatureWidgetAnnotation+Signature.h
+//  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 <ComPDFKit/CPDFSignatureWidgetAnnotation.h>
+
+@class CPDFSignature;
+
+@interface CPDFSignatureConfigItem : NSObject
+
+@property (nonatomic,copy) NSString *key;
+@property (nonatomic,copy) NSString *value;
+
+@end
+
+@interface CPDFSignatureConfig : NSObject
+
+@property (nonatomic,retain) NSArray<CPDFSignatureConfigItem *> *contents;
+
+@property (nonatomic,assign) BOOL isDrawKey;
+@property (nonatomic,assign) BOOL isDrawLogo;
+@property (nonatomic,assign) BOOL isDrawOnlyContent;
+@property (nonatomic,assign) BOOL isContentAlginLeft;
+
+@property (nonatomic,copy) NSString *text;
+@property (nonatomic,retain) CPDFKitPlatformImage *image;
+@property (nonatomic,retain) CPDFKitPlatformImage *logo;
+
+@property (nonatomic,retain) CPDFKitPlatformColor *contentsColor;
+@property (nonatomic,retain) CPDFKitPlatformColor *textColor;
+
+@end
+
+@interface CPDFSignatureWidgetAnnotation (Signature)
+
+- (CPDFSignature *)signature;
+
+- (void)removeSignature;
+
+- (void)signWithSignatureConfig:(CPDFSignatureConfig *)config;
+
+@end

+ 0 - 0
ios/ComPDFKit.xcframework/ios-arm64_armv7/ComPDFKit.framework/Headers/CPDFSignatureWidgetAnnotation.h


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