swift - 如何给 PDF 数据一个文件名供用户在 Swift 中保存

标签 swift pdf save filenames

我将我的 pdfData 提供给用户保存。他可以保存到文件,制作文件,但是pdf文件的默认名称是:PDF document.pdf。如果可能的话,我想要我自己的文件名。也许我可以在将 pdfData 提供给 UIActivityViewController 之前更改 pdfData 中的文件名?

这是我的代码:

// Create page rect
let pageRect = CGRect(x: 0, y: 0, width: 595.28, height: 841.89) // A4, 72 dpi

// Create PDF context and draw
let pdfData = NSMutableData()

UIGraphicsBeginPDFContextToData(pdfData, pageRect, nil)
UIGraphicsBeginPDFPage()

// From here you can draw page, best make it in a function
PdfErstellung.PdfErstellen(auswahlZeilen, vitalstoffWerteListe, heuteString)

UIGraphicsEndPDFContext()

// Save pdf DATA through user
let activityViewController = UIActivityViewController(activityItems: [pdfData], applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // für IPAD nötig
self.present(activityViewController, animated: true, completion: nil)
   

-- 更新--

我的新想法是,首先尝试保存文件并尝试 URL,如果失败,则直接使用 pdfData,因为在某些模拟器中使用 URL 不会报错,而在其他模拟器中会报错。

更多信息:https://stackoverflow.com/a/52499637/10392572

最佳答案

您只需将您的 pdfData 保存到一个临时文件 URL 并共享该 URL。

let temporaryFolder = FileManager.default.temporaryDirectory
let fileName = "document.pdf"
let temporaryFileURL = temporaryFolder.appendingPathComponent(fileName)
print(temporaryFileURL.path)  // /Users/lsd/Library/Developer/XCPGDevices/E2003834-07AB-4833-B206-843DC0A52967/data/Containers/Data/Application/322D1F1D-4C97-474C-9040-FE5E740D38CF/tmp/document.pdf
do {
    try pdfData.write(to: temporaryFileURL)
    // your code
    let activityViewController = UIActivityViewController(activityItems: [temporaryFileURL], applicationActivities: nil)
} catch {
    print(error)
}

关于swift - 如何给 PDF 数据一个文件名供用户在 Swift 中保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467356/

相关文章:

swift - 使用 Alamofire 快速上传图像和参数

ios - 从 UITableViewCell 调用 UIButton 操作

php - 使用 DOMPDF 生成错误的 pdf

serialization - 是否有可能拦截 matlab save() 字节流

java - 如何制作保存按钮

swift - 在数据加载之前调用的完成处理程序

ios - Swift 处理日期更改事件

pdf - 我如何摆脱 ghostscripts 添加的边距?

ios - Xamarin.ios - 在 Web View 中显示 PDF 时的后退/完成按钮

java - 将 Activity 的状态保存到名称/或文件