通过共享表从NSData共享PDF

时间:2015-11-09 12:57:40

标签: swift pdf nsdata ios-sharesheet

PDF文件在Web服务器上生成并作为NSData接收。 Swift能够打印这个NSData对象;但是,通常接受PDF的其他应用程序(如Google云端硬盘)无法在共享表上识别。共享表上显示的唯一选项是打印和复制。

我试过以下无济于事:

let dataProvider = CGDataProviderCreateWithCFData(pdfObject)
let pdf = CGPDFDocumentCreateWithProvider(dataProvider)
return pdf!

根据sbarow的评论,我也尝试了以下内容,但retrievePDFFromDisk函数返回nil:

func writePDFToDisk () {
    var docURL = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last! as NSURL
    docURL = docURL.URLByAppendingPathComponent( "myDocument.pdf")
    pdfObject.writeToURL(docURL, atomically: true)
}

func retrievePDFFromDisk () -> AnyObject {
    let pdf = NSBundle.mainBundle().URLForResource("myDocument", withExtension: "pdf")
    return pdf!
}

如何将这些数据作为PDF正确地公布给共享表中的其他应用程序?

1 个答案:

答案 0 :(得分:1)

成功!见下面的代码:

func writePDFToDisk () {
    var docURL = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last! as NSURL
    docURL = docURL.URLByAppendingPathComponent( "myDocument.pdf")
    pdfObject.writeToURL(docURL, atomically: true)
}

func retrievePDFFromDisk () -> AnyObject {
    var docURL = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last! as NSURL
    docURL = docURL.URLByAppendingPathComponent( "myDocument.pdf")
    return docURL
}

在我的实例中,这可以简化为以下内容:

func getPDFAsFile (pdfData:NSData) -> AnyObject {
    var docURL = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last! as NSURL
    docURL = docURL.URLByAppendingPathComponent( "myDocument.pdf")
    pdfData.writeToURL(docURL, atomically: true)
    return docURL
}