Создание и хранение PDF-документа программно с помощью Swift для iOS

У меня есть приложение, которое может просматривать PDF-файл, который уже хранится в проекте. Я хочу, чтобы иметь возможность создать новый PDF-документ и сохранить его в каталоге приложения для последующего просмотра в уже существующем средстве просмотра. PDF будет создан из массива var todoList: [String] = [] который отображается в UITableView . Я знаю, чтобы создать PDF, мне нужно создать имя файла, путь и каталог. Я не знаю, как это сделать. Я видел онлайн-ссылку на URL-адрес и URL-запрос, но я не уверен, что это правильный путь для того, что я хочу делать. Может кто-нибудь, пожалуйста, дайте мне несколько советов и рекомендаций? Все, что я могу найти, это Objective-C.

2 Solutions collect form web for “Создание и хранение PDF-документа программно с помощью Swift для iOS”

Я использовал этот код для создания и сохранения файла (используя HTML)

 func createPDF() { let html = "<b>Hello <i>World!</i></b> <p>Generate PDF file from HTML in Swift</p>" let fmt = UIMarkupTextPrintFormatter(markupText: html) // 2. Assign print formatter to UIPrintPageRenderer let render = UIPrintPageRenderer() render.addPrintFormatter(fmt, startingAtPageAtIndex: 0) // 3. Assign paperRect and printableRect let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi let printable = CGRectInset(page, 0, 0) render.setValue(NSValue(CGRect: page), forKey: "paperRect") render.setValue(NSValue(CGRect: printable), forKey: "printableRect") // 4. Create PDF context and draw let pdfData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil) for i in 1...render.numberOfPages() { UIGraphicsBeginPDFPage(); let bounds = UIGraphicsGetPDFContextBounds() render.drawPageAtIndex(i - 1, inRect: bounds) } UIGraphicsEndPDFContext(); // 5. Save PDF file let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] pdfData.writeToFile("\(documentsPath)/file.pdf", atomically: true) } 

Затем я загрузил его в UIWebView из каталога документов с помощью этого кода:

 func loadPDF(filename: String) { let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] let filePath = "\(documentsPath)/\(filename).pdf" let url = NSURL(fileURLWithPath: filePath) let urlRequest = NSURLRequest(URL: url) webView.loadRequest(urlRequest) } 

Для Swift 3 :

 createPdf() { // 1. Create Print Formatter with input text. let formatter = UIMarkupTextPrintFormatter(markupText: textView.text) // 2. Add formatter with pageRender let render = UIPrintPageRenderer() render.addPrintFormatter(formatter, startingAtPageAt: 0) // 3. Assign paperRect and printableRect let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi let printable = page.insetBy(dx: 0, dy: 0) render.setValue(NSValue(cgRect: page), forKey: "paperRect") render.setValue(NSValue(cgRect: printable), forKey: "printableRect") // 4. Create PDF context and draw let rect = CGRect.zero let pdfData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfData, rect, nil) for i in 1...render.numberOfPages { UIGraphicsBeginPDFPage(); let bounds = UIGraphicsGetPDFContextBounds() render.drawPage(at: i - 1, in: bounds) } UIGraphicsEndPDFContext(); // 5. Save PDF file let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] pdfData.write(toFile: "\(documentsPath)/new.pdf", atomically: true) print("saved success") } 
  • Черная полоса мигает над UITableView при нажатии на просмотр с помощью «Скрывает нижнюю панель при нажатии» в IB
  • Как оживить перезагрузку таблицыView на UISegmentedControl, нажав кнопку pushviewcontroller
  • Когда в жизненном цикле представления UITableViewCell создает свои выходы / метки / подпункты?
  • Как сделать прокрутку остановки UITableView
  • iOS Today Extension: cellForRowAtIndexPath никогда не вызывал
  • Как отключить режим редактирования в конкретных сотовых ios?
  • iOS8 изменяет высоту динамической ячейки «сейчас», внутреннее содержимое ячейки
  • настройка Заголовок для панели навигации в xcode
  • Извлеките высоту пользовательских прототипов из раскадровки?
  • Почему я получаю разрыв между моим UISearchBar и моим заголовком ячейки UITableView, когда я касаюсь UISearchBar на iOS7?
  • Перерисовка UITableViewCell при вводе / выходе из режима редактирования
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.