Ios 在Swift 4中使用UIActivityViewController共享pdf文件
我正在使用UIActivityViewController共享PDF文件:Ios 在Swift 4中使用UIActivityViewController共享pdf文件,ios,swift,uiactivityviewcontroller,Ios,Swift,Uiactivityviewcontroller,我正在使用UIActivityViewController共享PDF文件: let pdfFilePath = URL(string: "https://www.tutorialspoint.com/swift/swift_tutorial.pdf") let pdfData = NSData(contentsOf: pdfFilePath!) let activityVC = UIActivityViewController(activityItems: [pdfData!], applica
let pdfFilePath = URL(string: "https://www.tutorialspoint.com/swift/swift_tutorial.pdf")
let pdfData = NSData(contentsOf: pdfFilePath!)
let activityVC = UIActivityViewController(activityItems: [pdfData!], applicationActivities: nil)
present(activityVC, animated: true, completion: nil)
将显示以下结果:
我想要的是显示更多功能,如“复制到书本”和“添加到笔记”,如下所示:
如果您想共享服务器上的pdf文件,并且您有一个URL。然后首先在设备中下载该文件,然后将该文件共享给任何其他人 如果您在代码中使用
Alamofire
,则存在代码
Stape 1
import Alamofire
Stape 2
在类中添加此函数:-
func downloadPdf(downloadUrl : String, fileName: String, completionHandler:@escaping(String, Bool)->()){
let destinationPath: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0];
let fileURL = documentsURL.appendingPathComponent("\(fileName).pdf")
return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
}
print(downloadUrl)
Alamofire.download(downloadUrl, to: destinationPath)
.downloadProgress { progress in
}
.responseData { response in
print("response: \(response)")
switch response.result{
case .success:
if response.destinationURL != nil, let filePath = response.destinationURL?.absoluteString {
completionHandler(filePath, true)
}
break
case .failure:
completionHandler("", false)
break
}
}
}
Stape 3
在共享按钮上添加此操作
@IBAction func btnShareAction(_ sender: UIButton) {
let myURL = "http://www.demo.com/demo.pdf" // change this with your URL
self.downloadPdf(downloadUrl : myURL, fileName: "invoice") { (localFileUrl, bool) in
let fileURL = NSURL(fileURLWithPath: localFileUrl)
let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
}
}
尝试将
pdfFilePath
而不是pdfData
传递到活动视图控制器。我尝试过,但id无效。当活动控制器打开默认邮件应用且未在其中附加pdf时,我遇到问题。它也适用于gmail应用程序和outlook。请提供建议。我真的被卡住了。