Я использую PDFJs , чтобы комментировать pdf с использованием fabric js и сохранять полученные изображения холста в pdf с использованием JsPDF .
Вот как я его сохраняю:
canvas.height = viewport.height;
canvas.width = viewport.width;
var width = canvas.width;
var height = canvas.height;
var pdf = new jsPDF('p', 'pt', [width, height]);
$.each(inst.fabricObjects, function (index, fabricObj) {
if (index != 0) {
pdf.addPage();
pdf.setPage(index + 1);
}
var imgData = fabricObj.toDataURL({
format: 'jpg',
quality: 0.9
});
pdf.addImage(imgData, 'jpg', 0, 0, width, height, null, 'FAST');
//pdf.addImage(imgData, 'JPEG', 0, 0, canvas.width, canvas.height);
});
pdf.save("sample.pdf");
Это приводит к увеличению размера PDF с 3,12 МБ до 11,2 МБ и выглядит размытым.
Этот код, который я использовал ранее, сохранял PDF с огромным размером
var pdf = new jsPDF();
$.each(inst.fabricObjects, function (index, fabricObj) {
if (index != 0) {
pdf.addPage();
pdf.setPage(index + 1);
}
pdf.addImage(fabricObj.toDataURL(), 'JPG', 0, 0, canvas.width, canvas.height);
});
Исходный размер файла: 3.12MB
Размер сохраненного файла PDF: 213MB