Ciao, oggi ho questo problema
Per visualizzare un report, creo al volo un PDF con la libreria TCPDF, ma non potendo reindirizzare la pagina chiamante, ho provato ad utilizzare ajax per gestire la chiamata.
Devo dire che funziona, il problema è che... no i problemi sono molti
La prima cosa che ho notato è che mi torna indietro il pdf completo come stringa; interessante, peccato che non so come trattarlo.
Il motivo di tale comportamento probabilmente risale a come gestisco la creazione del file che è: $pdf->outPut('nome.pdf', 'I'); ma anche utilizzando le altre modalità non mi salva il file, anzi con la modalità F mi va in errore perché non ho i permessi per scrivere il file direttamente sul server.
Al momento quindi non ho idea di come fare a procedere.
Un po' di codice?
La parte chiamante:
codice:
submitHandler: function(form) {
$(document).ajaxStart(function(){
$('.girandola').show();
});
$(document).ajaxComplete(function(){
$('.girandola').hide(300);
});
$( document ).ajaxError(function(event, request, settings) {
winError('Si è verificato un errore grave tentando di stampare il PDF.');
});
$('#dialog').load(
'DB/DB_stampa.php',
{
stampaNome: $('#stampa-nome').val(),
stampaQualifica: $('#stampa-qualifica').val(),
stampaTimbro: $('#stampa-timbro').val(),
stampaData: $('#stampa-data').val(),
stampaMagistrato: $('#stampa-magistrato').val(),
stampaMinimo: $('#stampa-max').val(),
stampaMassimo: $('#stampa-max').val(),
stampaTipo: $('input[name^="stampaTipo"]:checked').val()
},
function(data) {
$('#dialog').text(data);
$('#dialog').show();
}
);
}
#dialog è solo un <div> creato per vedere cosa riporta data, ed effettivamente è il PDF.
La chiamata, come si dovrebbe capire è dentro il plugin jquery.validate().
Per il PHP ... è molto più complesso, però se chiamo il file direttamente sull'url del browser, cioè senza passare via ajax il pdf mi viene mostrato, quindi...
Quindi penso che il problema sia nella chiamata, ma non so cosa fare; peggio poi è che tutto il sistema deve essere crossbrowser, partendo almeno da IE8, per Chrome e FF non mi preoccupo troppo, li sto utilizzando per lo sviluppo, quindi...