Selamat siang, saya sajikan untuk Anda terjemahan dari artikel tentang karya PDF di Swift.
Siapa pun yang tertarik, selamat datang ke kucing.
Saya sedang mengerjakan aplikasi yang seharusnya bisa mengunduh file PDF, menyimpannya dan membukanya. Untuk tugas ini, Anda perlu melakukan 3 langkah:
- Unduhtask
- Manajemen file
- Pdfview
Langkah 1. UnduhTaskUntuk mengunduh file melalui URL, Anda harus menggunakan unduhanTask. Juga perlu untuk melacak di mana file kita telah dipindahkan, sehingga pengamat, yang dalam kasus saya adalah
ViewController , harus mendukung
URLSessionDownloadDelegate .
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } @IBAction func downloadButtonPressed(_ sender: Any) { guard let url = URL(string: "https://www.tutorialspoint.com/swift/swift_tutorial.pdf") else { return } let urlSession = URLSession(configuration: .default, delegate: self, delegateQueue: OperationQueue()) let downloadTask = urlSession.downloadTask(with: url) downloadTask.resume() } } extension ViewController: URLSessionDownloadDelegate { func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { print("downloadLocation:", location) } }
Untuk memahami di mana file itu disimpan, cukup cetak output dari variabel
lokasi di konsol Xcode.
Setelah saya mengklik tombol "Unduh", file diunduh dalam waktu kurang dari satu detik dan kemudian dibunuh oleh sistem. Perilaku ini diulangi pada simulator dan pada perangkat nyata.
Langkah 2. Manajemen FileSetiap aplikasi di iOS memiliki lingkungan pengujian sendiri. Di dalamnya ada 3 komponen yang harus diketahui oleh setiap pengembang iOS: Bundle Container, Data Container, dan iCloud Container. Dalam artikel ini, kami hanya akan mempertimbangkan Wadah Data secara lebih rinci, karena kami akan membutuhkannya untuk tugas kami - mengunduh file PDF.

Dengan menggunakan wadah Data, kita dapat mengelola file yang disimpan dari Internet. Di bawah ini saya akan mendaftar properti-properti penting:
- File di dalam Perpustakaan , serta file tmp akan dihapus secara otomatis
- iTunes mencadangkan semua file kecuali Cache, tmp, dan file yang ditunjuk sebagai .isExcludedFromBackup = true . Selama Peninjauan aplikasi, jika Apple menemukan di iTines tersimpan file yang seharusnya tidak ada, kemungkinan besar aplikasi tersebut akan ditolak.
- File yang disimpan harus disimpan dalam Dokumen .
Maka langkah kami selanjutnya adalah menyimpan file dari tmp ke Documents. Inilah yang saya lakukan:
- Saya menyalin nama file pdf
- URL yang dibuat di Dokumen
- Menghapus file dengan nama yang sama untuk menghindari kesalahan penyalinan: "CFNetworkDownload_mdrFNb.tmp" tidak dapat disalin ke "Dokumen" karena item dengan nama yang sama sudah ada.
- Menyalin file ke Dokumen.
extension ViewController: URLSessionDownloadDelegate { func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { print("downloadLocation:", location)
Langkah 3. PDFViewJadi, kami memindahkan file PDF, dan sekarang pengguna memiliki akses ke sana. Sekarang mari kita cari tahu cara membukanya menggunakan PDFView yang dibangun dalam PDFKit, kerangka kerja praktis Apple yang tersedia dengan iOS 11.
Meskipun banyak tutorial PDFKit menggunakan
storyboard untuk membuat PDFView menggunakan properti UIView, ini tidak dapat dilakukan melalui
Xibs . Karena itu, saya akan membuatnya melalui kode.
@IBAction func openPDFButtonPressed(_ sender: Any) { let pdfViewController = PDFViewController() pdfViewController.pdfURL = self.pdfURL present(pdfViewController, animated: false, completion: nil) }
import UIKit import PDFKit class PDFViewController: UIViewController { var pdfView = PDFView() var pdfURL: URL! override func viewDidLoad() { super.viewDidLoad() view.addSubview(pdfView) if let document = PDFDocument(url: pdfURL) { pdfView.document = document } DispatchQueue.main.asyncAfter(deadline: .now()+3) { self.dismiss(animated: true, completion: nil) } } override func viewDidLayoutSubviews() { pdfView.frame = view.frame } }

Voila! Kami mengekstraksi dan membuka file PDF. Saya tahu bahwa format buku ini sedikit berbeda, itulah sebabnya kita akan
melihat PDFKit lebih
terinci di artikel selanjutnya .