ComPDFKitRN.swift 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import UIKit
  2. import Foundation
  3. import ComPDFKit
  4. import ComPDFKit_Tools
  5. @objc(ComPDFKit)
  6. class ComPDFKit: NSObject, CPDFViewBaseControllerDelete{
  7. @objc(getVersionCode:withRejecter:)
  8. func getVersionCode(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
  9. resolve(String(CPDFKit.sharedInstance().versionNumber))
  10. }
  11. @objc(getSDKBuildTag:withRejecter:)
  12. func getSDKBuildTag(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) -> Void {
  13. let sdkBuildTag = CPDFKit.sharedInstance().versionString
  14. resolve(sdkBuildTag)
  15. }
  16. @objc(init_: withResolver: withRejecter:)
  17. func init_(license : String,resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock){
  18. DispatchQueue.main.async {
  19. var code = CPDFKit.verify(withKey: license)
  20. print("ComPDFKitRN-iOS init_:\(code)")
  21. resolve(code == CPDFKitLicenseCode.success)
  22. }
  23. }
  24. @objc(initialize: iosOnlineLicense: withResolver: withRejecter:)
  25. func initialize(_ androidOnlineLicense: String, iosOnlineLicense: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
  26. DispatchQueue.main.async {
  27. CPDFKit.verify(withOnlineLicense: iosOnlineLicense) { code, message in
  28. print("ComPDFKitRN-iOS initialize: \(code), Message:\(String(describing: message))")
  29. resolve(code == CPDFKitOnlineLicenseCode.success)
  30. }
  31. }
  32. }
  33. @objc(openDocument: password: configurationJson:)
  34. func openDocument(document : URL, password: String, configurationJson : String) -> Void {
  35. DispatchQueue.main.async {
  36. let rootNav = ComPDFKit.presentedViewController()
  37. let jsonDataParse = CPDFJSONDataParse(String: configurationJson)
  38. guard let configuration = jsonDataParse.configuration else { return }
  39. let pdfViewController = CPDFViewController(filePath: document.path, password: password, configuration: configuration)
  40. pdfViewController.delegate = self
  41. let nav = CNavigationController(rootViewController: pdfViewController)
  42. nav.modalPresentationStyle = .fullScreen
  43. rootNav?.present(nav, animated: true)
  44. }
  45. }
  46. func PDFViewBaseControllerDissmiss(_ baseControllerDelete: CPDFViewBaseController) {
  47. baseControllerDelete.dismiss(animated: true)
  48. }
  49. class func presentedViewController() -> UIViewController? {
  50. var rootViewController: UIViewController? = nil
  51. if let appDelegate = UIApplication.shared.delegate as? NSObject {
  52. if appDelegate.responds(to: Selector(("viewController"))) {
  53. rootViewController = appDelegate.value(forKey: "viewController") as? UIViewController
  54. }
  55. }
  56. if rootViewController == nil, let appDelegate = UIApplication.shared.delegate as? NSObject, appDelegate.responds(to: #selector(getter: UIApplicationDelegate.window)) {
  57. if let window = appDelegate.value(forKey: "window") as? UIWindow {
  58. rootViewController = window.rootViewController
  59. }
  60. }
  61. if rootViewController == nil {
  62. if let window = UIApplication.shared.keyWindow {
  63. rootViewController = window.rootViewController
  64. }
  65. }
  66. guard let finalRootViewController = rootViewController else {
  67. return nil
  68. }
  69. var currentViewController = finalRootViewController
  70. while let presentedViewController = currentViewController.presentedViewController {
  71. if !(presentedViewController is UIAlertController) && currentViewController.modalPresentationStyle != .popover {
  72. currentViewController = presentedViewController
  73. } else {
  74. return currentViewController
  75. }
  76. }
  77. return currentViewController
  78. }
  79. }