2016-08-14 2 views
0

Я создаю pdf в моем приложении ios9 и хотел бы сохранить его в iBooks с помощью UIActivityViewController. К сожалению, с кодом настоящее время я использую (в предположении, что все варианты использования:Как сохранить файл PDF, созданный в моем приложении, в iBooks с помощью UIActivityViewController?

applicationActivities: nil 

за то, что я могу сделать с этим файлом будет отображаться) только «сообщение» и «Почта» пунктов обнаружиться. Я не исключаю никаких действий, поэтому гипотетически UIActivityTypeOpenInIBooks должен проявляться просто отлично. Тем не менее, я не могу получить iBooks или что-то еще, кроме сообщений и почты. (Для дальнейшего использования я буду ссылаться на этот результат как результат A) Есть ли другой рекомендуемый способ сделать это? код я использую ниже:

// creating pdf image from the UIView 
    let pdf = self.getPDFImageFromDrawingView() 

    let activityViewController = UIActivityViewController(activityItems: [pdf], applicationActivities: nil) //should include any and all available activities right? 

    self.presentViewController(activityViewController, animated: true, completion: nil) 

Есть ли что-то очевидно, я забыл? Как включить iBooks в качестве опции для сохранения файлов?

EDIT:

В отладке этот вопрос, я сохранил содержание UIView как JPG и в виде файла PDF. Когда я использую ТОЛЬКО сгенерированного UIImage как таковой:

(результат B)

let image = self.getUIImageFromDrawingView() // generate a UIImage object 
    let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil) 
    self.presentViewController(activityViewController, animated: true, completion: nil) 

все возможные варианты показать, в том числе открыть в интерактивные книги (YES Но мне нужно много-высокое разрешение изображения! генерируется путем создания PDF)

Когда я добавляю ОБА изображения и PDF к activityItems (как, например:.

(результат C)

let image = self.getUIImageFromDrawingView() // UIImage 
let pdf = self.getPDFImageFromDrawingView() //produces an NSData object 
let activityViewController = UIActivityViewController(activityItems: [image, pdf], applicationActivities:nil) 

), я получаю больше возможностей, то первоначальные почты и сообщений опции - как FB, Pinterest и Evernote - но не интерактивные книги.

Наконец, когда я возвращаюсь к использованию только PDF-файла, у меня такие же вещи, как и раньше, - только почта и сообщения. Что может быть причиной этого? (BTW, интересно, если не бесполезно в стороне - при использовании как JPG, так и PDF-файлов и тестирования приложенияActivities with Mail - я получаю письмо в формате jpg и pdf, как и ожидалось. Поэтому файлы генерируются, как ожидалось).

Что может быть причиной этого странного поведения?

EDIT 2:

Я думал, что может быть проблема в том, что я использовал NSData для отправки PDF. Итак, я сохранил объект как NSURL и использовал его. Я получил тот же результат, что и в (C) выше - больше вариантов, а затем просто сообщений и почты, но нет iBooks. Этот результат пришел с использованием комбинации UIImage + NSURL, и при использовании только NSURL. Когда я использовал UIImage один, у меня было много вариантов, как в предыдущей ситуации, включая iBooks.

ответ

0

Я пробовал это каждый путь и не мог заставить его работать с UIActivityController. Однако, он работал как шарм, когда я использовал UIDocumentInteractionController:

let pdfData = self.getPDFasNSData() // get the NSData object 
    let fileURL = self.getCurrentPDFURLName() //get the NSURL 

    self.docController = UIDocumentInteractionController(URL: fileURL) 

    if (fileURL != nil) 
    { 
     pdfData.writeToURL(fileURL, atomically: true);   
     self.docController.presentOptionsMenuFromBarButtonItem(self.organizeBarButton, animated: true) 
    } 

Теперь опция «открыть в интерактивные книги» показывает вверх.

Смежные вопросы