我制作了一个pdf创建者应用程序。创建pdf文件后,我想在tableview
上显示创建的文件。我创建了Tableview Controller和DocumentDirectoryTableTableViewController
。毕竟,我不知道怎么做。
我发现了this和this个问题但我无法在我的代码中实现它。
最好添加我的代码来保存文件:
// 5. Save PDF file
let path = "/MyApp/PdfFiles/MyPDF.pdf"
pdfData.write(toFile: path, atomically: true)
print("open \(path)") // command to open the generated file
更新 我也可以通过此功能获取App Directory并使用它:
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
return documentsDirectory
}
和
let path = "\(getDocumentsDirectory())MyApp.pdf"
答案 0 :(得分:1)
如果您正在尝试存储pdf文件NSData
,并且您希望用户访问该文件,则可以使用以下命令编写:
func writePDF(data: NSData, to Name:String) -> Bool {
let pdfData:NSData = data
let pdfPaths:[String] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
var pdfPath = pdfPaths[0]
pdfPath.append("_\(Name).pdf")
let result:Bool = pdfData.write(toFile: pdfPath, atomically: true)
return result
}
如果您希望在应用程序中以编程方式阅读pdf文件,并将其存储在上述路径中。可以使用以下方法完成:
func readPDF(Name: String) {
let pdfPaths:[String] = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
var pdfPath = pdfPaths[0]
pdfPath.append("_\(Name).pdf")
if let pdfData:NSData = NSData(contentsOfFile: pdfPath) { // verifying pdf exists in this path
let documentController: UIDocumentInteractionController = UIDocumentInteractionController(url: URL(fileURLWithPath: pdfPath))
documentController.delegate = self
documentController.presentPreview(animated: true)
}
}
// the below delegate function for `UIDocumentInteractionController` is necessary for it to present in the current `UIViewController`
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return self
}