• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何从 UIWebView 打印内容?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:28:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 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)



Best Answer-推荐答案


这是我的解决方案:

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap