PDFKit은 공식 문서를 보면 PDF데이터를 보여주거나 작성 및 검색을 할 수 있다고 나와있습니다.
iOS 11 이상부터 사용이가능하기에 이전 버전을 지원하는 앱에서는 사용이 불가능합니다.
https://developer.apple.com/documentation/pdfkit/pdfdocument
기존 프로젝트에 약관을 확인하려는 용도로 WebKit을 사용하여 html파일을 로드하는 방식으로 사용을 하고 있었습니다.
Server 에서 pdf로 보내도 WebKit에서 변환하여 잘 보여주고 있는데요.
PDFKit을 사용하여 다양한 방식으로 표시를 해보겠습니다.
새로운 xcode 프로젝트를 PDFKitExample이라는 이름으로 만들어줍니다.
그리고 Main.storyboard의 ViewController에 UIView를 만들어주는데 class를 'PDFView'로 연결해줍니다.
PDFView는 PDFKit에서 지원하는 UIView를 상속하여 만들어진 View이고 PDF파일을 보여주는 역할을 합니다.
ViewController로 돌아와 PDFKit을 import하고 조금전에 만든 PDFView 를 pdfView 와 연결합니다.
import UIKit
import PDFKit
class ViewController: UIViewController {
@IBOutlet weak var pdfView: PDFView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
이제 pdfView에 pdf파일을 연결하는 함수를 작성해 줍니다.
PDFDocument라는 Parameter를 받아서 pdfView와 연결해줍니다.
autoScales 는 뷰의 크기가 조정되거나 회전 될 때 배율이 자동으로 변경되는 모드입니다.
true, false 로 구성되어있습니다.
displayMode는 문서 표시 모드 이며 기본값은 singlePageContinuous로 단일 페이지 방식입니다.
singlePage, singlePageContinuous, twoUp, twoUpContinuous 모드가 있습니다.
displayDirection은 vertical과 horizontal로 구성되어있고 기본값은 vertical 모드 입니다.
마지막으로 document라는 속성에 PDFDocument를 연결하면 됩니다.
func loadPdfView(document: PDFDocument) {
pdfView.autoScales = true
pdfView.displayMode = .singlePageContinuous
pdfView.displayDirection = .vertical
pdfView.document = document
}
url을 받아서 PDFDocument로 변환하여 loadPdfView함수를 호출하도록 처리 했습니다.
local방식과 web방식을 선택하여 사용하면 되고, 아래 코드를 ViewDidLoad 함수에 넣어서 실행해보겠습니다.
// local Sample Pdf
// let url = Bundle.main.url(forResource: "sample", withExtension: "pdf")
// web Sample Pdf
let url = "http://www.africau.edu/images/default/sample.pdf"
if let url = URL(string: urlString),
let document = PDFDocument(url: url) {
loadPdfView(document: document)
}
WebView처럼 pdf파일을 잘 불러온것을 확인할 수 있습니다.
위처럼 간단하게 하나의 pdf파일을 로드해서 표시를 해봤습니다.
다음글에서는 pdf파일이 여러개 있을때 하나로 표시하는 방법을 알아보도록 하겠습니다.
'프로그래밍 > iOS' 카테고리의 다른 글
[Swift] PDFKit 사용하기 #3 PageNumber 표시 (0) | 2021.05.21 |
---|---|
[Swift] PDFKit 사용하기 #2 다중 PDF (0) | 2021.05.18 |
[XCode] xxx.a 라이브러리 병합 (2) | 2021.03.16 |
[XCode] ENABLE_BITCODE (2) | 2020.08.26 |
[Apple] 던스 번호(D-U-N-S Number) 받기 (0) | 2020.07.03 |