gpt4 book ai didi

ios - 如何从 UIWebView 中打印内容?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:05:42 25 4
gpt4 key购买 nike

我正在使用 swift,我需要打印在 UIWebView 中打开的工作表。

    let url = webView.request?.url
let stringurl = url?.absoluteString

let pic = UIPrintInteractionController.shared
let printInfo : UIPrintInfo = UIPrintInfo(dictionary: nil)

printInfo.outputType = UIPrintInfoOutputType.general
printInfo.jobName = stringurl!

pic.printInfo = printInfo
pic.printFormatter = webView.viewPrintFormatter()
pic.showsPageRange = false

pic.present(animated: true, completionHandler: nil)

最佳答案

这是我的解决方案:

UIWebViewDelegate 函数 webViewDidFinishLoad 中,我们需要将 window.print 函数“重定向”到负责打印的 native 函数:

open func webViewDidFinishLoad(_ webView: UIWebView) {
webView.stringByEvaluatingJavaScript(from: "(function(){var originalPrintFn = window.print;window.print = function(){window.location = 'webViewPrintAction';}})();")
}

下一步:

public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if request.url!.absoluteString.contains("webViewPrintAction") {
printContent()
return false
}
return true
}

最后一步是实现 printContent() 函数:

private func printContent() {
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = webView.description
printInfo.outputType = .general

let printController = UIPrintInteractionController.shared
printController.printInfo = printInfo
printController.printingItem = webView
printController.present(animated: true)
}

现在,当我们在 webView 中按下 print 时(第一个屏幕截图),我们将看到 iOS 原生对话框(第二个屏幕截图):

enter image description here

enter image description here

关于ios - 如何从 UIWebView 中打印内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47842965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com