Сохранение PDF с использованием html2pdf - PullRequest
0 голосов
/ 10 февраля 2019

Я использую html2pdf для генерации pdf-файлов.Я хочу сохранить эти файлы в фоновом режиме на диске.Я использую html2pdf.outputPdf (jsPDF.output) с аргументом «datauri», чтобы затем кодировать 64-base.

Затем я декодирую их в своем сценарии php и сохраняю их.Когда я пытаюсь открыть сгенерированный файл в своей папке, я получаю сообщение от Adobe, что файл поврежден (возможно, не декодирован правильно).

Почему это происходит, и как я могу это исправить?

Javascript:

<script>

$(document).ready(function() {

$('#Save').on('click', function () {

  element = document.getElementById('root');

  var pdf;
  var pdfout;
  var Narvarande = "Johnny";
  var filnamn = "123456";
  var Lagenhetsadress = "BB1234 43";

  //html2pdf().from(element).save();
  //console.log("CLicked!");

  html2pdf().from(element).outputPdf('datauri').then(function(pdfout){

//  console.log(btoa(pdf));;

  $.ajax({
    method: "POST",
    url: "includes/skickapdf.php",
    data: {
      data: pdfout,
      besiktare: Narvarande,
      namn: filnamn,
      adress: Lagenhetsadress,
    },
  }).done(function(data){
    console.log("Return från skickapdf: ");
  console.log(data);
});

});

  });
});

</script>

PHP:

<?php
if(!empty($_POST['data']) && isset($_POST['namn']) &&isset($_POST['besiktare'])&& isset($_POST['adress']))
{

  $N = $_POST['namn'];
  $B = $_POST['besiktare'];
  $A = $_POST['adress'];

  $data = base64_decode($_POST['data']);
  echo ($N);
  // print_r($data);
  file_put_contents("{$N}.pdf", $data);
} 
else {
  echo "No Data Sent";
  echo "--------------";
  echo $_POST['data'];
  echo "--------------";
}``
?>

1 Ответ

0 голосов
/ 15 февраля 2019

Если вы просто хотите сохранить html как pdf локально, вы, вероятно, захотите использовать jsPDF .html() и html2canvas 1.0.0-alpha.12, не обязательно html2pdf.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" 
        integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/"
        crossorigin="anonymous"></script>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
<!-- html2canvas 1.0.0-alpha.11 or higher version is needed -->

<script>
    function onClick() {
        let pdf = new jsPDF('p', 'pt', 'letter');
        pdf.html(document.body, {
            callback: function () {
                pdf.save('test.pdf');
                window.open(pdf.output('bloburl')); // To debug.
            }
        });
    }
</script>
...