首页 > 解决方案 > QuickLook/QLPreviewController PDF Text Annotation 背景变黑,字体变小

问题描述

QLPreviewController用于编辑 PDF。一切正常,但是如果我从 QLPreviewController 添加文本注释并单击完成按钮,它会按预期工作,我将获得带有已编辑 PDF 的 URL,如果我进行其他更改,例如从外部添加图像注释QLPreviewController并保存该 pdf使用代码

   self.pdfDocument.write(to: self.pdfUrl)

如果我在 QLPReviewController 中打开该 pdf 并点击先前添加的文本,则文本注释背景变为黑色,字体变小。我已附上视频,请查收。

**视频链接:** https://www.dropbox.com/s/m0ql1csr8pars3t/Issue_video.mov?dl=0

我已使用以下代码进行 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
    }
}

标签: iosswiftpdfquicklookqlpreviewcontroller

解决方案


推荐阅读