【问题标题】:How to convert the binary to pdf file on iPhone?如何在 iPhone 上将二进制文件转换为 pdf 文件?
【发布时间】:2011-12-29 07:23:27
【问题描述】:

我收到一个二进制 pdf 文件,它是 base64Binary 编码的。 如何将其转换回 iPhone 上?我可以使用哪些工具包?

谢谢。

【问题讨论】:

  • “转换回来”是什么意思?要显示它吗?
  • 是的,我需要在 iPhone 上显示回来。

标签: objective-c swift iphone pdf binary


【解决方案1】:

已解决:

NSData theData = [NSData dataWithData:[GTMBase64 decodeString:theBinary]]; //first transfer it to NSData.

[m_oTestingWeb loadData:theData
               MIMEType:@"application/pdf"
       textEncodingName:@"UTF-8"
                baseURL:nil];                   //using the web view to show it back

【讨论】:

    【解决方案2】:

    解决方案

    NSString *binaryString = [myDict objectForKey:@"key"];
    NSData* myData = [NSData dataFromBase64String: binaryString];
    NSLog(@" %@",datas);
    [self savePDF:myData];
    

    保存PDF是这样的

    - (void)savePDF:(NSData *)pdfContent
    {
     NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
     NSString *documentsDirectory = [paths objectAtIndex:0];
    
     NSString *finalPath = [documentsDirectory stringByAppendingPathComponent:@"myPdf.pdf"];
     NSLog(@"%@",finalPath);
     NSURL *url = [NSURL fileURLWithPath:finalPath];
     [pdfContent writeToURL:url atomically:YES];
    
    //    [aWebView loadRequest:[NSURLRequest requestWithURL:url]];
    }
    

    获取标题here.

    【讨论】:

      【解决方案3】:

      如果你用“二进制”这个词来表示 NSData,那么你可以按照以下方法。

      我认为如果二进制数据已经是PDF格式,那么我们可以使用普通的NSData方法到writeToFile:atomically将其写入文件。

      [<NSDataObject> writeToFile:<FilePath> atomically:YES];
      

      然后您可以使用DocInteraction 打开并显示 PDF 文件。

      希望这对您有所帮助。

      【讨论】:

        【解决方案4】:

        要将二进制(base64 pdf 字符串)转换为 pdf 并显示它,您可以为 Swift 3 执行此操作:

        // Here you convert the binary base 64 pdf string to pdf
        let pdfData = Data(base64Encoded: theBase64PDFString, options: .ignoreUnknownCharacters)
        
        // here you can display the pdf on a UIWebView
        webView.load(pdfData!,
                     mimeType: "application/pdf",
                     textEncodingName: "UTF-8",
                     baseURL: URL(fileURLWithPath: ""))
        

        【讨论】:

          【解决方案5】:

          要显示 PDF,您只需 use a UIWebView and feed it the PDF。如果您想要更复杂一点,请查看Apple's ZoomingPDFViewer sample code(在an answer to another question 中找到那个)。

          【讨论】:

          • 但是我得到的是二进制数据,而不是网站上的 .pdf 文件。
          • “二进制数据”是什么意思?
          • 像这样:JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4 + CnN0cmVhbQp4nM1YS48cNRBWCJDQGyWB8A4PH7uR1riq / LwiEBK3RCNx2HAKJAHtBO3yW / I / fG73uN3LzGQYEWWzh9iecj2 + r6ps94UymliZ / LcZPF133z4O6vlf3YUijm5ctOSUN6RT8sq5INqHIhjV9392j7KoC2EUdUYUJ4mKXaAql / bIGR + rHJndguS8mwVpi6CZBE0ryEVwDFI9 / nEaXD7vLrqoJf8bF9rx07X6bpX3WujSwTqvVs86g / CTFRpFSAVAlpJTgZ1OntRq3fU3htUf3Q8rmCOV / 2CF1O + dxKQtoLPJOk1RWXH4NcURz8vfumffNF7lXwsVjIAkFilstXNMrsRUjVQD4XgD4SAD7ngD7iADcrwBOcgAHW 跨度>
          • 这看起来像是 Base64 编码的。解码方法见Any base64 library on iphone-sdk?
          【解决方案6】:

          访问此网站base64 encoding。在这里,您将获得将 base64 数据解码为 NSData 的代码。使用该数据,您可以保存 pdf,使用 UIWebView 或使用 Quartz Core 查看 pdf。

          【讨论】:

            【解决方案7】:

            将二进制文件转换为 PDF 文件

            @IBOutlet var pdfView: PDFView!
            
            guard
                var fileURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last,
                let convertedData = Data(base64Encoded: data.base64EncodedData()) // data is the binary pdf 
                else {
                // handle error when getting documents URL
                return
            }
            
            fileURL.appendPathComponent("filename.pdf")
            
            do {
                try convertedData.write(to: documentsURL)
            } catch {
                // handle write error
            }
            

            奖励:在不弃用 UIWebView API 的情况下查看 PDF

            let pdfView = PDFView(frame: self.view.bounds)
            self.view.addSubview(pdfView)
            // Fit content in PDFView.
            pdfView.autoScales = true
            pdfView.document = PDFDocument(url: fileURL)
                            
            

            也许有点晚了,但我希望它至少可以帮助别人。

            【讨论】:

              猜你喜欢
              • 2012-12-16
              • 2015-11-07
              • 2017-06-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-03-16
              • 2010-12-23
              相关资源
              最近更新 更多