2015-06-18 8 views
5

Sto usando jsPDF per generare un pdf sul lato client. Con la funzione doc.save ('filename.pdf') posso scaricarlo. Ora devo salvarlo sul server, quindi invio i dati pdf con .ajax() e lo ricevo con uno script PHP ma le immagini sul pdfURL generato non vengono visualizzate (http://mydomain/tmp/test.pdf); mostra solo il testo.come caricare pdf sul server da ajax data send (usando jsPDF)

Potete darmi una mano per favore?

Codice mio js:

//doc.save('test.pdf'); WORKS WELL 
var pdf = doc.output(); 
$.ajax({ 
    method: "POST", 
    url: "inc/test.php", 
    data: {data: pdf}, 
}).done(function(data){ 
    console.log(data); 
}); 

Lo script PHP:

<?php 
if(!empty($_POST['data'])){ 

    $data = $_POST['data']; 
    print_r($data); 

    file_put_contents("../tmp/test.pdf", $data); 
} else { 
    echo "No Data Sent"; 
} 
exit(); 
?> 

Questo è il pdf generato dopo il proccess php scripting: http://control.edge-cdn.com.ar/tmp/test.pdf

e questo è il generato con il funzione doc.save(): http://control.edge-cdn.com.ar/repo/all.pdf Saluti!

+0

Così test.pdf si apre in formato pdf, contiene solo testo con immagini spezzate? –

+0

Stai aprendo i due pdf (quello dal server e quello salvato usando js) con lo stesso software, sullo stesso computer? –

+0

-> Puoi generare usando js un file pdf da doc.output(); dati? Forse è quel metodo che è responsabile di quel bug (e doc.save() forse ok) ... –

risposta

9

SOLUZIONE:

stavo cercando di inviare i dati pdf in formato binario. Ho solo base64 codificare la stringa, mandarla e decodificarla sul php.

JS:

var pdf = btoa(doc.output()); 
    $.ajax({ 
     method: "POST", 
     url: "inc/test.php", 
     data: {data: pdf}, 
    }).done(function(data){ 
     console.log(data); 
    }); 

PHP:

if(!empty($_POST['data'])){ 
$data = base64_decode($_POST['data']); 
// print_r($data); 
file_put_contents("../tmp/test.pdf", $data); 
} else { 
echo "No Data Sent"; 
} 
exit(); 
0
var reader = new window.FileReader(); 
reader.readAsDataURL(doc.output("blob")); 
reader.onloadend = function() 
{ 
    ... 
    method: 'POST', 
    data: { 
     attachment: reader.result 
    } 
    ... 
} 
0

JS

var pdf =doc.output(); 
    var data = new FormData(); 
    data.append("data" , pdf); 
    var xhr = new XMLHttpRequest(); 
    xhr.open('post', 'inc/test.php', true); 
    xhr.send(data); 

PHP

if(!empty($_POST['data'])){ 
    $data = $_POST['data']; 
    $fname = "test.pdf"; 
    $file = fopen("test/pdf/" .$fname, 'r'); 
    fwrite($file, $data); 
    fclose($file); 
} else { 
    echo "No Data Sent"; 
} 
+0

come posso inviare il nome file? – daniel

Problemi correlati