Размер файла jspdf достаточно велик только для текста - PullRequest
0 голосов
/ 28 января 2020

Я сделал свой сервис загрузки 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 []

пропущенные переменные, а нижний и нижний колонтитулы - это просто много-много текста

...