|
@@ -31,27 +31,38 @@ class KMBaseWindowController: NSWindowController {
|
|
|
|
|
|
extension KMBaseWindowController {
|
|
|
static func checkPassword(url: URL, password: String = "", completion: @escaping ((_ success: Bool, _ resultPassword: String) -> Void)) {
|
|
|
- let document = CPDFDocument.init(url: url)
|
|
|
- if document!.isLocked {
|
|
|
- if (document?.unlock(withPassword: password)) != nil {
|
|
|
+ // 判断路径 + document
|
|
|
+ guard let document = CPDFDocument.init(url: url) else {
|
|
|
+ return completion(false, "")
|
|
|
+ }
|
|
|
+ // 判断是否为加密文档
|
|
|
+ if document.isLocked == false {
|
|
|
+ completion(true, "")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 加密文件,尝试解锁
|
|
|
+ if password.isEmpty == false {
|
|
|
+ let preStatus = document.permissionsStatus
|
|
|
+ document.unlock(withPassword: password)
|
|
|
+ if document.permissionsStatus.rawValue > preStatus.rawValue { // 解密成功
|
|
|
completion(true, password)
|
|
|
- } else {
|
|
|
- DispatchQueue.main.async {
|
|
|
- let passwordWindowController = PasswordWindowController(windowNibName: "PasswordWindowController")
|
|
|
- passwordWindowController.fileURL = url
|
|
|
- NSWindow.currentWindow().km_beginSheet(windowC: passwordWindowController)
|
|
|
- passwordWindowController.closeCallBack = { passwordString in
|
|
|
- if passwordString.count != 0 {
|
|
|
- document?.unlock(withPassword: passwordString)
|
|
|
- completion(true, passwordString)
|
|
|
- } else {
|
|
|
- completion(false, "")
|
|
|
- }
|
|
|
- }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 弹密码弹窗
|
|
|
+ Task { @MainActor in
|
|
|
+ let passwordWindowController = PasswordWindowController(windowNibName: "PasswordWindowController")
|
|
|
+ passwordWindowController.fileURL = url
|
|
|
+ NSWindow.currentWindow().km_beginSheet(windowC: passwordWindowController)
|
|
|
+ passwordWindowController.closeCallBack = { passwordString in
|
|
|
+ if passwordString.count != 0 {
|
|
|
+ document.unlock(withPassword: passwordString)
|
|
|
+ completion(true, passwordString)
|
|
|
+ } else {
|
|
|
+ completion(false, "")
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- completion(true, "")
|
|
|
}
|
|
|
}
|
|
|
}
|