Экспорт в PDF в формате IONI C (Android) - PullRequest
0 голосов
/ 16 марта 2020

Я использую JsPDF для экспорта данных ngx на платформу android (используя ioni c). Фрагмент выглядит следующим образом. Если в таблице больше строк, изображение сжимается и остается на той же странице, а изображение не переходит на следующую страницу в PDF, если размер изображения превышает. Любая быстрая помощь будет оценена.

Заранее спасибо.

 exportPdf() {

    const div = document.getElementById("myTableElementId1");
    const optionsexport = { 
      background: "white", height: div.scrollHeight, width: div.scrollWidth,
      margin: 10,
        filename: 'Log.pdf',
        image: { type: 'jpeg', quality: 1 }

     };
    domtoimage.toPng(div, optionsexport).then((dataUrl)=> {
      //Initialize JSPDF

      var doc = new jsPDF("p","mm","a4");

      doc.setFont('helvetica', 'italic')

      doc.setFontSize(10);


      //Add image Url to PDF
      doc.addImage(dataUrl, 'PNG', 20, 20, 180, 150);

      var pageCount  = doc.internal.getNumberOfPages()


      var pageHeight = doc.internal.pageSize.height || doc.internal.pageSize.getHeight();
      var pageWidth = doc.internal.pageSize.width || doc.internal.pageSize.getWidth();
      for (var i = 1; i <= pageCount ; i++) {
          // We are telling our pdfObject that we are now working on this page
          doc.setPage(i)
          doc.setFontSize(30);
          doc.text('App Log', pageWidth / 2, pageHeight  - 287, 'center');
          // The 10,200 value is only for A4 landscape. You need to define your own for other page sizes
          doc.text('Page ' + String(i) + ' of ' + String(pageCount), pageWidth / 2, pageHeight  - 50, 'center');
      }

      doc.save("Log.pdf");
      let pdfOutput = doc.output();

      // using ArrayBuffer will allow you to put image inside PDF

      let buffer = new ArrayBuffer(pdfOutput.length);
      let array = new Uint8Array(buffer);
      for (var i = 0; i < pdfOutput.length; i++) {
          array[i] = pdfOutput.charCodeAt(i);
      }


      let fileName = "Log" + "-" + Date.now()+".pdf";
      let directory = this.file.externalRootDirectory + 'download/';
      this.filename = fileName;


      let options: IWriteOptions = { replace: true };



      this.file.checkFile(directory, fileName).then((success)=> {
        //Writing File to Device

        this.file.writeFile(directory,fileName,buffer, options)
        .then((success)=> {

          console.log("File created Succesfully" + JSON.stringify(success));

          this.fileOpener.open(directory + fileName, 'application/pdf')
            .then(() => console.log('File is opened'))
            .catch(e => console.log('Error opening file', e));
        })
        .catch((error)=> {
          //this.loading.dismiss();
          console.log("Cannot Create File " +JSON.stringify(error));
        });
      })
      .catch((error)=> {
        //Writing File to Device
        this.file.writeFile(directory,fileName,buffer,options)
        .then((success)=> {

          console.log("File created Succesfully" + JSON.stringify(success));

          this.fileOpener.open(directory + fileName, 'application/pdf')
          .then(() => console.log('File is opened'))
          .catch(e => console.log('Error opening file', e));
        })
        .catch((error)=> {

          console.log("Cannot Create File " +JSON.stringify(error));
        });
      });
    })
    .catch(function (error) {
      console.error('oops, something went wrong!', error);
    });

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...