分享 pdf 文档 .Swift
Share pdf document .Swift
我正在尝试共享我在 pdfView 中打开的 pdf 文档。但是由于某种原因 activityViewController 是空的,我无法将文件发送到某处。
请告诉我如何修复我的代码!
我的代码ViewController
pdfView.swift
import UIKit
import PDFKit
var nameFile:String?
var titleChapter:String?
class pdfView: UIViewController {
@IBOutlet weak var pdfDocView: PDFView!
// Share doc
@IBAction func shareDocAction(_ sender: UIBarButtonItem) {
let path = Bundle.main.path(forResource: nameFile, ofType:"pdf")
let pdfDocument = PDFDocument(url: URL(fileURLWithPath: path!))
var filesToShare = [Any]()
filesToShare.append(pdfDocument!)
let activityViewController = UIActivityViewController(activityItems: filesToShare , applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
present(activityViewController, animated: true, completion: nil)
}
//Pdf view
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = titleChapter
navigationController?.navigationBar.barTintColor = .white
//name Documents for view
if let path = Bundle.main.path(forResource: nameFile, ofType:"pdf") {
if let pdfDocument = PDFDocument(url: URL(fileURLWithPath: path)) {
pdfDocView.displayMode = .singlePageContinuous
pdfDocView.autoScales = true
pdfDocView.displayDirection = .vertical
pdfDocView.document = pdfDocument
pdfDocView.canZoomIn()
pdfDocView.canZoomOut()
}
}
}
}
我这样解决了我的问题
// Share doc
@IBAction func shareDocAction(_ sender: UIBarButtonItem) {
let path = Bundle.main.path(forResource: nameFile, ofType:"pdf")
let fileURL = URL(fileURLWithPath: path!)
// Create the Array which includes the files you want to share
var filesToShare = [Any]()
// Add the path of the file to the Array
filesToShare.append(fileURL)
// Make the activityViewContoller which shows the share-view
let activityViewController = UIActivityViewController(activityItems: filesToShare, applicationActivities: nil)
// Show the share-view
self.present(activityViewController, animated: true, completion: nil)
}
您还可以使用 dataRepresentation
共享 PDFDocument,如下所示:
func sharePDF(_ filePDF: PDFDocument) {
if let pdfData = filePDF.dataRepresentation() {
let objectsToShare = [pdfData]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = self.button
self.present(activityVC, animated: true, completion: nil)
}
}
更简洁的代码
// Share doc
func shareDocAction() {
let path = Bundle.main.path(forResource: nameFile, ofType: "pdf")
let fileURL = URL(fileURLWithPath: path!)
// Make the activityViewContoller which shows the share-view
let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
// Show the share-view
self.present(activityViewController, animated: true)
}
我正在尝试共享我在 pdfView 中打开的 pdf 文档。但是由于某种原因 activityViewController 是空的,我无法将文件发送到某处。 请告诉我如何修复我的代码!
我的代码ViewController
pdfView.swift
import UIKit
import PDFKit
var nameFile:String?
var titleChapter:String?
class pdfView: UIViewController {
@IBOutlet weak var pdfDocView: PDFView!
// Share doc
@IBAction func shareDocAction(_ sender: UIBarButtonItem) {
let path = Bundle.main.path(forResource: nameFile, ofType:"pdf")
let pdfDocument = PDFDocument(url: URL(fileURLWithPath: path!))
var filesToShare = [Any]()
filesToShare.append(pdfDocument!)
let activityViewController = UIActivityViewController(activityItems: filesToShare , applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
present(activityViewController, animated: true, completion: nil)
}
//Pdf view
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = titleChapter
navigationController?.navigationBar.barTintColor = .white
//name Documents for view
if let path = Bundle.main.path(forResource: nameFile, ofType:"pdf") {
if let pdfDocument = PDFDocument(url: URL(fileURLWithPath: path)) {
pdfDocView.displayMode = .singlePageContinuous
pdfDocView.autoScales = true
pdfDocView.displayDirection = .vertical
pdfDocView.document = pdfDocument
pdfDocView.canZoomIn()
pdfDocView.canZoomOut()
}
}
}
}
我这样解决了我的问题
// Share doc
@IBAction func shareDocAction(_ sender: UIBarButtonItem) {
let path = Bundle.main.path(forResource: nameFile, ofType:"pdf")
let fileURL = URL(fileURLWithPath: path!)
// Create the Array which includes the files you want to share
var filesToShare = [Any]()
// Add the path of the file to the Array
filesToShare.append(fileURL)
// Make the activityViewContoller which shows the share-view
let activityViewController = UIActivityViewController(activityItems: filesToShare, applicationActivities: nil)
// Show the share-view
self.present(activityViewController, animated: true, completion: nil)
}
您还可以使用 dataRepresentation
共享 PDFDocument,如下所示:
func sharePDF(_ filePDF: PDFDocument) {
if let pdfData = filePDF.dataRepresentation() {
let objectsToShare = [pdfData]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = self.button
self.present(activityVC, animated: true, completion: nil)
}
}
更简洁的代码
// Share doc
func shareDocAction() {
let path = Bundle.main.path(forResource: nameFile, ofType: "pdf")
let fileURL = URL(fileURLWithPath: path!)
// Make the activityViewContoller which shows the share-view
let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
// Show the share-view
self.present(activityViewController, animated: true)
}