CompdfkitFlutterPlugin.swift 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import Flutter
  2. import UIKit
  3. import ComPDFKit
  4. import ComPDFKit_Tools
  5. public class CompdfkitFlutterPlugin: NSObject, FlutterPlugin, CPDFViewBaseControllerDelete {
  6. public static func register(with registrar: FlutterPluginRegistrar) {
  7. let channel = FlutterMethodChannel(name: "com.compdfkit.flutter.plugin", binaryMessenger: registrar.messenger())
  8. let instance = CompdfkitFlutterPlugin()
  9. registrar.addMethodCallDelegate(instance, channel: channel)
  10. }
  11. public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
  12. switch call.method {
  13. case "sdk_version_code":
  14. result(CPDFKit.sharedInstance().versionString)
  15. case "init_sdk":
  16. let initInfo = call.arguments as? [String: Any]
  17. let key = initInfo?["key"] ?? ""
  18. CPDFKit.verify(withKey: key as? String)
  19. case "sdk_build_tag":
  20. result("iOS build tag:\(CPDFKit.sharedInstance().buildNumber)")
  21. case "openDocument":
  22. let initInfo = call.arguments as? [String: Any]
  23. let jsonString = initInfo?["configuration"] ?? ""
  24. _ = initInfo?["password"] ?? ""
  25. let path = initInfo?["document"] as? String ?? ""
  26. let jsonDataParse = CPDFJSONDataParse(String: jsonString as! String)
  27. guard let configuration = jsonDataParse.configuration else { return }
  28. if let rootViewControl = UIApplication.shared.keyWindow?.rootViewController {
  29. var tRootViewControl = rootViewControl
  30. if let presentedViewController = rootViewControl.presentedViewController {
  31. tRootViewControl = presentedViewController
  32. }
  33. let pdfViewController = CPDFViewController(filePath: path, password: nil, configuration: configuration)
  34. let navController = CNavigationController(rootViewController: pdfViewController)
  35. pdfViewController.delegate = self
  36. navController.modalPresentationStyle = .fullScreen
  37. tRootViewControl.present(navController, animated: true)
  38. }
  39. case "getTemporaryDirectory":
  40. result(self.getTemporaryDirectory())
  41. default:
  42. result(FlutterMethodNotImplemented)
  43. }
  44. }
  45. func getTemporaryDirectory() -> String {
  46. let paths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
  47. return paths.first ?? ""
  48. }
  49. // MARK: - CPDFViewBaseControllerDelete
  50. public func PDFViewBaseControllerDissmiss(_ baseControllerDelete: CPDFViewBaseController) {
  51. baseControllerDelete.dismiss(animated: true)
  52. }
  53. }