Создание и хранение 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") } 
  • UIButton в UITableViewCell перескакивает, когда ширина UITableView анимирована
  • UITableViewCell высота анимации вместе с контентом
  • Как настроить UIAlertController с UITableView или имеется ли какой-либо элемент управления по умолчанию, подобный этому пользовательскому интерфейсу в приложении «Страницы»?
  • Объект NSFetchedResultsController удален из UITableView при обновлении
  • Как реализовать бесконечную прокрутку UITableView
  • Как заставить строку UITableView динамически расти с измененным пользователем контентом
  • UITableViewCell ведет себя по-разному в iOS7 и iOS8-симуляторе, используя xcode6 beta6 interface builder
  • Как проверить ячейку в UItableview для отображения изображения
  • IOS Self Sizing UITableViewCell с автоматической компоновкой не работает в первый раз
  • Открыть программные кнопки редактирования UITableView программно
  • XCode 7.1.1. Просмотр содержимого TableViewCell уже, чем ячейка
  • Interesting Posts

    Изменение высоты строки UITableView без отклонения клавиатуры

    3 взаимосвязанных ползунка

    Приложение Xcode – Sharing – с пакетом обновления приложения с кодом завершения 1

    Вставить заголовок заголовка UITableView сверху при создании заголовка в раскадровке

    Что я делаю неправильно с allowFractionalUnits на NSDateComponentsFormatter?

    Менеджер Firebase Connection должен возвращать только один результат

    Ограничение анимации Autolayout не поддерживает анимацию

    Неопределенная ошибка при выполнении команды для отображения плагинов PhoneGap (iOS)

    фоновое аудиозапись iOS после вызова

    ПодготовитьToRecord crashing

    iOS – Как создать процесс входа в систему с использованием keychain / Core Data?

    Вытягивание данных из CMSampleBuffer для создания глубокой копии

    Использование C ++ для доступа к папке Documents на iOS

    Не удалось импортировать ошибку заголовка заголовка

    Как нажать viewController перед тем, как отклонить контроллер модального просмотра с помощью раскадровки?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.