大きく3つのアプローチがある
CoreGraphicsを使用する
PDFKitのPDFThumbnailViewを使用する
PDFKitのPDFViewを使用する
それぞれの特徴
table: 特徴
アプローチ 方式 ズームの可否 描画速度
CoreGraphics CGContextに直接描画 不可(描画範囲を指定して再描画) 速い
PDFKit Thumbnail UIImageとして取得 不可(描画範囲を指定して再取得) 速い
PDFView UIViewとして取得 可 遅い(読み込み中は低解像度のサムネイルが差し込まれる)
table:特徴
アプローチ テキスト選択 ドキュメント iOS Ver
SafariのようにPDFをScrollViewで表示したいだけ
PDFKitを利用
PDFのページ画像が欲しいだけ
PDFKitのPDFThumbnailViewで欲しいサイズのサムネイルをUIImageとして取得する
テキストを選択できるようにしたい
PDFKitを利用
(i文庫HDなどは自前で選択UIを実装している(多分))
それぞれのアプローチで動作するサンプルコード (Playground)
CoreGraphics
PDFThumbnailView
code:swift
import PlaygroundSupport
import UIKit
import PDFKit
guard let doc = PDFDocument(url: url) else { fatalError() }
guard let page = doc.page(at: 0) else { fatalError() }
let image = page.thumbnail(of: CGSize(width: 1000, height: 1000), for: PDFDisplayBox.trimBox)
let view = UIImageView(image: image)
view.backgroundColor = UIColor.systemGray
view.contentMode = .scaleAspectFit
PlaygroundPage.current.liveView = view
PDFView
code:swift
import PlaygroundSupport
import UIKit
import PDFKit
guard let doc = PDFDocument(url: url) else { fatalError() }
let view = PDFView()
view.document = doc
PlaygroundPage.current.liveView = view