当前位置: 首页 > news >正文

Swift 3 打印功能

1. 加载到webview再打印

2. 直接打印nsdata

func printViaWebView(fileName: String)
{
 let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        let filePath = "\(documentsPath)/\(filename)"
        let url = NSURL(fileURLWithPath: filePath)
        let urlRequest = NSURLRequest(url: url as URL)
        
        webView.loadRequest(urlRequest as URLRequest)
        
        
        let pic = UIPrintInteractionController.shared
        let printInfo : UIPrintInfo = UIPrintInfo(dictionary: nil)
        
        printInfo.outputType = UIPrintInfoOutputType.general
        printInfo.jobName = url.absoluteString!
        
        pic.printInfo = printInfo
        pic.printFormatter = webView.viewPrintFormatter()
        pic.showsPageRange = false
        
        pic.present(animated: true, completionHandler: nil)
}

func printViaNSData(fileName: String){
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        let filePath = "\(documentsPath)/\(filename)"
        let url = NSURL(fileURLWithPath: filePath)
        let urlRequest = NSURLRequest(url: url as URL)
        
        webView.loadRequest(urlRequest as URLRequest)
        
        
        let pic = UIPrintInteractionController.shared
        let printInfo : UIPrintInfo = UIPrintInfo(dictionary: nil)
        
        printInfo.outputType = UIPrintInfoOutputType.general
        //printInfo.jobName = url.absoluteString!
        //printInfo.orientation = .portrait
        
        pic.printingItem = NSData(contentsOfFile: filePath)
        pic.showsPaperSelectionForLoadedPapers = true;
        pic.showsPageRange = true;
        pic.showsNumberOfCopies = true;
        pic.printInfo = printInfo
        //pic.printFormatter = webView.viewPrintFormatter()
        
        pic.present(animated: true, completionHandler: nil)
}


相关文章:

  • 还需要编写DAO代码吗?SQL+接口就足够了!(Part 1)
  • 百度关闭竞价排名部分功能,以提升用户体验
  • linux 更新nodejs到最新
  • 移动MM初探之一:苹果APP Store模式将不再赢利?
  • 七大热门商业智能产品(非开源)
  • azure 最佳实践 3--最小协同操作
  • linux-2.6.26内核中ARM中断实现详解(2)
  • azure 最佳实践4 --可水平扩展的设计
  • 开发即过程!立此纪念一个IT新名词的诞生
  • azure 最佳实践5--使用分区
  • asp.net Webapi登录azureAD并调用azure graph api
  • (翻译)terry crowley: 写给程序员
  • 推荐x61使用nhc软件控制风扇
  • azure 最佳实践-- 系统运维
  • 全角字符unicode码对应表
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 2017-09-12 前端日报
  • create-react-app做的留言板
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JWT究竟是什么呢?
  • nginx 负载服务器优化
  • 对超线程几个不同角度的解释
  • 基于webpack 的 vue 多页架构
  • 讲清楚之javascript作用域
  • 深入浅出webpack学习(1)--核心概念
  • 数据结构java版之冒泡排序及优化
  • 一个JAVA程序员成长之路分享
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 白色的风信子
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • $L^p$ 调和函数恒为零
  • (推荐)叮当——中文语音对话机器人
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)linux下的时间函数使用
  • (转)关于多人操作数据的处理策略
  • ****Linux下Mysql的安装和配置
  • **CI中自动类加载的用法总结
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .jks文件(JAVA KeyStore)
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET delegate 委托 、 Event 事件
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net快速开发框架源码分享
  • .net中调用windows performance记录性能信息
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [codeforces]Checkpoints
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [CQOI 2010]扑克牌
  • [CTO札记]盛大文学公司名称对联
  • [daily][archlinux][game] 几个linux下还不错的游戏