为有牺牲多壮志,敢教日月换新天。

[Swift通天遁地]七、数据与安全-(8)创建普通PDF文档和加密PDF文档

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10308238.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

目录:[Swift]通天遁地Swift

本文将演示使用开源类库实现创建普通PDF文档和加密PDF文档。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

1 platform :ios, '12.0'
2 use_frameworks!
3 
4 target 'DemoApp' do
5     source 'https://github.com/CocoaPods/Specs.git'
6     pod 'PDFGenerator'
7 end

根据配置文件中的相关配置,安装第三方库。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

  1 import UIKit
  2 //引入已经安装的第三方类库
  3 import PDFGenerator
  4 
  5 class ViewController: UIViewController {
  6 
  7     override func viewDidLoad() {
  8         super.viewDidLoad()
  9         // Do any additional setup after loading the view, typically from a nib.
 10         //将视图对象转换成一个文档
 11         generatePDFFromUIView()
 12         //创建普通PDF文档和加密PDF文档
 13         generatePDFFromPDFPage()
 14     }
 15     
 16     //添加一个方法,用来将视图对象转换成一个文档
 17     func generatePDFFromUIView()
 18     {
 19         //初始化一个指定显示区域的滚动视图
 20         let v1 = UIScrollView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
 21         //初始化两个视图对象
 22         let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
 23         let v3 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
 24         
 25         //设置滚动视图的背景颜色为橙色
 26         v1.backgroundColor = .orange
 27         //设置滚动视图的内容区域
 28         v1.contentSize = CGSize(width: 100.0, height: 200.0)
 29         //设置v2视图的背景颜色为棕色
 30         v2.backgroundColor = .brown
 31         //设置v3视图的背景颜色为洋红色
 32         v3.backgroundColor = .magenta
 33         
 34         //初始化一个位于临时目录的文件路径
 35         let dst = URL(fileURLWithPath: NSTemporaryDirectory().appending("sample1.pdf"))
 36         print(dst)
 37         
 38         //方式一:
 39         //添加一个异常捕捉语句,用来在指定的文件路径下创建文件
 40         do
 41         {
 42             //通过调用生成器的创建方法,
 43             //将滚动视图和两个视图对象,生成三页的文档。
 44             let data = try PDFGenerator.generated(by: [v1, v2, v3])
 45             //将文档写入到指定的沙箱路径。
 46             try data.write(to: dst, options: .atomic)
 47         }
 48         catch (let error)
 49         {
 50             print(error)
 51         }
 52         
 53         //方式二:修改上一个异常捕捉语句的代码。
 54         //添加一个异常捕捉语句,
 55         do
 56         {
 57             //使用更加简洁的方式,将视图导出为文档。
 58             try PDFGenerator.generate([v1, v2, v3], to: dst)
 59         }
 60         catch (let error)
 61         {
 62             print(error)
 63         }
 64     }
 65     
 66     //添加一个方法,用来显示手动创建文档的方式
 67     func generatePDFFromPDFPage()
 68     {
 69         //初始化一个指定显示区域的视图对象
 70         let v1 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
 71         //设置视图的背景颜色为橙色
 72         v1.backgroundColor = .orange
 73         //初始化一个指定显示区域的视图对象
 74         let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
 75         //设置视图的背景颜色为棕色
 76         v2.backgroundColor = .brown
 77         
 78         //创建基于第一个视图对象的页面
 79         let page1 = PDFPage.view(v1)
 80         //创建基于第二个视图对象的页面
 81         let page2 = PDFPage.view(v2)
 82         //创建三个页面,并设置页面的尺寸
 83         let page3 = PDFPage.whitePage(CGSize(width: 200, height: 100))
 84         //创建第四个页面,显示一张项目图片
 85         let page4 = PDFPage.image(UIImage(named: "image01")!)
 86         //创建第五个页面,显示一张项目图片
 87         let page5 = PDFPage.image(UIImage(named: "image02")!)
 88         //将五个页面放在一个数组中
 89         let pages = [page1, page2, page3, page4, page5]
 90         
 91         //初始化两个位于临时目录的文件目录
 92         let dst1 = NSTemporaryDirectory().appending("sample2.pdf")
 93         let dst2 = NSTemporaryDirectory().appending("sample3.pdf")
 94         
 95         //添加一个异常捕捉语句,用来执行文档的创建动作
 96         do
 97         {
 98             //将五个页面生成一个文档,并保存再指定的路径。
 99             //同时设置文档的分辨率为300
100             try PDFGenerator.generate(pages, to: dst1, dpi: .dpi_300)
101             //将五个页面生成一个文档,并保存再指定的路径。
102             //并设置文档的安全密码
103             try PDFGenerator.generate(pages, to: dst2, password: PDFPassword("123456"))
104         }
105         catch (let e)
106         {
107             print(e)
108         }
109     }
110     
111     override func didReceiveMemoryWarning() {
112         super.didReceiveMemoryWarning()
113         // Dispose of any resources that can be recreated.
114     }
115 }

 

posted @ 2019-01-23 12:30  为敢技术  阅读(203)  评论(0编辑  收藏  举报