Как преобразовать двоичный файл в PDF-файл на iPhone?

Я получаю двоичный файл PDF, который является base64Binary, как я могу преобразовать его обратно на iPhone? Какие наборы инструментов я могу использовать? Благодарю.

6 ответов

Решение

Решено:

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

Решение

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]];
}

Получить заголовки здесь.

Если вы имеете в виду NSData под словом "двоичный", то вы можете использовать следующий метод.

Я думаю, что если двоичные данные уже в формате PDF, то мы можем просто использовать обычные NSData метод для writeToFile:atomically записать это в файл.

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

И затем вы можете использовать DocInteraction, чтобы открыть и отобразить файл PDF.

Надеюсь, это поможет вам.

Чтобы преобразовать двоичный файл (строка 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: ""))

Посетите этот сайт в кодировке base64. Здесь Вы получите код для декодирования данных base64 в NSData. Используя эти данные, вы можете сохранить PDF, просмотреть PDF с помощью UIWebView или с помощью Quartz Core.

Чтобы преобразовать двоичный файл в файл 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
}

Бонус: просмотр PDF без устаревшего API UIWebView

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

Может, уже немного поздно, но я надеюсь, что хоть кому-то это поможет.

Чтобы отобразить PDF, вы можете просто использовать UIWebView и кормить его PDF. Если вы хотите, чтобы он был немного сложнее, посмотрите на пример кода Apple ZoomingPDFViewer (который был найден в ответе на другой вопрос).

Другие вопросы по тегам