PDF 틀 만들기
PDFView는 PDFKit을 이용해 만들어 지기 때문에 storyboard에서 만들때는 VIew를 가져와서 class를 PDFView라고 따로 명시 해주어야 한다.
그래서 나는 storyboard에 View를 올리고 이 View를 PDFVIew의 superView로 만들어 진행하였다.
PDFView 구현
1. PDFKit을 import 하고
import PDFKit
2. PDFView의 superVIew를 연결하고
class PDFViewController: UIViewController {
@IBOutlet weak var supView: UIView!
3. PDFView를 선언해준다.
var pdfView: PDFView!
4. PDFView를 초기화 해준 후 supView에 넣어준다.
override func viewDidLoad() {
super.viewDidLoad()
self.pdfView = PDFView()
self.supView.addSubview(pdfView)
5. PDFView의 사이즈는 superView에 맞추면 되기 떄문에
pdfView.frame = supView.bounds
PDFView 세팅
URL에서 pdf 문서를 가져오는 경우만 정리 하려 한다.
1. PDFDocument를 이용하여 pdf를 생성한다.
let doc = PDFDocument(url: URL(string: "url")!)
2. pdfView에 보여줄 pdf를 세팅해준다.
pdfView.document = doc
3. pdfView 옵션을 세팅해준다.
// 하나의 페이지를 연속적으로 보여준다.
pdfView.displayMode = .singlePageContinuous
// 페이지 구분을 좁혀준다.
pdfView.displaysPageBreaks = false
// 페이지 방향 설정
pdfView.displayDirection = .vertical
// 페이지 확대, 축소 값 설정
pdfView.maxScaleFactor = 10.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
- displayMode
singlePage: PDF가 여러 페이지가 있더라도 하나의 페이지만 보여진다.
singlePageContinous: 가장 일반적인 형태로 문서가 단일페이지로 연속적으로 보여진다.
twoUp: 두개의 페이지만 옆(가로)으로 보여진다.
twoUpContinuous: 두 줄 씩 전체 페이지가 보여진다.
참고:
https://developer.apple.com/documentation/pdfkit/pdfdisplaymode
4. 처음 PDF가 로드되어 보여질 때 스케일을 지정할 수 있다. (선택사항)
// 첫페이지에 보여지는 사각 영역을 이용하여 pdfView의 scale을 지정한다.
if let document = pdfView.document, let page = document.page(at: 0) {
let pageBounds = page.bounds(for: pdfView.displayBox)
pdfView.scaleFactor = (pdfView.bounds.width * 1.5) / pageBounds.width
}
참고:
https://developer.apple.com/documentation/pdfkit/pdfpage/1504213-bounds
https://developer.apple.com/documentation/pdfkit/pdfdisplaybox
잘 이해가 안갔는데 오히려 MS문서를 보고 이해가 되었다.
https://docs.microsoft.com/ko-kr/dotnet/api/pdfkit.pdfview.displaybox?view=xamarin-ios-sdk-12
https://docs.microsoft.com/ko-kr/dotnet/api/pdfkit.pdfdisplaybox?view=xamarin-ios-sdk-12
이렇게 실행하면 PDF가 보인다~
'iOS > iOS' 카테고리의 다른 글
Local DB 결정 시 참고 사이트 (0) | 2022.04.22 |
---|---|
UILabel에 이미지 넣기 (0) | 2022.04.20 |
image scrolling(paging) & zoom (0) | 2022.04.04 |
Firebase DynamicLinks (0) | 2022.04.01 |
Delegate 사용 (0) | 2022.03.28 |
댓글