2012-01-13 11 views
8

Estoy tratando de descargar el contenido en pdf del punto final del servicio web que viene como binario. Después de decodificar en base64, adjunto el archivo decodificado a la vista web, en el que no se pudo encontrar el error del encabezado de PDF.no se pudo encontrar el encabezado del PDF: '% PDF' no encontrado

¿Alguien sabe cómo puedo proceder para solucionar este error? ¿Me estoy perdiendo algún paso aquí?

Gracias.

+0

Lo que se ve su código como? Es muy probable que surja ese error si el PDF no existe o no puede –

+0

mwinn22, estoy usando la clase Base64 desde http://blog.objectgraph.com/index.php/2010/04/20/encrypting-decrypting-base64-encode -decode-in-iphone-objective-c/y simplemente decodificando el valor de una matriz y almacenándolo en nsdata. – kforkarim

Respuesta

2

Tuve este error al desarrollar mi aplicación que lee en PDF, el problema es que el PDF no existe en el lugar desde donde lo llama. Los datos binarios que se devuelven son la respuesta de error a la que llama su servicio web. Por ejemplo, si estoy solicitando un documento PDF en:

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

si ese documento no existe en esa dirección y luego voy a tener una respuesta de error, y eso es lo que se está siendo devuelto los datos binarios .

+0

mate, puedo ver que los datos se están descargando y analizando en nsdata, tal vez sea posible que no esté decodificando correctamente, ahora no tengo ese error pero no muestra nada en el pdf. Solo el pdf gris, escribí en pdf e intenté abrir el pdf, pero me da un error: el archivo pdf está dañado. – kforkarim

+0

@kforkarim: No está diciendo que no haya datos, está diciendo que los datos son la respuesta de error, no el PDF que intentó obtener. Asegúrese de que la URL a la que intenta acceder es la URL correcta y que el recurso existe y es accesible (tiene permiso, es accesible, etc.). –

3

Trate de añadir algo así como

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

pdfDocument = CGPDFDocumentCreateWithProvider(provider); 

CGDataProviderRelease(provider); 

A continuación, cargue PdfDocument en su vista web.

o eche un vistazo a la creación de un zoomPDFViewer personalizado. Apple tiene un buen ejemplo al http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html, eso es lo que hice, ya que no pude hacer que el documento pdf se cargara correctamente en una vista web.

0

aquí es la solución si se utiliza el servicio de SAP Web: en el Sistema SAP hay un método para convertir los datos binarios (xstring) a Base 64: cl_http_utility => encode_x_base64 utilizando HTTP es posible transferir la base 64 datos. en Xcode utilicé esta biblioteca: a link

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

a continuación: [webDisplay loadData:b64DecData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];

Cuestiones relacionadas