使用 .dataRepresentation() 为 UIActivityViewController 加载 PDF
Issue loading PDF for UIActivityViewController with .dataRepresentation()
我认为我有一个简单的视图控制器来显示预加载的 PDF 文件。 PDF 的路径由先前的控制器传递到 var pdfPath。
我有一个 action/share 按钮,我正在尝试使用 PDFDocument.dataRepresentation() 来共享和打印 PDF。根据多个在线来源,它 应该 可以工作,但我收到一个奇怪的错误:
[Unknown process name] Failed to load
/System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF
代码:
import UIKit
import PDFKit
class PDFViewController: UIViewController {
@IBOutlet weak var ActionBarButton: UIBarButtonItem!
var pdfPath: String? = nil
override func viewDidLoad() {
super.viewDidLoad()
let pdfView = PDFView(frame: self.view.bounds)
self.view.addSubview(pdfView)
pdfView.autoScales = true
if let path = pdfPath {
let fileURL = Bundle.main.url(forResource: path, withExtension: "pdf")
pdfView.document = PDFDocument(url: fileURL!)!
}
}
@IBAction func ActionButtonPressed(_ sender: UIBarButtonItem) {
print("ActionButtonPressed():")
if let path = pdfPath {
let fileURL = Bundle.main.url(forResource: path, withExtension: "pdf")
let pdfDocument = PDFDocument(url: fileURL!)
guard let data = pdfDocument?.dataRepresentation() else {return}
let activityController = UIActivityViewController(activityItems: [data], applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)
}
}
如果有人知道为什么这不起作用的答案,我将不胜感激。
您可以传递文件的 URL 而不是传递数据,UIActivityViewController
将相应地识别并显示共享选项。
let activityController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
我认为我有一个简单的视图控制器来显示预加载的 PDF 文件。 PDF 的路径由先前的控制器传递到 var pdfPath。
我有一个 action/share 按钮,我正在尝试使用 PDFDocument.dataRepresentation() 来共享和打印 PDF。根据多个在线来源,它 应该 可以工作,但我收到一个奇怪的错误:
[Unknown process name] Failed to load /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF
代码:
import UIKit
import PDFKit
class PDFViewController: UIViewController {
@IBOutlet weak var ActionBarButton: UIBarButtonItem!
var pdfPath: String? = nil
override func viewDidLoad() {
super.viewDidLoad()
let pdfView = PDFView(frame: self.view.bounds)
self.view.addSubview(pdfView)
pdfView.autoScales = true
if let path = pdfPath {
let fileURL = Bundle.main.url(forResource: path, withExtension: "pdf")
pdfView.document = PDFDocument(url: fileURL!)!
}
}
@IBAction func ActionButtonPressed(_ sender: UIBarButtonItem) {
print("ActionButtonPressed():")
if let path = pdfPath {
let fileURL = Bundle.main.url(forResource: path, withExtension: "pdf")
let pdfDocument = PDFDocument(url: fileURL!)
guard let data = pdfDocument?.dataRepresentation() else {return}
let activityController = UIActivityViewController(activityItems: [data], applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)
}
}
如果有人知道为什么这不起作用的答案,我将不胜感激。
您可以传递文件的 URL 而不是传递数据,UIActivityViewController
将相应地识别并显示共享选项。
let activityController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)