swift - 在 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”
我尝试了不同的方法,但我被卡住了。如果有人可以帮助我,那就太棒了。我认为这很容易解决,但对我来说目前还不是。
解决方案
您需要将参数作为条形按钮传递。但是您正在传递发件人,目前是“任何”..要么使用警卫将其向下转换为条形按钮
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)
推荐阅读
- php - 价格修改适用于购物车,但不适用于订单
- php - 我的一些查询没有执行
- php - 如何在 word 用户元数据中使用 MySQL 选择查询并从其他表中左连接?
- c# - 具有数据类型前缀的列导致“类型 X 不是已定义的系统类型”错误
- javascript - 已经传递参数时的ReactJS PreventDefault
- python-3.x - Selenium 在不同屏幕中打开浏览器
- javascript - 使用 Jquery 更新 HTML 附加项
- php - mysqli (oop) 在 mysql 服务器上运行但不是 mariadb
- mongodb - 带有数组元素的 MongoDB 数学运算
- java - 更改我的输出 java/Sparql 的类型