swift - 通过共享表从 NSData 共享 PDF

标签 swift pdf nsdata ios-sharesheet

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

我尝试了以下方法,但没有成功:

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 格式从共享表正确发布到其他应用程序?

最佳答案

成功!参见下面的代码:

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
}

关于swift - 通过共享表从 NSData 共享 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609626/

相关文章:

iphone - 如何将 NSData 字节转换为 NSNumber 或 NSInteger?

ios - 使用 Swift 进行 Firebase Firestore 分页

swift - tableView的目的(_ :objectValueFor:row:)

ios - 禁用编辑文本字段

javascript - pdf生成后如何打开打印对话框?

windows - 在 Windows 上使用 Openoffice 将 ODT 转换为 PDF

特定类的 Swift 协议(protocol)?

java - 如何使用 Apache PDFBox 从按钮中提取标签文本?

iphone - 将 NSData 写入桌面文件

image - 地址簿中人的ImageData(CFDataRef)是什么格式?(Jpeg还是PNG)?或者如何确定?