Page 1 sur 1
Générateur pdf
Posté : 28 mars 2017, 14:40
par kevin254kl
Bonjour à tous,
Pourriez vous m'aider s'il vous plait?
j'ai des formulaires pour remplir une facture et j'aimerais afficher la facture en pdf avec de l'ajax;
Code : Tout sélectionner
$(document).ready(function() {
// from : contentInvoice.php
$('#pdf').on('click', function(e) {
// asynchrone
$.ajax({
url: '../Controller/generatePdf.php',
type: 'post'
});
});
});
puis dans mon fichier php j'ai
Code : Tout sélectionner
<?php
require_once '../vendor/autoload.php';
ob_start();
include_once('../view/InvoicePdf.php');
$content = ob_get_clean();
$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML($content);
$mpdf->Output();
Dans ma réponse j'ai bien ma facture de généré? mais comment l'afficher dans le navigateur comme sur la plus part des sites?
merci à vous
Re: Générateur pdf
Posté : 28 mars 2017, 14:55
par Spols
tu êux utiliser une iframe regarde aussi ce lien
https://parall.ax/products/jspdf
Re: Générateur pdf
Posté : 28 mars 2017, 16:32
par kevin254kl
Merci,
Mais j'ai déjà une lib pdf mpdf avec php qui est généré avec ce code:
Code : Tout sélectionner
<?php require_once '../vendor/autoload.php'; ob_start();
include_once('../view/InvoicePdf.php');
$content = ob_get_clean();
$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML($content);
$mpdf->Output();
Le seul problème c'est que celle-ci ne fonctionne pas avec de l'ajax mais sans oui.
Vous me conseillez de tout de même passer par une iframe est ne plus utiliser mpdf?
Merci à vous.
Re: Générateur pdf
Posté : 28 mars 2017, 16:45
par Spols
Je ne connais pas mpdf, mais je te conseille de passer par une iframe OU de passer à la librairie jsPDF que j'ai découvert récement et qui permet une mise à jour du pdf en direct sans même avoir besoin d'ajax.
Mais en théorie, tu peux très bien envoyer tes modif en ajax, les stocker coté serveur et recharger ton iframe qui appliquera les changement.
Re: Générateur pdf
Posté : 28 mars 2017, 16:49
par moogli
salut,
tu n'as pas compris ce que te propose Spols
tu gardes ton code serveur tel quel.
L'iframe va rien générer du tout c'est seulement un conteneur pour avoir une "autre page" en même temps que la tienne.
l'astuce pour charger des fichiers a partir d'une requête serveur en JS c'est d'utiliser une iframe caché qui va servir de conteneur à ta requête.
du coup plus de requête "ajax" tu post dans l'iframe.
je suppose que ton code est réduit parce qu'il n'y a pas de paramètre. si ce n'est pas le cas tu as "juste" à modifier l'url de l'iframe et le tour est joué.
un exemple ici
http://stackoverflow.com/questions/1679 ... oad-a-file
ou la
https://forums.asp.net/t/1986180.aspx?D ... ing+jQuery
@+
Re: Générateur pdf
Posté : 28 mars 2017, 16:55
par or 1
Le seul problème c'est que celle-ci ne fonctionne pas avec de l'ajax mais sans oui.
pourquoi ne pas faire un simple lien vers le script php qui génère le pdf ?
le script dit que c'est du pdf, alors le navigateur fera ce qu'il fait habituellement avec du pdf.
Re: Générateur pdf
Posté : 29 mars 2017, 13:50
par kevin254kl
J'ai finalement fait cela, puisque toute mes données sont en session j'ai juste à appeler le fichier sans paramètre
Code : Tout sélectionner
$(document).ready(function() {
// from : contentInvoice.php
$('#pdf').on('click', function(e) {
var win = window.open('../Controller/generatePdf.php', '_blank');
if (win) {
//Browser has allowed it to be opened
win.focus();
} else {
//Browser has blocked it
alert('Please allow popups for this website');
}
});
});
http://stackoverflow.com/questions/4174 ... in-new-tab