从 icloud 保存 pdf 并在 swift 3 中转换为 base64

Posted

技术标签:

【中文标题】从 icloud 保存 pdf 并在 swift 3 中转换为 base64【英文标题】:Saving pdf from icloud and and converting to base64 in swift 3 【发布时间】:2017-06-15 03:07:00 【问题描述】:

我想从 icloud 中选择一个 pdf 并将其转换为 base64,以便我可以将其上传到更远的地方。我已从 icloud 中选择了该文件,但我无法将其转换为 base64

   @IBAction func PdfBtn(_ sender: Any) 

    let importMenu = UIDocumentMenuViewController(documentTypes: ["public.composite-content"], in: .import)
    importMenu.delegate = self
    present(importMenu, animated: true, completion: nil)




@available(ios 8.0, *)
public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) 


    let link = url as URL
    print("The Url is : \(link)")








@available(iOS 8.0, *)
public func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) 

    documentPicker.delegate = self
    present(documentPicker, animated: true, completion: nil)








func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) 

    print("we cancelled")

    dismiss(animated: true, completion: nil)



请帮忙。

【问题讨论】:

好的,但这不是问题..我想将所选文件转换为base 64 你尝试了什么? base64 是“二进制到文本”编码方案。首先,您需要 Data 的圆顶实例,接下来只需调用 data.base64EncodedData() 或 data.base64EncodedString(),这将为您提供编码数据/字符串。 【参考方案1】:

好的,看一些'例子'

let url = FileManager.default.homeDirectoryForCurrentUser.appendingPathComponent("Documents/hello.pdf")

let data = try! Data(contentsOf: url)

let base64Data = data.base64EncodedData()
let str0 = String(bytes: data[0..<9], encoding: .ascii) // "%PDF-1.3\n"
let str1 = String(bytes: base64Data[0..<12], encoding: .ascii) // "JVBERi0xLjMK"

let base64String = data.base64EncodedString()
let str2 = String(base64String.characters.prefix(12)) // "JVBERi0xLjMK"

let data2 = Data(base64Encoded: str2)
let str3 = String(bytes: data2!, encoding: .ascii) // "%PDF-1.3\n"

请注意,我对字节数和字符数进行了硬编码,以产生一些可用的结果(每个 base64 数字正好代表 6 位数据)。不要在你的代码中使用它...

【讨论】:

以上是关于从 icloud 保存 pdf 并在 swift 3 中转换为 base64的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloudkit 快速从 iCloud 获取当前用户信息

来自 iCloud/CloudKit 的序列号

在 iOS 中使用 Swift 保存 PDF 文件并显示它们

将 CoreData 保存到 iCloud (Swift)

在 Swift 中将 CoreData 保存/同步到 iCloud

如何在 Swift 中从 NSData 显示 PDF - 如何将 PDF 保存到文档文件夹 Swift - 如何在 Swift 中通过 WebView 从保存的 NSData 显示 PDF