首页 > 解决方案 > 单击按钮时从 WKWebView 打印

问题描述

我在员工的后端登录中有一个打印配方 java 脚本功能。所以在普通浏览器中它调用打印窗口并且可以打印。

但在WKWebView它不起作用。我阅读并阅读了论坛和苹果开发者文档中的问题,但找不到解决方案。

那么如何快速检测网站上的打印按钮按下,并调用打印所需区域的函数?

我附上了我的代码和网站的截图。第一张图片是您在应用程序中登陆的网站,然后您必须登录,然后点击订单,然后点击打印。屏幕截图附在这一行中): 登陆页面 第二页

我的代码是:

import UIKit
import WebKit

class MitarbeiterViewController: UIViewController, WKUIDelegate,UIWebViewDelegate  {
    
    var webView: WKWebView!
    
    override func loadView() {
       
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        
        webView.uiDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myURL = URL(string:"https://www.pizzeria-lo-straniero.de/mitarbeiterlogin")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)    
    }
    
    func printRecipeWebViewController(){
        //MARK: - PRINT
            
        let webviewPrint = webView.viewPrintFormatter()
        let printInfo = UIPrintInfo(dictionary: nil)
        printInfo.jobName = "page"
        printInfo.outputType = .general
        let printController = UIPrintInteractionController.shared
        printController.printInfo = printInfo
        printController.showsNumberOfCopies = false
        printController.printFormatter = webviewPrint
        printController.present(animated: true, completionHandler: nil)           
    }

标签: iosswiftprintingwkwebview

解决方案


您好,欢迎来到 StackOverflow,您的要求当然是可能的,可以通过向 userContentController 注入脚本消息处理程序来完成。基本上你用一些 JS 注入你的 webview,这样它就可以让你监听某些动作,然后你可以在另一端执行所需的动作。这个详细的答案应该可以帮助您满足要求,请确保快速搜索以避免重复问题

https://stackoverflow.com/a/62743190/9343566。- 回答 1 https://stackoverflow.com/a/62743190/9343566。- 答案 2


推荐阅读