Я хотел бы сохранить файл PDF, полученный из tableView, в моем локальном хранилище. В настоящее время прямо сейчас он сохраняется в каталоге разработчика. Но я хотел бы сохранить его во внутренней директории хранения пользователя, поскольку мое требование заключается в том, чтобы он был доступен и просматривался пользователем. PDF содержит ежемесячный отчет пользователя. Я хотел бы сохранить PDF на внутреннем хранилище устройства. Я разработал некоторые вещи. Но это, похоже, не работает. Пожалуйста, предложите мне лучшее решение и укажите, где я не так делаю?
// Export pdf from UITableView and save pdf in drectory and return pdf file path
func exportAsPdfFromTable() -> String {
let originalBounds = self.bounds
self.bounds = CGRect(x:originalBounds.origin.x, y: originalBounds.origin.y, width: self.contentSize.width, height: self.contentSize.height)
let pdfPageFrame = CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.contentSize.height)
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, pdfPageFrame, nil)
UIGraphicsBeginPDFPageWithInfo(pdfPageFrame, nil)
guard let pdfContext = UIGraphicsGetCurrentContext() else { return "" }
self.layer.render(in: pdfContext)
UIGraphicsEndPDFContext()
self.bounds = originalBounds
// Save pdf data
return self.saveTablePdf(data: pdfData)
}
// Save pdf file in document directory
func saveTablePdf(data: NSMutableData) -> String {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
// let path = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let docDirectoryPath = paths[0]
let pdfPath = docDirectoryPath.appendingPathComponent("Report.pdf")
if data.write(to: pdfPath, atomically: true) {
return pdfPath.path
} else {
return ""
}
}