★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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 }