123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // CPDFViewCtrlFactory.swift
- //
- // 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 Flutter
- import UIKit
- import ComPDFKit
- import ComPDFKit_Tools
- class CPDFViewCtrlFactory: NSObject, FlutterPlatformViewFactory {
- private let messenger: FlutterBinaryMessenger
- init(messenger: FlutterBinaryMessenger) {
- self.messenger = messenger
- super.init()
- }
- func create(
- withFrame frame: CGRect,
- viewIdentifier viewId: Int64,
- arguments args: Any?
- ) -> FlutterPlatformView {
- return CPDFViewCtrlFlutter(
- frame: frame,
- viewIdentifier: viewId,
- arguments: args,
- binaryMessenger: messenger)
- }
-
- func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol {
- return FlutterStandardMessageCodec.sharedInstance()
- }
- }
- class CPDFViewCtrlFlutter: NSObject, FlutterPlatformView, CPDFViewBaseControllerDelete {
-
- private var _pdfViewController : CPDFViewController
-
- private var _navigationController : CNavigationController
-
- private var _methodChannel : FlutterMethodChannel
-
- init(
- frame: CGRect,
- viewIdentifier viewId: Int64,
- arguments args: Any?,
- binaryMessenger messenger: FlutterBinaryMessenger?
- ) {
- // 解析 文档路径、密码、配置信息
- let initInfo = args as? [String: Any]
- let jsonString = initInfo?["configuration"] ?? ""
- let password = initInfo?["password"] ?? ""
- let path = initInfo?["document"] as? String ?? ""
-
- let jsonDataParse = CPDFJSONDataParse(String: jsonString as! String)
- let configuration = jsonDataParse.configuration
-
- // 创建pdfview controller视图
- _pdfViewController = CPDFViewController(filePath: path, password: password as! String, configuration: configuration!)
-
- _navigationController = CNavigationController(rootViewController: _pdfViewController)
- _navigationController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
- _navigationController.view.frame = frame
-
- _methodChannel = FlutterMethodChannel.init(name: "com.compdfkit.flutter.ui.pdfviewer.\(viewId)", binaryMessenger: messenger!)
-
- super.init()
-
- // 设置代理,但是未生效
- _pdfViewController.delegate = self
-
- _navigationController.setViewControllers([_pdfViewController], animated: false)
-
- registeryMethodChannel(viewId: viewId, binaryMessenger: messenger!)
-
- }
- func view() -> UIView {
- return _navigationController.view
- }
-
- public func PDFViewBaseControllerDissmiss(_ baseControllerDelete: CPDFViewBaseController) {
- baseControllerDelete.dismiss(animated: true)
- }
-
- private func registeryMethodChannel(viewId: Int64, binaryMessenger messenger: FlutterBinaryMessenger){
- _methodChannel.setMethodCallHandler({
- (call: FlutterMethodCall, result: FlutterResult) -> Void in
- print("ComPDFKit-Flutter: iOS-MethodChannel: [method:\(call.method)]")
- // Handle battery messages.
- switch call.method {
- case "save":
- // save pdf
- print("ComPDFKit-Flutter: save PDF")
- result(true) // or return false
- default:
- result(FlutterMethodNotImplemented)
- }
- });
-
- }
- }
|