penguinsource
penguinsource

Reputation: 1190

How to save my generated javascript pdf file to my server's filesystem?

I'm using pdfmake to create my pdf and while it allows the user to open the pdf directly or download it to their computer, I'm not sure how I would go about generating the pdf and saving it to my server's file system.

From what I understand, there are plenty of security measures not allowing javascript to save data to file(s), so would sending it to my php backend be the only choice ? and how would i go about doing that ?

Thanks !

Upvotes: 1

Views: 5114

Answers (1)

leo60228
leo60228

Reputation: 874

(untested)
PHP:

<?
// pull the raw binary data from the POST array
$data = substr($_POST['data'], strpos($_POST['data'], ",") + 1);
// decode it
$decodedData = base64_decode($data);
// print out the raw data, 
echo ($decodedData);
$filename = "test.pdf";
// write the data out to the file
$fp = fopen($filename, 'wb');
fwrite($fp, $decodedData);
fclose($fp);
?>

JS:

var docDefinition = {
  content: 'This is an sample PDF printed with pdfMake'
};

pdfMake.createPdf(docDefinition).getBuffer(function(buffer) {
  var blob = new Blob([buffer]);

  var reader = new FileReader();
  // this function is triggered once a call to readAsDataURL returns
  reader.onload = function(event) {
    var fd = new FormData();
    fd.append('fname', 'test.pdf');
    fd.append('data', event.target.result);
    $.ajax({
      type: 'POST',
      url: 'upload.php', // Change to PHP filename
      data: fd,
      processData: false,
      contentType: false
    }).done(function(data) {
      // print the output from the upload.php script
      console.log(data);
    });
  };
  // trigger the read from the reader...
  reader.readAsDataURL(blob);
});

Upload and receive code from How can javascript upload a blob?.

Upvotes: 1

Related Questions