1

我正在尝试导出带有密码保护的 PDF。目前,我的应用程序直接将 PDF 文件导出到 iOS 文件应用程序...如何在导出前对其进行密码保护?

这是我当前的代码,请让我知道我必须改变什么才能实现这一点。

func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {

  guard scan.pageCount >= 1 else {


            controller.dismiss(animated: true)
            return
        }



        var arrImages = [UIImage]()
        for i in 0...scan.pageCount-1 {
            let originalImage = scan.imageOfPage(at: i)
            let fixedImage = reloadedImage(originalImage)
            arrImages.append(fixedImage)
        }

        controller.dismiss(animated: true)


        let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let docURL = documentDirectory.appendingPathComponent("ScannedImage.pdf")


        let data = createNewPDF(arrImage: arrImages)
        do{
            try data?.write(to: docURL)
            print("Success")

        }catch(let error){
            print("error is \(error.localizedDescription)")
        }

    }

PDF 创建功能

    func createPDF(image: UIImage) -> NSData? {

        let pdfData = NSMutableData()
        let pdfConsumer = CGDataConsumer(data: pdfData as CFMutableData)!

        var mediaBox = CGRect.init(x: 0, y: 0, width: image.size.width, height: image.size.height)

        let pdfContext = CGContext(consumer: pdfConsumer, mediaBox: &mediaBox, nil)!

        pdfContext.beginPage(mediaBox: &mediaBox)
        pdfContext.draw(image.cgImage!, in: mediaBox)
        pdfContext.endPage()
        let activityViewController = UIActivityViewController(activityItems: [pdfData], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)

        return pdfData
    }

    func createNewPDF(arrImage: [UIImage]) -> Data? {

        let pdfDocument = PDFDocument()
        for i in 0...arrImage.count-1 {
            let pdfPage = PDFPage(image: arrImage[i])
            pdfDocument.insert(pdfPage!, at: i)
        }
        let pdfData = pdfDocument.dataRepresentation()

        let activityViewController = UIActivityViewController(activityItems: [pdfData!], applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)

        return pdfData
    }

如果您需要其他任何东西,请告诉我......提前致谢!

4

0 回答 0