★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10308238.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示使用开源类库实现创建普通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 }
请发表评论