如何使用UIActivityViewController将我的应用程序中创建的PDF文件保存到iBooks?

时间:2016-08-14 16:54:16

标签: swift ios9 xcode7 uiactivityviewcontroller ibooks

我正在ios9应用中创建 pdf ,并希望能够使用UIActivityViewController将其保存到iBooks。不幸的是,使用我目前使用的代码(假设所有选项都使用:

   applicationActivities: nil 

我可以用文件显示的内容)只显示" Message"和" Mail"物品出现了。我不排除任何活动,所以假设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作为保存文件的选项?

编辑:

在调试此问题时,我已将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)

显示所有可能的选项,包括在iBooks中打开(是的!但我需要通过创建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 - 但没有iBooks。

最后,当我回到仅使用PDF时,我和以前一样 - 只有邮件和消息。可能是什么导致了这个? (顺便说一句,有趣的是,如果不是无用的话 - 当使用JPG和PDF,并使用Mail测试applicationActivities时 - 我会收到jpg和pdf的电子邮件,正如预期的那样。所以文件按预期生成。)< / p>

什么可能导致这种奇怪的行为?

编辑2:

我认为可能是问题在于我使用NSData发送pdf。所以,我将对象保存为NSURL并使用它。我得到了与上面的(C)相同的结果 - 更多选项,然后只是消息和邮件,但没有iBooks。当使用单独的NSURL时,使用UIImage + NSURL组合和AND会产生这种结果。当我单独使用UIImage时,我有很多选择,就像之前的情况一样,包括iBooks。

1 个答案:

答案 0 :(得分: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)
     }

现在显示“在iBooks中打开”选项。