Автозапуск jspdf при увеличении контента - PullRequest
1 голос
/ 15 апреля 2019

Я пытаюсь создать PDF-файл, который автоматически загружает страницы при увеличении контента.Это мой пример кода.Любая помощь будет принята с благодарностью:)

HTML-код

<div *ngFor="let data of data">
  <button click = "previewPdf(data)"> Preview </button>
</div>

Javascript

previewPdf(data) {
  var doc = new jsPDF();
  let bodyContent = doc.splitTextToSize(data.body, 250);
  let lineheight = 6;
  let offsety = 5;

  this.data.forEach(function(i) {
  doc.setFontSize(20);
  doc.text(10,10 + lineheight * 0 + offsety, bodyContent);
  doc.output("dataurlnewwindow");
});

}

JSON

data[{
  "body": "A very long letter content...";
}];

Редактировать : я попробовал этот пример кода ниже, и он дает мне 2 страницы, а последняя страница пуста

previewPdf(data) {
    var doc = new jsPDF('p', 'mm', 'a4');
    let pageHeight = doc.internal.pageSize.getHeight();
    let bodyContent = doc.splitTextToSize(data.body, 250);
    let lineheight = 6;
    let offsetY = 5;


    doc.text(10, 10, bodyContent);
    // Before adding new content
    let y = 840; // Height position of new content
    if (y >= pageHeight) {
      doc.addPage();
      y = 0 // Restart height position
    }


    // this.data.forEach(function(i) {
    //   doc.setFontSize(20);
    //   
    // });
    doc.output("dataurlnewwindow");
  }

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Вы можете использовать addHTML для этого, используя pagesplit параметр

Редактировать:

Есть еще один грязный хак, где вы можете вычислить высоту оставшейся страницы перед добавлением контента

doc = new jsPdf();

pageHeight= pdf.internal.pageSize.height; //get total page height

Затем при добавлении содержимого проверьте состояние высоты, как показано ниже

pdf.text(x, y, "value");

if (y>=pageHeight)
{
pdf.addPage();
}
0 голосов
/ 16 апреля 2019

Рабочий раствор

  previewPdf(data) {
    var doc = new jsPDF();

    var bodyContent = doc.splitTextToSize(data.body, 250);
    var pageHeight = doc.internal.pageSize.getHeight();
    doc.setFontType("normal");
    doc.setFontSize("12");

    var y = 15;
    for (var i = 0; i < bodyContent.length; i++) {
      if (y+10 > pageHeight) {
        y = 15;
        doc.addPage();
      }
      doc.text(10, y, bodyContent[i]);
      y = y + 7;
    }    
     doc.output('dataurlnewwindow');

  }

...