เปิดไฟล์ PDF ใน iOS ใช้ WKWebView (UIWebView Deprecated แล้ว)
เตรียมการ
- เพิ่ม WKWebView ใน Storyboard
- เชื่อม IBOutlet:
@IBOutlet weak var webView: WKWebView! - Import WebKit:
import WebKit
วิธีที่ 1: โหลด PDF จาก URL
func loadPDFFromURL() {
guard let url = URL(string: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf") else { return }
let request = URLRequest(url: url)
webView.load(request)
}
วิธีที่ 2: โหลด PDF จาก Local Bundle
func loadPDFFromBundle() {
guard let pdfURL = Bundle.main.url(forResource: "document", withExtension: "pdf") else {
print("PDF not found in bundle")
return
}
let request = URLRequest(url: pdfURL)
webView.load(request)
}
วิธีที่ 3: ใช้ PDFKit (iOS 11+) - แนะนำ
PDFKit ให้คุณสมบัติมากกว่า: Zoom, Search, Thumbnail, Annotation
import PDFKit
func showPDFWithPDFKit() {
guard let pdfURL = Bundle.main.url(forResource: "document", withExtension: "pdf"),
let document = PDFDocument(url: pdfURL) else { return }
let pdfView = PDFView(frame: view.bounds)
pdfView.document = document
pdfView.autoScales = true
pdfView.displayMode = .singlePageContinuous
pdfView.displayDirection = .vertical
view.addSubview(pdfView)
}
Info.plist สำหรับโหลดจากเว็บ
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
หมายเหตุ: ควรระบุ Domain เฉพาะเจาะจงแทน NSAllowsArbitraryLoads เพื่อความปลอดภัย
เปรียบเทียบ
| คุณสมบัติ | WKWebView | PDFKit |
|---|---|---|
| Zoom/Pan | Basic | Advanced |
| Search Text | ไม่มี | มี |
| Thumbnail | ไม่มี | มี |
| Annotation | ไม่มี | มี |
| Performance | ดี | ดีกว่า (Native) |