iOS로 PDF 표시

8053 단어 SwiftiOS
iOS로 PDF를 표시하는 방법을 몰라서 노트를 썼어요
//: Playground - noun: a place where people can play

import PlaygroundSupport
import UIKit
import CoreGraphics

class PDFView: UIView {
    var page: CGPDFPage?

    override func draw(_ rect: CGRect) {
        guard let page = page else { return }

        guard let context = UIGraphicsGetCurrentContext() else {
            fatalError()
        }

        context.translateBy(x: 0, y: rect.size.height)
        context.scaleBy(x: 1.0, y: -1.0)

        let box = page.getBoxRect(.mediaBox)

        let xScale = rect.size.width / box.size.width
        let yScale = rect.size.height / box.size.height
        let scale = min(xScale, yScale)

        let tx = (rect.size.width - box.size.width * scale) / 2
        let ty = (rect.size.height - box.size.height * scale) / 2

        context.translateBy(x: tx, y: ty)
        context.scaleBy(x: scale, y: scale)
        context.drawPDFPage(page)
    }
}

guard let url = NSURL(string: "http://devstreaming.apple.com/videos/wwdc/2016/402h429l9d0hy98c9m6/402/402_whats_new_in_swift.pdf"), let doc = CGPDFDocument(url) else {
    fatalError()
}

let pageCount = doc.numberOfPages
let number = 1
let page = doc.page(at: number)

let view = PDFView(frame: UIScreen.main.bounds)
view.backgroundColor = UIColor.lightGray
view.page = page

PlaygroundPage.current.liveView = view

위의 코드가 Playground에서 검증되었습니다.PlaygroundPage.current.liveView = view에서는 Playground에서도 View를 확인할 수 있습니다.

이번에는 한 페이지의 표시로 doc.page(at: number)로 페이지를 전환할 수 있기 때문에 PDFViewer 같은 응용 프로그램도 간단하게 제작할 수 있다

좋은 웹페이지 즐겨찾기