首页 > 解决方案 > 在 webview 中打印 pdf 文件

问题描述

我想在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”

我尝试了不同的方法,但我被卡住了。如果有人可以帮助我,那就太棒了。我认为这很容易解决,但对我来说目前还不是。

标签: swiftxcodeprintingwebview

解决方案


您需要将参数作为条形按钮传递。但是您正在传递发件人,目前是“任何”..要么使用警卫将其向下转换为条形按钮

 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)

推荐阅读