123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- //
- // CPDFViewCtrlPlugin.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 CPDFViewCtrlPlugin {
-
- public var _methodChannel : FlutterMethodChannel
-
- private var pdfViewController : CPDFViewController
-
- init(viewId: Int64, binaryMessenger messenger: FlutterBinaryMessenger, controller : CPDFViewController) {
- self.pdfViewController = controller
- _methodChannel = FlutterMethodChannel.init(name: "com.compdfkit.flutter.ui.pdfviewer.\(viewId)", binaryMessenger: messenger)
- registeryMethodChannel()
- var documentPlugin = CPDFDocumentPlugin(pdfViewController: pdfViewController, uid: String(describing: viewId), binaryMessager: messenger)
- }
-
-
- private func registeryMethodChannel(){
- _methodChannel.setMethodCallHandler({
- (call: FlutterMethodCall, result: FlutterResult) -> Void in
- print("ComPDFKit-Flutter: iOS-MethodChannel: [method:\(call.method)]")
- // Handle battery messages.
- switch call.method {
- case CPDFConstants.setScale:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let scaleValue = call.arguments as! NSNumber
- pdfListView.setScaleFactor(CGFloat(truncating: scaleValue), animated: true)
- case CPDFConstants.getScale:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(1.0)
- return
- }
- result(pdfListView.scaleFactor)
- case CPDFConstants.setReadBackgroundColor:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
-
- let initInfo = call.arguments as? [String: String]
- let displayModeName = initInfo?["displayMode"] ?? "light"
- // light, dark,repia, reseda
- switch displayModeName {
- case "light":
- pdfListView.displayMode = .normal
- case "dark":
- pdfListView.displayMode = .night
- case "sepia":
- pdfListView.displayMode = .soft
- case "reseda":
- pdfListView.displayMode = .green
- default:
- pdfListView.displayMode = .normal
- }
- pdfListView.layoutDocumentView()
- case CPDFConstants.getReadBackgroundColor:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result("#FFFFFF")
- return
- }
- let dispalyMode = pdfListView.displayMode
- switch dispalyMode {
-
- case .normal:
- result("#FFFFFF")
- case .night:
- result("#000000")
- case .soft:
- result("#FFFFFF")
- case .green:
- result("#FFEFBE")
- case .custom:
- result("#CDE6D0")
- @unknown default:
- result("#FFFFFF")
- }
-
- case CPDFConstants.setFromFieldHighlight:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let highlightForm = call.arguments as! Bool
- CPDFKitConfig.sharedInstance().setEnableFormFieldHighlight(highlightForm)
- pdfListView.layoutDocumentView()
- case CPDFConstants.isFromFieldHighlight:
- result(CPDFKitConfig.sharedInstance().enableFormFieldHighlight())
- case CPDFConstants.setLinkHighlight:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let linkHighlight = call.arguments as! Bool
- CPDFKitConfig.sharedInstance().setEnableLinkFieldHighlight(linkHighlight)
- pdfListView.layoutDocumentView()
- case CPDFConstants.isLinkHighlight:
- result(CPDFKitConfig.sharedInstance().enableLinkFieldHighlight())
- case CPDFConstants.setVerticalMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let verticalMode = call.arguments as! Bool
- pdfListView.displayDirection = verticalMode ? .vertical : .horizontal
- pdfListView.layoutDocumentView()
- case CPDFConstants.isVerticalMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(true)
- return
- }
- result(pdfListView.displayDirection == .vertical)
- case CPDFConstants.setPageSpacing:
- result(FlutterError(code: "NOT_SUPPORT", message: "This method is not supported on iOS. Please use controller.setMargins(left,top,right,bottom)", details: ""))
- case CPDFConstants.setMargin:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let spacingInfo = call.arguments as! [String: NSNumber]
-
- pdfListView.pageBreakMargins = .init(
- top: CGFloat(truncating: (spacingInfo["top"] ?? 10)),
- left: CGFloat(truncating: (spacingInfo["left"] ?? 10)),
- bottom: CGFloat(truncating: (spacingInfo["bottom"] ?? 10)),
- right: CGFloat(truncating: (spacingInfo["right"] ?? 10))
- )
- pdfListView.layoutDocumentView()
- case CPDFConstants.setContinueMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let continueMode = call.arguments as! Bool
- pdfListView.displaysPageBreaks = continueMode
- pdfListView.layoutDocumentView()
- case CPDFConstants.isContinueMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(true)
- return
- }
- result(pdfListView.displaysPageBreaks)
- case CPDFConstants.setDoublePageMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let twoUp = call.arguments as! Bool
- pdfListView.displayTwoUp = twoUp
- pdfListView.displaysAsBook = false
- pdfListView.layoutDocumentView()
- case CPDFConstants.isDoublePageMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(false)
- return
- }
- result(pdfListView.displayTwoUp)
- case CPDFConstants.setCoverPageMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let coverPageMode = call.arguments as! Bool
- pdfListView.displaysAsBook = coverPageMode
- pdfListView.displayTwoUp = coverPageMode
- pdfListView.layoutDocumentView()
- case CPDFConstants.isCoverPageMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(false)
- return
- }
- result(pdfListView.displaysAsBook)
- case CPDFConstants.setCropMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let cropMode = call.arguments as! Bool
- pdfListView.displayCrop = cropMode
- pdfListView.layoutDocumentView()
- case CPDFConstants.isCropMode:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(false)
- return
- }
- result(pdfListView.displayCrop)
- case CPDFConstants.setDisplayPageIndex:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- return
- }
- let info = call.arguments as! [String: Any]
- let pageIndex = info["pageIndex"] as! NSNumber
- let animated = info["animated"] as! Bool
- pdfListView.go(toPageIndex: Int(truncating: pageIndex), animated: animated)
- case CPDFConstants.getCurrentPageIndex:
- guard let pdfListView = self.pdfViewController.pdfListView else {
- result(0)
- return
- }
- result(pdfListView.currentPageIndex)
- case CPDFConstants.set_preview_mode:
- // TODO: 设置预览模式
- let mode = call.arguments as! String
- switch mode {
- case "viewer":
- self.pdfViewController.enterViewerMode()
- case "annotations":
- self.pdfViewController.enterAnnotationMode()
- case "contentEditor":
- self.pdfViewController.enterEditMode()
- case "forms":
- self.pdfViewController.enterFormMode()
- case "signatures":
- self.pdfViewController.enterSignatureMode()
- default:
- self.pdfViewController.enterViewerMode()
- }
- case CPDFConstants.get_preview_mode:
- let state = self.pdfViewController.functionTypeState
- switch state {
- case .viewer:
- result("viewer")
- case .edit:
- result("contentEditor")
- case .annotation:
- result("annotations")
- case .form:
- result("forms")
- case .signature:
- result("signatures")
- default:
- result("viewer")
- }
- case CPDFConstants.showThumbnailView:
- let editMode = call.arguments as! Bool
-
- if editMode {
- self.pdfViewController.enterPDFPageEdit()
- } else {
- self.pdfViewController.enterThumbnail()
- }
- case CPDFConstants.showBotaView:
- self.pdfViewController.buttonItemClicked_Bota(UIButton(frame: .zero))
- case CPDFConstants.showAddWatermarkView:
- self.pdfViewController.enterPDFWatermark()
- case CPDFConstants.showSecurityView:
- self.pdfViewController.enterPDFSecurity()
- case CPDFConstants.showDisplaySettingsView:
- self.pdfViewController.enterPDFSetting()
- case CPDFConstants.enterSnipMode:
- self.pdfViewController.enterPDFSnipImageMode()
- case CPDFConstants.exitSnipMode:
- self.pdfViewController.exitPDFSnipImageMode()
- default:
- result(FlutterMethodNotImplemented)
- }
- });
-
- }
-
- }
|