[Swift通天遁地]7、數據與安全-(8)建立普通PDF文檔和加密PDF文檔

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-vmsittyp-mb.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

目錄:[Swift]通天遁地Swiftios

本文將演示使用開源類庫實現建立普通PDF文檔和加密PDF文檔。git

首先確保在項目中已經安裝了所需的第三方庫。github

點擊【Podfile】,查看安裝配置文件。swift

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 }
相關文章
相關標籤/搜索