웰코발
웰코's iOS
웰코발
전체 방문자
오늘
어제
  • 분류 전체보기 (63)
    • Swift (26)
    • rxSwift (13)
    • SwiftUI (3)
    • iOS (12)
    • 기타 (1)
    • 개발관련 용어정리 (6)
    • 면접준비 (0)
    • 공공데이터 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • SWIFT
  • Coordinator
  • 대기오염통계 현황
  • 측정소정보
  • content_available
  • Observable
  • UI
  • alamofire
  • cell
  • collectionview
  • swiftUI
  • ios
  • delay
  • 디자인
  • rxswift
  • 주제구독
  • uitableview
  • Scroll
  • WKWebView
  • ReactorKit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
웰코발

웰코's iOS

Swift

[Swift] iOS 기기 내 PDF 혹은 파일 첨부 하는 방법

2023. 3. 24. 20:52

일하다가 요건으로 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
    'Swift' 카테고리의 다른 글
    • [Swift] OSLog 사용법
    • [Swift] SkeletonView 사용법
    • [Swift] UIImagePickerController 의 사용법
    • [Swift] KeyChain 사용법
    웰코발
    웰코발
    나의 개발 일지

    티스토리툴바