gpt4 book ai didi

ios - 如何正确地将密码添加到 Swift 中以编程方式创建的 PDF?

转载 作者:搜寻专家 更新时间:2023-11-01 06:56:26 25 4
gpt4 key购买 nike

目前我正在通过以下方式创建我的 PDF:

func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! {
let data = NSMutableData()

UIGraphicsBeginPDFContextToData(data, CGRect(x: 0, y: 0, width: A4PageHeight, height: A4PageWidth), nil)
UIGraphicsBeginPDFPage()

printPageRenderer.drawPage(at: 0, in: UIGraphicsGetPDFContextBounds())

UIGraphicsEndPDFContext()

return data
}

通过使用页面渲染器:

let printPageRenderer = CustomPrintPageRenderer()
let printFormatter = UIMarkupTextPrintFormatter(markupText: self.getHTML())
printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAt: 0)

并尝试从数据创建 PDF 为:

let pdfData = printPageRenderer.drawPDFUsingPrintPageRenderer(printPageRenderer: printPageRenderer)
mailComposer.addAttachmentData(pdfData as Data, mimeType: "application/pdf", fileName: "My PDF")

当我为我的页面渲染器创建一个新实例时:

class CustomPrintPageRenderer: UIPrintPageRenderer {
let A4PageWidth: CGFloat = 595.2
let A4PageHeight: CGFloat = 841.8

var html: String?

override init() {
super.init()

// Specify the frame of the A4 page.
let pageFrame = CGRect(x: 0.0, y: 0.0, width: A4PageHeight, height: A4PageWidth)

// Set the page frame.
self.setValue(NSValue(cgRect: pageFrame), forKey: "paperRect")

// Set the horizontal and vertical insets (that's optional).
self.setValue(NSValue(cgRect: pageFrame), forKey: "printableRect")
self.setValue(1234, forKey: kCGPDFContextUserPassword as String)
self.setValue(1234, forKey: kCGPDFContextOwnerPassword as String)
}

我正在尝试通过以下方式为其设置密码:

self.setValue(1234, forKey: kCGPDFContextUserPassword as String)
self.setValue(1234, forKey: kCGPDFContextOwnerPassword as String)

但是当我运行我的代码时它崩溃并出现错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason:  
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key kCGPDFContextUserPassword.'

我做错了什么,我该如何解决?我在谷歌上搜索,但找不到任何有用的东西

最佳答案

根据 UIGraphicsBeginPDFContextToData 的文档,最后一个参数是一个字典,它采用与 CGPDFContext 使用的相同的辅助键。

kCGPDFContextUserPasswordkCGPDFContextOwnerPassword 是辅助键。

因此您似乎需要在调用 UIGraphicsBeginPDFContextToData 时设置密码。

let info: [AnyHashable: Any] = [kCGPDFContextUserPassword as String : "1234", kCGPDFContextOwnerPassword as String : "1234"]
UIGraphicsBeginPDFContextToData(data, CGRect(x: 0, y: 0, width: A4PageHeight, height: A4PageWidth), info)

关于ios - 如何正确地将密码添加到 Swift 中以编程方式创建的 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53145451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com