2017-09-30 4 views
1

Je me demandais si quelqu'un connaissait un moyen de sauvegarder le document PDF résultant sur le serveur, au lieu de demander à l'utilisateur de le télécharger localement?Comment enregistrer le fichier PDF sur le serveur? css2pdf @ cloudformatter xeponline

En utilisant ceci: http://www.cloudformatter.com/CSS2Pdf

Un grand merci

Edit: J'utilise le JS suivant pour lancer le PDF.

$(function(){ 
    $('#generatePDF').click(function(e) { 
     e.preventDefault(); 

     var pdfdata = xepOnline.Formatter.Format('printableInvoice', 
      { 
       pageWidth:'216mm', 
       pageHeight:'279mm', 
       render: 'base64' 
      } 
     ); 
     console.log(pdfdata); 
    }); 
}); 
+0

Je suppose que vous voulez dire votre serveur, correct? –

Répondre

0

Laissant la réponse en place que les commentaires ci-dessous sont pertinents. La réponse originale était de savoir comment obtenir les informations de la source (en utilisant l'option "base64"), et non le PDF final.

Donc, pour obtenir le PDF final qui est en mémoire, si vous examinez le code Github:

https://github.com/Xportability/css-to-pdf/blob/master/js/xepOnline.jqPlugin.js

à partir de la "autre" à la ligne 602 ... ce "else" est exécuté si vous forcez autre chose qu'un téléchargement. Si vous avez choisi "newwin" ou "embed" comme méthode et le navigateur reniflant JS ne l'a pas forcé à télécharger (il le fait sur Safari, IE et aussi les navigateurs mobiles), alors ce "else" est exécuté.

Sur un post AJAX réussi, la fonction "xepOnline.Formatter .__ postBackSuccess" est exécutée. Cette fonction commence à la ligne 863. A la ligne 865, les octets encodés en base64 du PDF réel sont chargés. Si vous déboguez votre site et déboguez sur cette ligne de code, vous pouvez obtenir la valeur de la var "base64" qui sera les octets codés en base64. Donc, si vous n'aviez que Firefox et Chrome à considérer, vous pourriez modifier le code pour renvoyer le résultat au serveur et ne pas l'afficher. Si vous avez tous ces navigateurs à considérer, vous devrez ajouter une option (comme l'option say: 'memory' qui ignore tous les renifleurs de navigateur, exécute la version AJAX mais avec sa propre fonction de succès.)

Je peux regarder ceci à la bibliothèque mais vous êtes libre de le tirer et de faire quelques mods vous-même

+0

Salut oui je voulais dire à mon propre serveur.Merci beaucoup pour l'information, reviens mal si j'ai des problèmes. :) –

+0

Le violon fourni seulement sorties «faux» dans le journal de la console? J'ai essayé sur Chrome et Safari. La même chose se passe aussi sur mon site, mais étrangement, il semble également recharger la page lorsque le journal de la console apparaît et disparaît immédiatement avec le message: jquery.min.js: 4 Ressource interprétée comme document mais transférée avec le type MIME application/pdf . En regardant à travers la documentation sur cloudformatter.com, je ne vois aucune option pour 'base64' dans le rendu, et peu importe quel rendu je l'utilise télécharge toujours le document (même si je mets 'none'). J'ai mis à jour OP avec mon JS. –

+0

Vous avez raison, je suis désolé. C'est dans le code mais pas ce que vous cherchez. Il base64 code les informations source pour le débogage. J'ai modifié la réponse avec comment les modifications à la JS pourraient être faites. –