如何使用PDFKit框架突出显示PDFPage中的超链接?

时间:2019-02-07 10:33:12

标签: ios swift swift4 ios12

我正在使用PDFKit框架,并希望在PDF的所有页面中用蓝色突出显示所有超链接。我该如何进行?我已经搜索过,但没有足够的相关信息。

1 个答案:

答案 0 :(得分:0)

如果要提取pdf中的所有链接,请应用正则表达式并提取数组中的所有链接,例如:

    let text = pdfView.document?.string ?? ""
    let types: NSTextCheckingResult.CheckingType = .link
    do {
        let detector = try NSDataDetector(types: types.rawValue)
        let matchResult = detector.matches(in: text, options: .reportCompletion, range: NSRange(location: 0, length: text.count))

        let linksArray: [URL] = matchResult.compactMap({ $0.url })
        print("List of available links: \(linksArray)")

    } catch (let error) {
        print (error.localizedDescription)
    }

但是,如果您只想突出显示链接并单击其中的操作,则PDFKit确实具有属性enableDataDetectors来检测PDFView中的链接。您只需启用它即可。

  

根据Apple文档:

     

打开或关闭数据检测。如果启用,将在页面可见时扫描页面文本中的URL。在找到URL的位置,将创建链接注释。这些是临时注释,不会保存。

您可以将其用作:

    let pdfView = PDFView.init(frame: self.view.bounds)
    pdfView.enableDataDetectors = true

如果需要处理此链接的单击,请遵循PDFViewDelegate,它将调用委托方法:

    func pdfViewWillClick(onLink sender: PDFView, with url: URL) {

    }