1. 程式人生 > >[Swift通天遁地]七、數據與安全-(8)創建普通PDF文檔和加密PDF文檔

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

臨時 resources 文件路徑 try rom atomic ecs rect warning

本文將演示使用開源類庫實現創建普通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 }

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