我已经实现了一个基于 PDFKit 和 Pencilkit 的应用程序。它在 PDF 文档中创建一些空白页面,然后让用户在页面之间导航。并让用户尝试分别编辑每个页面。我尝试使用这行代码在编辑后保存页面
func openPreview(_ url : URL){
let previewController = QLPreviewController()
previewController.isEditing = true
previewController.delegate = self
self.pdfUrl = url
previewController.dataSource = self
previewController.modalPresentationStyle = .overFullScreen
self.present(previewController, animated: true, completion: nil)
}
extension ViewController : QLPreviewControllerDataSource,QLPreviewControllerDelegate{
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
return self.pdfUrl as QLPreviewItem
}
func previewController(_ controller: QLPreviewController, editingModeFor previewItem: QLPreviewItem) -> QLPreviewItemEditingMode {
return .updateContents
}
func previewControllerWillDismiss(_ controller: QLPreviewController) {
}
func previewController(_ controller: QLPreviewController, didUpdateContentsOf previewItem: QLPreviewItem) {
DispatchQueue.main.async {
self.pdfUrl = previewItem.previewItemURL
self.setPDFFile()
self.pdfDocument.write(to: self.pdfUrl)
}
}
}
func setPDFFile(){
if let doc = PDFDocument(url: self.pdfUrl){
self.pdfDocument = doc
self.pdfView.document = doc
}
}
我的问题就在这行代码中
self.pdfDocument.write(to: self.pdfUrl)
我需要这行代码,因为实现是一种用户可以单独编辑每个页面的实现,我的意思是,例如当用户决定在第 4 页时编辑第 4 页时,用户将在 Pencilkit 的帮助下编辑页面并单击完成按钮。因此,我正在使用此代码将已编辑的页面保存在我获得的 url 上。但是这种节省会带来一些问题。像pencilkit的文本框添加的文本将被重新格式化,例如字体大小将非常小。
如果您能就它的实施方式和这个问题给我任何建议,我将不胜感激。谢谢你 。