0

我已经实现了一个基于 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的文本框添加的文本将被重新格式化,例如字体大小将非常小。

如果您能就它的实施方式和这个问题给我任何建议,我将不胜感激。谢谢你 。

4

0 回答 0