8 votes

échec de la recherche de l'en-tête du PDF : '%PDF' non trouvé

J'essaie de télécharger le contenu d'un pdf à partir d'un webservice qui arrive sous forme binaire. Après le décodage en base64, j'attache le fichier décodé à la vue web, dans laquelle l'erreur failed to find pdf header s'affiche.

Quelqu'un sait-il comment procéder pour corriger cette erreur ? Est-ce que j'ai oublié une étape ?

Merci.

3voto

Popeye Points 5478

Essayez d'ajouter quelque chose comme

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

pdfDocument = CGPDFDocumentCreateWithProvider(provider);

CGDataProviderRelease(provider);

Chargez ensuite pdfDocument dans votre webview.

ou regardez comment créer un zoomPDFViewer personnalisé. Apple propose un bon exemple à http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html C'est ce que j'ai fait car je n'arrivais pas à charger correctement le document pdf dans une vue web.

2voto

Popeye Points 5478

J'ai eu cette erreur lors du développement de mon application qui lit les PDF. Le problème est que le PDF n'existe pas là où vous l'appelez. Les données binaires qui sont renvoyées sont la réponse d'erreur que votre service web appelle. Par exemple, si je demande un document PDF à :

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

si ce document n'existe pas à cette adresse, je recevrai une réponse d'erreur, et c'est ce que sont les données binaires qui sont renvoyées.

0voto

Alexander Points 86

Voici la solution si vous utilisez le service web SAP : dans le système SAP, il existe une méthode pour convertir les données binaires (XSTRING) en Base64 : cl_http_utility=>encode_x_base64 En utilisant http il est possible de transférer les données Base64. Dans xcode j'ai utilisé cette bibliothèque : un lien

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X