Я сделал свой сервис загрузки PDF с использованием jspdf, что может быть ошибкой, оглядываясь назад. В любом случае, у меня нет времени на рефакторинг всего модуля сегодня, поэтому я пытаюсь найти решение для уменьшения размера PDF.
const info
const infos
etc...
const header = function (res) {
... ommitted
}
const footer = function (res) {
... ommitted
}
const y = 40
const x = 15
//INTRO
pdf.setFontSize(10)
pdf.text(x, y, info.name, {
})
pdf.text(x, y+6, info.address)
pdf.text(x + 165, y+6, info.pvm)
//HEADER
pdf.setFontSize(15)
pdf.setFontType("bold")
pdf.text(x, y + 30, text)
//TEXT CONTENT
pdf.setFontType("normal")
pdf.setFontSize(10)
pdf.text(x, y + 40, trailer)
//FOOTER
pdf.setFontSize(5)
pdf.text(x, height - 25, infos)
pdf.addPage()
pdf.autoTable(columns, rows,
{
margin: { top: 25, bottom: 30 },
styles: {
overflow: 'linebreak',
fontSize: 4
},
showHeader: 'everyPage',
afterPageContent: footer,
beforePageContent: header,
theme: 'plain',
drawCell: function (cell, data) {
if (cell.text === " ") {
pdf.addPage()
}
}
})
if (typeof pdf.putTotalPages === 'function') {
pdf.putTotalPages(totalPagesExp)
}
this.pdfSender(pdf.output(), cus)
};
Этот код сгенерирует PDF-файл объемом 2,1 Мб с 40 страницами. Старое решение было 632 КБ для 85 страниц. В pdf нет ни одного изображения, просто очень простая c текстовая таблица.
Мне бы хотелось немного узнать, как можно уменьшить размер этого PDF-файла. , его также нужно отправить в бэкэнд как byte []
пропущенные переменные, а нижний и нижний колонтитулы - это просто много-много текста