Browse Source

ComPDFKit(flutter) - cpdfviewcontroller 跟新

C-yangliuhua 1 year ago
parent
commit
30e3aa0cf3

+ 5 - 4
example/ios/Runner.xcodeproj/project.pbxproj

@@ -120,7 +120,6 @@
 			children = (
 				9740EEB11CF90186004384FC /* Flutter */,
 				97C146F01CF9000F007C117D /* Runner */,
-				97C146EF1CF9000F007C117D /* Products */,
 				331C8082294A63A400263BE5 /* RunnerTests */,
 				B723EF562174D67CA12B31D6 /* Pods */,
 				43C911B5A127BFF45D68032E /* Frameworks */,
@@ -134,6 +133,7 @@
 				331C8081294A63A400263BE5 /* RunnerTests.xctest */,
 			);
 			name = Products;
+			path = ..;
 			sourceTree = "<group>";
 		};
 		97C146F01CF9000F007C117D /* Runner */ = {
@@ -157,6 +157,7 @@
 				0390004A6194483F410778C7 /* Pods-Runner.debug.xcconfig */,
 				08222345EFFED3B44E12C89A /* Pods-Runner.release.xcconfig */,
 				7565B1EC4864386231F39B53 /* Pods-Runner.profile.xcconfig */,
+				97C146EF1CF9000F007C117D /* Products */,
 				763C8CB6421FB1A41BB3B197 /* Pods-RunnerTests.debug.xcconfig */,
 				705E9B6A61B6E3595DB8921A /* Pods-RunnerTests.release.xcconfig */,
 				40612903D50855E403832BCE /* Pods-RunnerTests.profile.xcconfig */,
@@ -467,7 +468,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 59AC9PMNH2;
+				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -646,7 +647,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 59AC9PMNH2;
+				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
@@ -669,7 +670,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = 59AC9PMNH2;
+				DEVELOPMENT_TEAM = 4GGQPGRTSV;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (

+ 6 - 0
example/ios/Runner/Assets.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 25 - 0
example/ios/Runner/Assets.xcassets/syasarrow.imageset/Contents.json

@@ -0,0 +1,25 @@
+{
+  "images" : [
+    {
+      "filename" : "syasarrow.pdf",
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "filename" : "syasarrowl.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  },
+  "properties" : {
+    "template-rendering-intent" : "original"
+  }
+}

+ 83 - 0
example/ios/Runner/Assets.xcassets/syasarrow.imageset/syasarrow.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+-0.707096 0.707117 0.707096 0.707117 6.693624 3.764573 cm
+0.262745 0.278431 0.301961 scn
+0.000000 4.575516 m
+-0.750000 4.575516 l
+-0.750000 3.825516 l
+0.000000 3.825516 l
+0.000000 4.575516 l
+h
+8.485153 5.325516 m
+0.000000 5.325516 l
+0.000000 3.825516 l
+8.485153 3.825516 l
+8.485153 5.325516 l
+h
+0.750000 4.575516 m
+0.750000 13.060669 l
+-0.750000 13.060669 l
+-0.750000 4.575516 l
+0.750000 4.575516 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  437
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000527 00000 n
+0000000549 00000 n
+0000000722 00000 n
+0000000796 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+855
+%%EOF

+ 83 - 0
example/ios/Runner/Assets.xcassets/syasarrow.imageset/syasarrowl.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+-0.707096 0.707117 0.707096 0.707117 6.693563 3.764573 cm
+1.000000 1.000000 1.000000 scn
+0.000000 4.575516 m
+-0.750000 4.575516 l
+-0.750000 3.825516 l
+0.000000 3.825516 l
+0.000000 4.575516 l
+h
+8.485153 5.325516 m
+0.000000 5.325516 l
+0.000000 3.825516 l
+8.485153 3.825516 l
+8.485153 5.325516 l
+h
+0.750000 4.575516 m
+0.750000 13.060669 l
+-0.750000 13.060669 l
+-0.750000 4.575516 l
+0.750000 4.575516 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  437
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000527 00000 n
+0000000549 00000 n
+0000000722 00000 n
+0000000796 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+855
+%%EOF

+ 94 - 79
ios/Classes/CPDFViewController.swift

@@ -78,6 +78,7 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         case .pageEdit:
             self.enterViewerMode()
             self.enterPDFPageEdit()
+            
         case .signature:
             enterSignatureMode()
         default:
@@ -89,6 +90,8 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         NotificationCenter.default.addObserver(self, selector: #selector(signatureTrustCerDidChangeNotification(_:)), name: CSignatureTrustCerDidChangeNotification, object: nil)
         
         NotificationCenter.default.addObserver(self, selector: #selector(PDFPageDidRemoveAnnotationNotification), name: NSNotification.Name.CPDFPageDidRemoveAnnotation, object: nil)
+        
+        self.pdfListView?.performDelegate = self
     }
     
     func initAnnotationBar() {
@@ -162,10 +165,9 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         
         if self.popMenu?.superview != nil {
             if #available(iOS 11.0, *) {
-                self.popMenu?.showMenu(in: CGRect(x: self.view.frame.size.width - self.view.safeAreaInsets.right - 250, y: self.navigationController?.navigationBar.frame.maxY ?? 0, width: 250, height: 250))
+                self.popMenu?.showMenu(in: CGRect(x: self.view.frame.size.width - self.view.safeAreaInsets.right - 250, y: (self.navigationController?.navigationBar.frame)!.maxY, width: 250, height: CGFloat((self.configuration?.showMoreItems.count ?? 0) * 50)))
             } else {
-                // Fallback on earlier versions
-                self.popMenu?.showMenu(in: CGRect(x: self.view.frame.size.width - 250, y: self.navigationController?.navigationBar.frame.maxY ?? 0, width: 250, height: 250))
+                self.popMenu?.showMenu(in: CGRect(x: self.view.frame.size.width - 250, y: (self.navigationController?.navigationBar.frame)!.maxY, width: 250, height: CGFloat((self.configuration?.showMoreItems.count ?? 0) * 50)))
             }
         }
         
@@ -234,12 +236,12 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     // MARK: - Public Methods
     
     override func selectDocumentRefresh() {
-        if self.pdfListView?.toolModel == .annotation {
+        if self.functionTypeState == .annotation {
             self.pdfListView?.setAnnotationMode(.CPDFViewAnnotationModenone)
             self.annotationBar?.updatePropertiesButtonState()
             self.annotationBar?.reloadData()
             self.annotationBar?.updateUndoRedoState()
-        } else if self.pdfListView?.toolModel == .form {
+        } else if self.functionTypeState == .form {
             self.formBar?.initUndoRedo()
         }
     }
@@ -274,34 +276,6 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
                 } else {
                     self.pdfListView?.document = document
                     
-                    if (self.digitalSignatureBar?.superview) != nil {
-                        if let signatures = self.pdfListView?.document.signatures() {
-                            for signature in signatures {
-                                if let signatureWidgetAnnotation = signature.signatureWidgetAnnotation(with: self.pdfListView?.document), signatureWidgetAnnotation.page == nil {
-                                    self.pdfListView?.document.removeSignature(signature)
-                                }
-                            }
-                            
-                            self.digitalSignatureBar?.updateStatusWith(signatures: signatures)
-                            
-                            completion(true)
-                            
-                            if (self.signtureViewController.view.superview) != nil {
-                                let signatures = self.pdfListView?.document.signatures() ?? []
-                                var mSignatures: [CPDFSignature] = []
-                                
-                                for sign in signatures {
-                                    if sign.signers.count > 0 {
-                                        mSignatures.append(sign)
-                                    }
-                                }
-                                
-                                self.signatures = mSignatures
-                                self.verifySignature()
-                            }
-                        }
-                    }
-                    
                     completion(true)
                 }
             }
@@ -313,6 +287,8 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     // MARK: - Private Methods
     
     func enterEditMode() {
+        self.functionTypeState = .edit
+
         self.selectDocumentRefresh()
         
         self.toolBar?.isHidden = false
@@ -349,6 +325,8 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     }
     
     func enterAnnotationMode() {
+        self.functionTypeState = .annotation
+
         self.toolBar?.isHidden = true
         self.annotationBar?.isHidden = false
         self.formBar?.isHidden = true
@@ -392,6 +370,8 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     }
     
     func enterViewerMode() {
+        self.functionTypeState = .viewer
+        
         self.toolBar?.isHidden = true
         self.formBar?.isHidden = true
         self.annotationBar?.isHidden = true
@@ -434,6 +414,8 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     }
     
     func enterFormMode() {
+        self.functionTypeState = .form
+
         self.toolBar?.isHidden = true
         self.annotationBar?.isHidden = true
         self.formBar?.isHidden = false
@@ -476,11 +458,24 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     }
     
     func enterSignatureMode() {
+        self.functionTypeState = .signature
+
         self.toolBar?.isHidden = true
         self.formBar?.isHidden = true
         self.annotationBar?.isHidden = true
         self.digitalSignatureBar?.isHidden = false
         
+        if pdfListView?.isEdited() == true {
+            DispatchQueue.global(qos: .default).async {
+                self.pdfListView?.commitEditing()
+                DispatchQueue.main.async {
+                    self.pdfListView?.endOfEditing()
+                }
+            }
+        } else {
+            self.pdfListView?.endOfEditing()
+        }
+        
         if isSelctSignature {
             pdfListView?.setToolModel(.form)
         } else {
@@ -491,7 +486,11 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
             view.addSubview(digitalSignatureBar!)
         }
         
-        navigationTitle = NSLocalizedString("Digital Signature", comment: "")
+        if self.digitalSignatureBar?.superview != nil {
+            self.digitalSignatureBar?.updateStatusWith(signatures: self.signatures)
+        }
+        
+        navigationTitle = NSLocalizedString("Signatures", comment: "")
         titleButton?.setTitle(navigationTitle as String?, for: .normal)
         
         var tPosY: CGFloat = 0
@@ -524,14 +523,16 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     }
     
     override func setTitleRefresh() {
-        if self.pdfListView?.toolModel == .edit {
+        if self.functionTypeState == .edit {
             self.enterEditMode()
-        } else if self.pdfListView?.toolModel == .viewer {
+        } else if self.functionTypeState == .viewer {
             self.enterViewerMode()
-        } else if self.pdfListView?.toolModel == .annotation {
+        } else if self.functionTypeState == .annotation {
             self.enterAnnotationMode()
-        } else if self.pdfListView?.toolModel == .form {
+        } else if self.functionTypeState == .form {
             self.enterFormMode()
+        } else if self.functionTypeState == .signature {
+            self.enterSignatureMode()
         }
     }
     
@@ -543,22 +544,15 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     }
     
     func writeSignatureToWidget(_ widget: CPDFSignatureWidgetAnnotation, PKCS12Cert path: String, password: String, config: CPDFSignatureConfig, lockDocument isLock: Bool) {
-        let homePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
-        let writeDirectoryPath = homePath.appendingPathComponent("Signature")
-        
-        do {
-            try FileManager.default.createDirectory(at: writeDirectoryPath, withIntermediateDirectories: true, attributes: nil)
-        } catch {
-            print("Error creating directory: \(error)")
-            return
-        }
-        
+        let writeDirectoryPath = SIGNATURESFOLDER
+    
         let documentURL = self.pdfListView?.document.documentURL
         let documentName = documentURL?.lastPathComponent.components(separatedBy: ".").first ?? ""
-        let writeFilePath = writeDirectoryPath.appendingPathComponent("\(documentName)_Widget_\(tagString()).pdf")
+        let writeFilePath = writeDirectoryPath + "/" + "\(documentName)_Widget_\(tagString()).pdf"
         
-        if FileManager.default.fileExists(atPath: writeFilePath.path) {
-            try? FileManager.default.removeItem(at: writeFilePath)
+        
+        if FileManager.default.fileExists(atPath: writeFilePath) {
+            try? FileManager.default.removeItem(at: URL(fileURLWithPath: writeFilePath))
         }
         
         var locationStr = ""
@@ -574,12 +568,12 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         
         let permissions: CPDFSignaturePermissions = isLock ? .forbidChange : .none
         
-        let isSuccess = self.pdfListView?.document.writeSignature(to: writeFilePath, withWidget: widget, pkcs12Cert: path, password: password, location: locationStr, reason: reasonStr, permissions: permissions) ?? false
+        let isSuccess = self.pdfListView?.document.writeSignature(to: URL(fileURLWithPath: writeFilePath), withWidget: widget, pkcs12Cert: path, password: password, location: locationStr, reason: reasonStr, permissions: permissions) ?? false
         
         if isSuccess {
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
-                if FileManager.default.fileExists(atPath: writeFilePath.path) {
-                    self.reloadDocument(withFilePath: writeFilePath.path, password: nil, completion: { result in
+                if FileManager.default.fileExists(atPath: writeFilePath) {
+                    self.reloadDocument(withFilePath: writeFilePath, password: nil, completion: { result in
                         // Handle the completion as needed
                     })
                 }
@@ -735,8 +729,13 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         super.pdfViewDocumentDidLoaded(pdfView)
         
         if self.digitalSignatureBar?.superview != nil {
-            self.digitalSignatureBar?.updateStatusWith(signatures: self.signatures ?? [])
+            self.digitalSignatureBar?.updateStatusWith(signatures: self.signatures)
+        }
+        
+        if self.signtureViewController.view.superview != nil {
+            verifySignature()
         }
+        
     }
     
     
@@ -961,7 +960,7 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         } else if self.pdfListView?.toolModel == .viewer {
             self.signatureAnnotation = annotation
             
-            if let annotationSignature = annotation.signature(), annotationSignature.signers.count > 0 {
+            if let annotationSignature = annotation.signature(), let signers = annotationSignature.signers, signers.count > 0 {
                 let vc = CPDFSigntureVerifyDetailsViewController()
                 let nav = CNavigationController(rootViewController: vc)
                 vc.signature = annotationSignature
@@ -970,6 +969,7 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
                 if (digitalSignatureBar?.superview) != nil {
                     signatureAnnotation = annotation
                     let signatureTypeSelectView = CSignatureTypeSelectView(frame: view.frame, height: 216.0)
+                    signatureTypeSelectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
                     signatureTypeSelectView.delegate = self
                     signatureTypeSelectView.showinView(view)
                 } else {
@@ -1161,13 +1161,22 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
             if let signatures = pdfListView?.document.signatures() {
                 var mSignatures = [CPDFSignature]()
                 for sign in signatures {
-                    mSignatures.append(sign)
+                    if sign.signers.count > 0 {
+                        mSignatures.append(sign)
+                    }
                 }
                 self.signatures = mSignatures
             }
         }
         
-        verifySignature()
+        if self.digitalSignatureBar?.superview != nil {
+            self.digitalSignatureBar?.updateStatusWith(signatures: self.signatures)
+        }
+        
+        if self.signtureViewController.view.superview != nil {
+            verifySignature()
+        }
+        
     }
     
     @objc func signatureTrustCerDidChangeNotification(_ notification: Notification) {
@@ -1175,12 +1184,20 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         if let signatures = pdfListView?.document.signatures() {
             var mSignatures = [CPDFSignature]()
             for sign in signatures {
-                mSignatures.append(sign)
+                if sign.signers.count > 0 {
+                    mSignatures.append(sign)
+                }
             }
             self.signatures = mSignatures
         }
-        verifySignature()
         
+        if self.digitalSignatureBar?.superview != nil {
+            self.digitalSignatureBar?.updateStatusWith(signatures: self.signatures)
+        }
+        
+        if self.signtureViewController.view.superview != nil {
+            verifySignature()
+        }
         if let signtureVerifyViewController = self.signtureVerifyViewController {
             signtureVerifyViewController.signatures = signatures ?? []
             signtureVerifyViewController.PDFListView = pdfListView
@@ -1323,42 +1340,37 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
             if fileUrlAuthozied {
                 if self.pdfListView!.isEditing() == true {
                     DispatchQueue.global(qos: .default).async {
-                        if self.pdfListView!.isEdited() == true {
-                            self.pdfListView!.commitEditing()
+                        if self.pdfListView?.isEdited() == true {
+                            self.pdfListView?.commitEditing()
                         }
                         DispatchQueue.main.async {
-                            self.pdfListView!.endOfEditing()
+                            self.pdfListView?.endOfEditing()
                             DispatchQueue.global(qos: .default).async {
-                                if self.pdfListView!.document.isModified() {
-                                    self.pdfListView!.document.write(to: self.pdfListView!.document.documentURL)
+                                if self.pdfListView?.document.isModified() == true {
+                                    self.pdfListView?.document.write(to: self.pdfListView!.document.documentURL)
                                 }
                                 DispatchQueue.main.async {
                                     self.openFile(with: urls)
                                     
-                                    if let signtureViewControllerSuperview = self.signtureViewController.view.superview {
-                                        signtureViewControllerSuperview.removeFromSuperview()
+                                    if self.signtureViewController.view.superview != nil {
+                                        self.signtureViewController.view.removeFromSuperview()
                                     }
                                     
-                                    let signatures = self.pdfListView?.document.signatures() ?? []
-                                    self.digitalSignatureBar?.updateStatusWith(signatures: signatures)
                                 }
                             }
                         }
                     }
                 } else {
                     DispatchQueue.global(qos: .default).async {
-                        if self.pdfListView!.document.isModified() == true {
-                            self.pdfListView!.document.write(to: self.pdfListView!.document.documentURL)
+                        if self.pdfListView?.document.isModified() == true {
+                            self.pdfListView?.document.write(to: self.pdfListView!.document.documentURL)
                         }
                         DispatchQueue.main.async {
                             self.openFile(with: urls)
                             
-                            if let signtureViewControllerSuperview = self.signtureViewController.view.superview {
-                                signtureViewControllerSuperview.removeFromSuperview()
+                            if self.signtureViewController.view.superview != nil {
+                                self.signtureViewController.view.removeFromSuperview()
                             }
-                            
-                            let signatures = self.pdfListView?.document.signatures() ?? []
-                            self.digitalSignatureBar?.updateStatusWith(signatures: signatures)
                         }
                     }
                 }
@@ -1391,7 +1403,7 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     
     func importCertificateViewControllerSave(_ importCertificateViewController: CImportCertificateViewController, PKCS12Cert path: String, password: String, config: CPDFSignatureConfig) {
         self.dismiss(animated: false)
-        writeSignatureToWidget(self.signatureAnnotation ?? CPDFSignatureWidgetAnnotation(), PKCS12Cert: path, password: password, config: config, lockDocument: pdfListView?.document.isLocked ?? false)
+        writeSignatureToWidget(self.signatureAnnotation ?? CPDFSignatureWidgetAnnotation(), PKCS12Cert: path, password: password, config: config, lockDocument: true)
     }
     
     func importCertificateViewControllerCancel(_ importCertificateViewController: CImportCertificateViewController) {
@@ -1401,6 +1413,7 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         pdfListView?.setNeedsDisplayFor(self.signatureAnnotation?.page)
         
         let signatureTypeSelectView = CSignatureTypeSelectView(frame: view.frame, height: 216.0)
+        signatureTypeSelectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
         signatureTypeSelectView.delegate = self
         signatureTypeSelectView.showinView(view)
     }
@@ -1414,6 +1427,7 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
         pdfListView?.setNeedsDisplayFor(self.signatureAnnotation?.page)
         
         let signatureTypeSelectView = CSignatureTypeSelectView(frame: view.frame, height: 216.0)
+        signatureTypeSelectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
         signatureTypeSelectView.delegate = self
         signatureTypeSelectView.showinView(view)
     }
@@ -1421,11 +1435,12 @@ class CPDFViewController: CPDFViewBaseController,CPDFFormBarDelegate,CPDFSoundPl
     func createCertificateInfoViewControllerSave(_ createCertificateInfoViewController: CCreateCertificateInfoViewController, PKCS12Cert path: String, password: String, config: CPDFSignatureConfig) {
         pdfListView?.setNeedsDisplayFor(self.signatureAnnotation?.page)
         self.dismiss(animated: false)
-        writeSignatureToWidget(self.signatureAnnotation ?? CPDFSignatureWidgetAnnotation(), PKCS12Cert: path, password: password, config: config, lockDocument: pdfListView?.document.isLocked ?? false)
+        writeSignatureToWidget(self.signatureAnnotation ?? CPDFSignatureWidgetAnnotation(), PKCS12Cert: path, password: password, config: config, lockDocument: true)
     }
     
     func verifySignature() {
-        let signatures = self.pdfListView?.document.signatures() ?? []
+        let signatures = self.signatures ?? []
+        
         if signatures.count > 0 {
             self.navigationController?.view.isUserInteractionEnabled = false