|
@@ -0,0 +1,115 @@
|
|
|
+//
|
|
|
+// CPDFDocumentPlugin.swift
|
|
|
+// compdfkit_flutter
|
|
|
+//
|
|
|
+// Created by Xiaolong Liu on 2024/7/19.
|
|
|
+//
|
|
|
+
|
|
|
+import Foundation
|
|
|
+import ComPDFKit
|
|
|
+import Flutter
|
|
|
+import ComPDFKit_Tools
|
|
|
+
|
|
|
+public class CPDFDocumentPlugin {
|
|
|
+
|
|
|
+ private var document : CPDFDocument?
|
|
|
+
|
|
|
+ private var _methodChannel : FlutterMethodChannel
|
|
|
+
|
|
|
+ private var pdfViewController : CPDFViewController?
|
|
|
+
|
|
|
+
|
|
|
+ init(uid : String, binaryMessager : FlutterBinaryMessenger) {
|
|
|
+ _methodChannel = FlutterMethodChannel(name: "com.compdfkit.flutter.document_\(uid)", binaryMessenger: binaryMessager)
|
|
|
+ registeryMethodChannel()
|
|
|
+ }
|
|
|
+
|
|
|
+ init(pdfViewController : CPDFViewController, uid : String, binaryMessager : FlutterBinaryMessenger){
|
|
|
+ self.pdfViewController = pdfViewController
|
|
|
+ _methodChannel = FlutterMethodChannel(name: "com.compdfkit.flutter.document_\(uid)", binaryMessenger: binaryMessager)
|
|
|
+ registeryMethodChannel()
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private func registeryMethodChannel(){
|
|
|
+
|
|
|
+ _methodChannel.setMethodCallHandler({
|
|
|
+ (call: FlutterMethodCall, result: FlutterResult) -> Void in
|
|
|
+ print("ComPDFKit-Flutter: iOS-MethodChannel: CPDFDocumentPlugin [method:\(call.method)]")
|
|
|
+ if(self.document == nil && self.pdfViewController != nil){
|
|
|
+ guard let pdfListView = self.pdfViewController?.pdfListView else {
|
|
|
+ print("pdfViewController error")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ self.document = pdfListView.document
|
|
|
+ }
|
|
|
+ switch call.method {
|
|
|
+ case "open_document":
|
|
|
+ // TODO: 这里要再打开文档
|
|
|
+ let initInfo = call.arguments as? [String: Any]
|
|
|
+ let path = initInfo?["filePath"] as? String ?? ""
|
|
|
+ let password = initInfo?["password"] ?? ""
|
|
|
+
|
|
|
+ self.document = CPDFDocument(url: URL(fileURLWithPath: path))
|
|
|
+ if(self.document?.isLocked == true){
|
|
|
+ self.document?.unlock(withPassword: password as? String ?? "")
|
|
|
+ }
|
|
|
+ result(2)
|
|
|
+ case "get_file_name":
|
|
|
+
|
|
|
+ if(self.document == nil){
|
|
|
+ print("self.document is nil")
|
|
|
+ result("is nil")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // TODO: 这里返回文档名称
|
|
|
+ result("文档名称")
|
|
|
+ case "is_encrypted":
|
|
|
+ // TODO: 返回文档是否加密了,true:加密, false:未加密
|
|
|
+ result(false)
|
|
|
+ case "is_image_doc":
|
|
|
+ // TODO: 是否为图片文档, true:是图片文档, false:非图片文档
|
|
|
+ result(false)
|
|
|
+ case "get_permissions":
|
|
|
+ // TODO: 返回文档当前的权限,返回int类型。none:0, user:1, owner:2
|
|
|
+ result(0)
|
|
|
+ case "check_owner_unlocked":
|
|
|
+ // TODO: 检查所有者权限是否已经解锁. 已解锁:true, 未解锁:false
|
|
|
+ result(false)
|
|
|
+ case "check_password":
|
|
|
+ // TODO: 检查密码是否正确
|
|
|
+ let info = call.arguments as? [String: Any]
|
|
|
+ // flutter 层传过来的密码
|
|
|
+ let password = initInfo?["password"] as? String ?? ""
|
|
|
+ // 是否是权限密码
|
|
|
+ let isOwnerPassword = initInfo?["isOwnerPassword"] as Bool ?? false
|
|
|
+ // 返回密码是否正确
|
|
|
+ result(true)
|
|
|
+ case "close":
|
|
|
+ // TODO: 关闭文档,释放资源
|
|
|
+ result(true)
|
|
|
+ case "has_change":
|
|
|
+ // TODO: 返回文档是否有修改:true:有修改, false:未修改
|
|
|
+ result(false)
|
|
|
+ case "import_annotations":
|
|
|
+ // TODO: 导入注释
|
|
|
+ // 返回值:导入成功:true, 导入失败:false
|
|
|
+ result(true)
|
|
|
+ case "export_annotations":
|
|
|
+ // TODO: 导出注释
|
|
|
+ // 返回值:导出成功:导出的xfdf文件路径, 导出失败:空字符串
|
|
|
+ result("")
|
|
|
+ case "remove_all_annotations":
|
|
|
+ // TODO: 删除所有注释
|
|
|
+ // 返回值:删除成功:true, 删除失败:false
|
|
|
+ result(true)
|
|
|
+ case "get_page_count":
|
|
|
+ // TODO: 返回当前文档总页数
|
|
|
+ result(1)
|
|
|
+ default:
|
|
|
+ result(FlutterMethodNotImplemented)
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+}
|