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


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

    目录:[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,  100.0, height: 100.0))
     21         //初始化两个视图对象
     22         let v2 = UIView(frame: CGRect(x: 0.0,y: 0,  100.0, height: 200.0))
     23         let v3 = UIView(frame: CGRect(x: 0.0,y: 0,  100.0, height: 200.0))
     24         
     25         //设置滚动视图的背景颜色为橙色
     26         v1.backgroundColor = .orange
     27         //设置滚动视图的内容区域
     28         v1.contentSize = CGSize( 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,  100.0, height: 100.0))
     71         //设置视图的背景颜色为橙色
     72         v1.backgroundColor = .orange
     73         //初始化一个指定显示区域的视图对象
     74         let v2 = UIView(frame: CGRect(x: 0.0,y: 0,  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( 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 }
  • 相关阅读:
    MySQL组提交(group commit)
    MySQL 热快问题解决
    Mysql 高可用集群PXC
    向量的点积(标量积、内积)
    BitmapData.threshold()方法
    Unity 自定义导入时切割Sprite
    匀变速直线运动的速度与位移的关系
    1.1.2 三角形余弦定理
    ccc切割刚体
    Unity 获取指定资源目录下的所有文件
  • 原文地址:https://www.cnblogs.com/strengthen/p/10308238.html
Copyright © 2020-2023  润新知