如何在WKWebView中显示的pdf中查找并突出显示字符串



我有一个iOS应用程序,可以在其中显示html和pdf文件。我尝试实现自iOS14(find(_:configuration:completionHandler:)(以来可用的页内查找功能。

这是我的实现:

private func searchInPage(forward: Bool) {
ktWebView.select(nil)
searchIsAtTop = false
searchIsAtEnd = false

let searchConfig = WKFindConfiguration()
searchConfig.backwards = !forward
searchConfig.caseSensitive = false
searchConfig.wraps = false
ktWebView.find(searchString, configuration: searchConfig, completionHandler: { result in
// https://stackoverflow.com/questions/64193691/ios-wkwebview-findstring-not-selecting-and-scrolling
guard result.matchFound else {
if forward { searchIsAtEnd = true }
else { searchIsAtTop = true }
return
}
ktWebView.evaluateJavaScript("window.getSelection().getRangeAt(0).getBoundingClientRect().top") { offset, _ in
guard let offset = offset as? CGFloat else { return }
ktWebView.scrollView.scrollRectToVisible(
.init(x: 0, y: offset + ktWebView.scrollView.contentOffset.y,
width: 100, height: 100), animated: true)
}
})
}

每次调用该函数时,searchString的下一次出现将被突出显示并滚动到.

只要WKWebView内容的mime类型是text/html,这就可以正常工作。当它是application/pdf时,它不起作用。

有人能帮我找到在WKWebView中显示的pdf文档中查找字符串的解决方案吗?

谢谢,克莱门斯

我不知道如何处理这个问题。感谢您的帮助。

它适用于文本文件,可能需要从PDF中复制文本并将其呈现为text/string,找到了一些示例:可以';t从使用iOS Swift 创建的PDF中复制文本

我现在已经通过使用pdf文件的PDFView而不是WKWebView解决了这个问题。您可以在https://github.com/cs-LA/FindInPDF.

感谢你为解决这个问题所做的一切努力,克莱门斯

你确定你的PDF文件有文本吗,也许它是从文本转换成矢量的!

最新更新