在WebView中打印pdf文件

时间:2018-12-27 12:02:43

标签: swift xcode printing webview

我想将打印Button添加到我的应用中以打印本地pdf文件。

所以我添加了一个UIToolBar + UIBarButtonItem并将其与以下代码链接:

@IBAction func printButton(_ sender: Any) {

    let printController = UIPrintInteractionController.shared

    let printInfo = UIPrintInfo(dictionary:nil)

    printInfo.outputType = UIPrintInfo.OutputType.general

    printInfo.jobName = (wkWebView.url?.absoluteString)!

    printInfo.duplex = UIPrintInfo.Duplex.none

    printInfo.orientation = UIPrintInfo.Orientation.portrait

    printController.printPageRenderer = nil

    printController.printingItems = nil

    printController.printingItem = wkWebView.url!

    printController.printInfo = printInfo

   // printController.showsPageRange = true

    printController.showsNumberOfCopies = true


    printController.presentFromBarButtonItem(printButton, animated: true, completionHandler: nil)

}

在最后一行,我收到以下错误消息:

  

无法将类型'(Any)->()'的值转换为预期的参数类型   'UIBarButtonItem'

我尝试了不同的方法,但被卡住了。如果有人可以帮助我,那将是非常棒的。我认为这很容易解决,但对我而言暂时不是。

2 个答案:

答案 0 :(得分:2)

您需要将参数作为条形按钮传递。但是,您正在传递的发件人,目前是“任何”。要么使用保护装置将其下调为条形按钮,如

 guard let barButton = sender as? UIBarButtonItem else {
            print("not bar button")
            return
        }
 printController.presentFromBarButtonItem(barButton, animated: true, completionHandler: nil)

或将发件人更改为

IBAction func printButton(_ sender: UIBarButtonItem)

 printController.presentFromBarButtonItem(sender, animated: true, completionHandler: nil)

答案 1 :(得分:0)

删除动作,而不是尝试与发件人addAction

IBAction func printButton(_ sender: Any) //instead  of
IBAction func printButton(_ sender: UIBarButtonItem)