【问题标题】:Convert byte array to PDF file?将字节数组转换为 PDF 文件?
【发布时间】:2015-09-16 00:19:41
【问题描述】:

我从我的 iOS 应用程序进行 RESTful 调用以检索 pdf 文件。此 pdf 文件为字节格式。

我找到了很多关于如何在 Objective-C 中将这些字节转换为实际文件的文章;但是,我需要 Swift 语言方面的帮助。

RESTful 调用还会返回其他内容,而不仅仅是文件字节,因此我将从调用中返回的其他信息中提取字节。

let fileBlob = json["fileBlob"] as! String 
var data: NSData = NSPropertyListSerialization.dataWithPropertyList(fileBlob, format: NSPropertyListFormat.BinaryFormat_v1_0, options: Int(NSPropertyListMutabilityOptions.MutableContainersAndLeaves.rawValue), error: nil)! 
let file = data.writeToFile("readingfile.pdf", atomically: false) 

上面是我用来从返回的内容中提取文件字节然后将该文件写入我的计算机以查看是否可以打开 pdf 的代码。

这三行创建文件,但是当我点击文件打开它时,它说它无法打开,因为它可能已损坏或使用预览无法识别的文件格式...

【问题讨论】:

  • 为了更好地理解您的问题:您的意图是什么?只是存储检索到的 PDF 文件?还是您想解释/修改它的内容,即逐字节扫描/流式传输?
  • 我想简单地将 pdf 显示到屏幕上。
  • 如何清理 cmets 并使用 EDIT button 将所有内容放在主要问题上并正确格式化?这就是您的问题被否决的原因 - 它没有提供足够的信息。
  • @AveryCupples 你是如何将字节数组转换为 pdf 的?我有类似的问题。

标签: ios swift cocoa-touch pdf


【解决方案1】:

您需要使用 NSURLSession 异步执行:

func load(URL: NSURL) {
   let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
   let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
   let task = session.dataTaskWithURL(URL, completionHandler: {
       (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
      if (error == nil) {
         // Success
         let statusCode = (response as! NSHTTPURLResponse).statusCode
         println("Success: \(statusCode)")
         println("File Size: \(data.length)")

         // Your file variable is data (see previous println with data.length as example)

      } else {
        // Failure
        println("Failure: %@", error.localizedDescription);
      }
   })
   task.resume()
}

然后你可以这样称呼它:

if var URL = NSURL(string: "http://www.whatever.com/yourfile.pdf") {
   load(URL)
}

如果您想在 Playground 中进行测试,您需要在 Playground 代码中添加以下两条语句:

import XCPlayground

XCPSetExecutionShouldContinueIndefinitely()

【讨论】:

  • 我的 pdf 没有存储为文件,如示例中所示,url 末尾带有 yourfile.pdf。我发出 GET 请求,返回的部分内容是一个文件块,文件为字节。
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2020-09-04
  • 2017-11-27
  • 1970-01-01
  • 2012-01-28
  • 2011-02-09
相关资源
最近更新 更多