0

我想从 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)


}

请帮忙 。

4

1 回答 1

0

好的,看一些“例子”

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 位数据)。不要在你的代码中使用它......

于 2017-06-15T06:02:14.117 回答