123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- //
- // CPDFDigitalSignatureToolBar.swift
- // PDFViewer-Swift
- //
- // Copyright © 2014-2024 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 UIKit
- import ComPDFKit
- @objc public protocol CPDFDigitalSignatureToolBarDelegate: AnyObject {
- @objc optional func verifySignatureBar(_ pdfSignatureBar: CPDFDigitalSignatureToolBar, sourceButton: UIButton)
- @objc optional func addSignatureBar(_ pdfSignatureBar: CPDFDigitalSignatureToolBar, sourceButton: UIButton)
- }
- public class CPDFDigitalSignatureToolBar: UIView {
- private(set) var pdfListView: CPDFListView
- public weak var delegate: CPDFDigitalSignatureToolBarDelegate?
- public weak var parentVC: UIViewController?
-
- private var addDigitalSignatureBtn: UIButton?
-
- private var verifyDigitalSignatureBtn: UIButton?
-
- private var annotationManage: CAnnotationManage?
-
- // MARK: - Initialize
-
- public init(pdfListView: CPDFListView) {
- self.pdfListView = pdfListView
- self.annotationManage = CAnnotationManage(pdfListView: pdfListView)
-
- super.init(frame: .zero)
- self.backgroundColor = CPDFColorUtils.CAnnotationSampleBackgoundColor()
-
- addDigitalSignatureBtn = UIButton(frame: .zero)
- addDigitalSignatureBtn?.setImage(UIImage(named: "CPDFDigitalSignatureAdd", in: Bundle(for: CPDFAddWatermarkViewController.classForCoder()), compatibleWith: nil), for: .normal)
- addDigitalSignatureBtn?.addTarget(self, action: #selector(buttonItemClickedAdd(_:)), for: .touchUpInside)
- verifyDigitalSignatureBtn = UIButton(frame: .zero)
- verifyDigitalSignatureBtn?.setImage(UIImage(named: "CPDFDigitalSignatureVerify", in: Bundle(for: CPDFAddWatermarkViewController.classForCoder()), compatibleWith: nil), for: .normal)
- verifyDigitalSignatureBtn?.addTarget(self, action: #selector(buttonItemClickedVerify(_:)), for: .touchUpInside)
-
- if addDigitalSignatureBtn != nil {
- configureButton(addDigitalSignatureBtn!, title: NSLocalizedString("Add a Signature Field", comment: ""), image: "CPDFDigitalSignatureAdd", action: #selector(buttonItemClickedAdd))
- }
- if addDigitalSignatureBtn != nil {
- configureButton(verifyDigitalSignatureBtn!, title: NSLocalizedString("Verify the Signature", comment: ""), image: "CPDFDigitalSignatureVerify", action: #selector(buttonItemClickedVerify))
- }
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- public override func layoutSubviews() {
- super.layoutSubviews()
- addDigitalSignatureBtn?.frame = CGRect(x: (frame.size.width - 310) / 2, y: 5, width: 140, height: 50)
- verifyDigitalSignatureBtn?.frame = CGRect(x: (addDigitalSignatureBtn?.frame.origin.x ?? 0) + 170, y: 5, width: 140, height: 50)
- }
-
- // MARK: - Action
-
- @objc func buttonItemClickedAdd(_ button: UIButton) {
- button.isSelected.toggle()
- if button.isSelected {
- button.backgroundColor = CPDFColorUtils.CAnnotationBarSelectBackgroundColor()
- verifyDigitalSignatureBtn?.backgroundColor = CPDFColorUtils.CAnnotationBarNoSelectBackgroundColor()
- pdfListView.setAnnotationMode(.signature)
- pdfListView.setToolModel(.form)
- annotationManage?.setAnnotStyle(from: .signature)
- } else {
- button.backgroundColor = CPDFColorUtils.CAnnotationBarNoSelectBackgroundColor()
- pdfListView.setToolModel(.viewer)
- pdfListView.setAnnotationMode(CPDFViewAnnotationMode.CPDFViewAnnotationModenone)
- }
-
- delegate?.addSignatureBar?(self, sourceButton: button)
- }
-
- @objc func buttonItemClickedVerify(_ button: UIButton) {
- if button.isSelected {
- addDigitalSignatureBtn?.backgroundColor = CPDFColorUtils.CAnnotationBarNoSelectBackgroundColor()
- }
- delegate?.verifySignatureBar?(self, sourceButton: button)
- }
-
- private func configureButton(_ button: UIButton, title: String, image: String, action: Selector) {
- button.setTitle(title, for: .normal)
- button.setTitleColor(CPDFColorUtils.CPageEditToolbarFontColor(), for: .normal)
-
- button.backgroundColor = CPDFColorUtils.CAnnotationBarNoSelectBackgroundColor()
- button.titleLabel?.adjustsFontSizeToFitWidth = true
- button.layer.cornerRadius = 10.0
- button.layer.masksToBounds = true
- addSubview(button)
- }
-
- // MARK: - Public Methods
-
- public func updateStatusWith(signatures: [CPDFSignature]?) {
- // Update the status with the provided signatures
- if (signatures?.count ?? 0) > 0 {
- verifyDigitalSignatureBtn?.setTitleColor(CPDFColorUtils.CPageEditToolbarFontColor(), for: .normal)
- verifyDigitalSignatureBtn?.isEnabled = true
- } else {
- verifyDigitalSignatureBtn?.setTitleColor(.gray, for: .normal)
- verifyDigitalSignatureBtn?.isEnabled = false
- }
- }
-
- // MARK: - Private Methods
-
- private func imageWithColor(_ color: UIColor) -> UIImage {
- let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
- UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
- color.setFill()
- UIRectFill(rect)
- let image = UIGraphicsGetImageFromCurrentImageContext()
- UIGraphicsEndImageContext()
- return image ?? UIImage()
- }
- }
|