2013-06-06 11 views
7

Sto tentando di visualizzare un PDF nell'applicazione iPad tramite UIWebView come illustrato di seguito.Come visualizzare NSData con contenuto PDF in iOS UIWebView?

NSData * responseData = [NSURLConnection sendSynchronousRequest:mutableUrlRequest returningResponse:nil error:nil]; 
[pdfWebView loadData:responseData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil]; 

Ma questo non funziona. È un modo giusto per mostrare? In caso contrario, chiunque potrebbe guidarmi a mostrare il PDF in UIWebView o qualsiasi altro metodo utile.

Grazie!

+0

Qual è il motivo per cui si fa non caricare l'url pdf direttamente nella visualizzazione web? –

+0

@verbumdei Il motivo è che, il mio requisito è ottenere i dati PDF colpendo un servlet Java. –

risposta

21

avuto la risposta per la mia domanda. La linea sottostante farà la magia.

[webview loadData:PdfContent MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil]; 
2

Salvarlo in un file con un suffisso PDF in una directory temporanea e aprirlo da lì.

+1

Potrebbe fornire qualche frammento di codice per salvare NSData con array di byte da memorizzare come pdf nella directory locale. –

0

se si dispone di un file PDF in bundle con l'applicazione (in questo esempio il nome di "document.pdf"):

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10, 200, 200)]; 

NSString *path = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[webView loadRequest:request]; 

[self.view addSubview:webView]; 
[webView release]; 

È possibile trovare maggiori informazioni qui: QA1630 tecniche: utilizzo UIWebView per visualizzare selezionare i tipi di documento .

+2

La mia domanda è diversa, sto avendo i dati del PDF dal server. –

2

Come salvare NSData (file PDF) nella directory documento:

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *documentFolderPath = [searchPaths objectAtIndex: 0]; 
    NSString *imagePath = [documentFolderPath stringByAppendingPathComponent:@"yourPdfFileName.pdf"]; 

NSFileManager *filemanager=[NSFileManager defaultManager]; 
    if(![filemanager fileExistsAtPath:filePath]) 
     [[NSFileManager defaultManager] createFileAtPath:filePath contents: nil attributes: nil]; 

    NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath]; 

    [handle writeData:data]; 
0

Qualsiasi motivo non si sta utilizzando Quick Look Framework o UIDocumentInteractionController? Sono in grado di fornire all'utente più funzionalità di una WebView e un po 'meno di cloogy.

Qui ci sono collegamenti alla documentazione di Apple: https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles/UsingtheQuickLookFramework.html

https://developer.apple.com/library/ios/documentation/uikit/reference/UIDocumentInteractionController_class/Reference/Reference.html

Se stai cercando di rendere il PDF dal file system della app, non c'è bisogno di agitarsi! Basta fare in modo che il pdf è stato memorizzato ha una vera e propria estensione '.pdf', quindi fornire al QLPreviewController intero percorso:

self.contentURL = [NSURL fileURLWithPath:fullPath]; 
2

SWIFT3:

webView.load(data, mimeType: "application/pdf", textEncodingName: "UTF-8", baseURL: URL(string: "You can use URL of any file in your bundle here")!) 
Problemi correlati