일하다가 요건으로 pdf 파일을 넘겨줘야하는 상황이 있었다.
애플에서 미리 만들어 놓은 함수를 통해 간단히 파일을 끌어올 수 있었다.
나의 기억력은 나쁘기 때문에 까먹으면 다음에 써먹으려고 적는다...
import UniformTypeIdentifiers
import PDFKit
class VC: UIViewController {
let filePickerViewController = UIDocumentPickerViewController(forOpeningContentTypes: [UTType.pdf], asCopy: true)
...
func someThingEvent() {
filePickerViewController.delegate = self
filePickerViewController.allowsMultipleSelection = false
filePickerViewController.shouldShowFileExtensions = true
self.present(filePickerViewController, animated: true)
}
}
extension VC: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
let bookmarkData = try? urls.first?.bookmarkData()
if let data = bookmarkData {
var stale = false
if let url = try? URL(resolvingBookmarkData: data, bookmarkDataIsStale: &stale),
stale == false,
url.startAccessingSecurityScopedResource() {
var error: NSError?
NSFileCoordinator().coordinate(readingItemAt: url, error: &error) { readUrl in
if let data = try? Data(contentsOf: readUrl) {
guard let doc = PDFDocument(data: data) else {
url.stopAccessingSecurityScopedResource()
return
}
// 파일 명은 url.lastPathComponent
// pdf파일은 doc
... pdf 데이터로 할 것들...
}
}
url.stopAccessingSecurityScopedResource()
}
}
}
}
'Swift' 카테고리의 다른 글
[Swift] OSLog 사용법 (0) | 2023.03.30 |
---|---|
[Swift] SkeletonView 사용법 (0) | 2023.03.28 |
[Swift] UIImagePickerController 의 사용법 (0) | 2023.03.24 |
[Swift] KeyChain 사용법 (0) | 2023.02.15 |
[Swift] UITableView Cell에서 TapGesture가 안될 때 (0) | 2023.02.06 |