我正在使用PDFKit框架,并希望在PDF的所有页面中用蓝色突出显示所有超链接。我该如何进行?我已经搜索过,但没有足够的相关信息。
答案 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) {
}