分享 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)
}