[RESOLU] Problème fichier PDF corrompu (mail)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème fichier PDF corrompu (mail)

Problème fichier PDF corrompu (mail) jsPDF & PHP Mailer

par LovelyRiver » 27 juin 2015, 12:11

Bonjour,

J'ai, à force de tenir à mes cheveux, pu trouver la solution :D :D
Dans les faits, il faut retirer l'entête "data:image/jpeg;base64," de la chaine de caractères générée par jsPDF + , du côté PHP, supprimer le codage base64 du fichier généré et envoyé par mail.

Depuis, tout marche parfaitement, un soulagement !

Pour tous ceux qui seraient confrontés au même problème:

jsPDF avec PHPMailer


js :

Code : Tout sélectionner

var doc=(pdf.output('datauristring')).substr(28); // Send the request $.post('http://www.mon-site.fr/0.php', { name: 'Moi', email: '[email protected]', pdf: doc }, function(d) { console.log(d); });
PHP

Code : Tout sélectionner

[...] //Send HTML or Plain Text email $mail->isHTML(true); $mail->Subject = "Estimation xxxxx"; $mail->Body = "<p>Bonjour<br>Veuillez trouver ci-joint votre <b>estimation</b><br>Cordialement</p>"; $mail->AltBody = "This is the plain text version of the email content"; // Pièce jointe $mail->AddStringAttachment(base64_decode($_POST['pdf']),"estimation.pdf","base64","application/pdf"); // Envoi de l'email if(!$mail->send()) { echo "Echec de l'envoi du mail :" . $mail->ErrorInfo; } else { echo "Message envoyé !"; }

Re: Problème fichier PDF corrompu (mail)

par LovelyRiver » 22 juin 2015, 23:48

Merci de ta réponse.

Tu veux dire seulement avec :

Code : Tout sélectionner

$mail->AddStringAttachment($_POST['pdf'],"estimation.pdf");
?

Si oui, je viens de réessayer ceci et cela ne fonctionne pas.

Re: Problème fichier PDF corrompu (mail)

par tof73 » 22 juin 2015, 23:42

il semble que cela fonctionne sans les 2 derniers paramètres.

Problème fichier PDF corrompu (mail)

par LovelyRiver » 22 juin 2015, 23:28

Bonjour,

Nouveau sur le forum :D et pas très aguerri au PHP (mon domaine c'est plutôt l'HTML et jQuery), Je rencontre le souci suivant:

En javascript et en local, je génère (via jsPDF) un PDF sous forme de string base 64 (Il est parfaitement correct, j'arrive à l'ouvrir dans un navigateur).

Je l'envoie ensuite sur le serveur comme suit:

Code : Tout sélectionner

var doc=pdf.output('datauristring'); // Send the request $.post('http://www.mon-site.fr/0.php', { name: 'Moi', email: '[email protected]', pdf: doc }, function(d) { console.log(d); });

Du côté PHP (j'utilise PHP mailer), je récupère le pdf (doc) de la façon suivante pour l'envoyer en PJ à un mail:

Code : Tout sélectionner

[...] //Send HTML or Plain Text email $mail->isHTML(true); $mail->Subject = "Estimation xxxxx"; $mail->Body = "<p>Bonjour<br>Veuillez trouver ci-joint votre <b>estimation</b><br>Cordialement</p>"; $mail->AltBody = "This is the plain text version of the email content"; // Pièce jointe $mail->AddStringAttachment($_POST['pdf'],"estimation.pdf","base64","application/pdf"); // Envoi de l'email if(!$mail->send()) { echo "Echec de l'envoi du mail :" . $mail->ErrorInfo; } else { echo "Message envoyé !"; }


Je reçois parfaitement le mail et sa PJ mais celle-ci n'est pas exploitable (corrompue) alors que sa taille semble correcte.

J'ai essayé des variantes mais là Je commence à m'arracher les cheveux !

Merci