2012-01-13 17 views
8

Sto provando a scaricare il contenuto PDF dall'endpoint webservice che viene come binario. Dopo la decodifica in base64, allego il file decodificato in webview, in cui non riesco a trovare l'errore dell'intestazione pdf.non è riuscito a trovare l'intestazione PDF: '% PDF' non trovato

Qualcuno sa come posso procedere per risolvere questo errore? Mi manca qualche passaggio qui?

Grazie.

+0

Che cosa significa il vostro look codice come? Probabilmente l'errore si presenta se il PDF non esiste o non può –

+0

mwinn22, sto usando la classe Base64 da http://blog.objectgraph.com/index.php/2010/04/20/encrypting-decrypting-base64-encode -decode-in-iphone-obiettivo-c/e solo decodifica il valore dalla matrice e la memorizzazione in nsdata. – kforkarim

risposta

2

Ho avuto questo errore durante lo sviluppo della mia app che ha letto il problema con il pdf è che il PDF non esiste da dove viene chiamato. I dati binari che vengono restituiti sono la risposta all'errore che il servizio Web sta chiamando. Per esempio, se io sto chiedendo un documento pdf a:

http://localhost:8080/template/DocumentServlet?documentId=923447&JSSESIONID=77EFJD3IJD8I3MMWW2435353J

se tale documento non esiste a questo indirizzo, allora mi metterò una risposta di errore, e questo è ciò che i dati binari è che viene restituito .

+0

matt, posso vedere i dati vengono scaricati e analizzati in nsdata, forse potrebbe essere possibile che non stia decodificando correttamente, ora non ho quell'errore ma non mostra nulla sul pdf. Solo il pdf grigio, e ho scritto in pdf e ho provato ad aprire il pdf, tuttavia mi dà un errore nel file pdf danneggiato. – kforkarim

+0

@kforkarim: Non sta dicendo che non ci sono dati, sta dicendo che i dati sono la risposta all'errore, non il PDF che hai cercato di ottenere. Assicurati che l'URL a cui stai tentando di accedere sia l'URL corretto e che la risorsa esista e sia accessibile (hai il permesso, è raggiungibile, ecc.). –

3

Prova ad aggiungere qualcosa di simile

NSData *dataContent; // response data. 
CFDataRef myPDFData; 
myPDFData = (CFDataRef)dataContent; 
CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData); 

pdfDocument = CGPDFDocumentCreateWithProvider(provider); 

CGDataProviderRelease(provider); 

quindi caricare pdfDocument nella vostra WebView.

o dare un'occhiata a uno zoomPDFViewer personalizzato. Apple ha un buon esempio a http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html questo è quello che ho fatto in quanto non ho potuto ottenere il pdfdocument per caricare correttamente in una webview.

0

ecco la soluzione se si utilizza il servizio di SAP Web: in SAP sistema c'è un metodo per convertire i dati binari (xstring) per Base64: cl_http_utility => encode_x_base64 Utilizzando http è possibile trasferire il Base64 dati. in Xcode ho usato questa libreria: a link

// 3) Decode Base 64 
// Then you can put that back like this 
NSData *b64DecData = [Base64 decode:b64EncStr]; 

poi: [webDisplay loadData:b64DecData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];