1

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

4

1 回答 1

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
}
于 2015-11-09T20:11:53.933 回答