Я использую 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);
});
}