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

qni6mghb  于 2022-10-31  发布在  Swift
关注(0)|答案(3)|浏览(160)

我有一个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,此操作就可以正常工作。如果mime类型为application/pdf,则无法工作。
有人能帮我找到一个解决方案,在一个PDF文档中找到一个字符串显示在一个WKWebView?
谢谢你,克莱门斯
我不知道如何处理这个问题。任何帮助都是感激不尽的。

wztqucjr

wztqucjr1#

它工作的文本文件,也许需要从PDF复制文本,并将其呈现为文本/字符串,找到一些例子:Can't copy text from PDF which created with iOS Swift

vjhs03f7

vjhs03f72#

我现在已经解决了这个问题,通过使用PDFView而不是WKWebView来处理pdf文件。
谢谢你帮我解决这个问题,克莱门斯

tct7dpnv

tct7dpnv3#

您确定您的PDF文件包含文本吗?可能是从文本转换为矢量!

相关问题