Как парвильно сделать генерацию PDF в express?

Для создания генерации PDF-файлов в Node.js с использованием Express, вы можете использовать библиотеку pdfmake. Эта библиотека предоставляет простой способ создания PDF-документов с помощью JavaScript. Вот пошаговое руководство по созданию генерации PDF в Express с использованием pdfmake:

Шаг 1: Установите зависимость

Установите пакет pdfmake с помощью npm:

npm install pdfmake

Шаг 2: Создание маршрута

Создайте маршрут для генерации PDF. В файле app.js или index.js, добавьте следующую строку, чтобы импортировать pdfmake:

const pdfMake = require('pdfmake');

Затем создайте маршрут, который будет обрабатывать запрос на генерацию PDF:

app.get('/generate-pdf', (req, res) => {
  // Здесь будет код для генерации PDF
});

Далее, внутри маршрута, вы можете создать документ PDF с помощью pdfmake. Создайте объект pdfMake.createPdf(docDefinition) и передайте в него определение документа:

app.get('/generate-pdf', (req, res) => {
  const docDefinition = {
    content: [
      'Привет, мир!'
    ]
  };

  const pdfDoc = pdfMake.createPdf(docDefinition);
});

docDefinition - это объект, содержащий определение документа. В приведенном выше примере мы просто добавили один элемент "Привет, мир!".

Шаг 3: Сохранение или отправка PDF

После создания документа PDF, у вас есть несколько вариантов, как обрабатывать его. Можете сохранять PDF локально или отправлять его пользователю. Вот примеры обоих вариантов:

Сохранение PDF локально:

app.get('/generate-pdf', (req, res) => {
  const docDefinition = {
    content: [
      'Привет, мир!'
    ]
  };

  const pdfDoc = pdfMake.createPdf(docDefinition);

  pdfDoc.getBuffer(buffer => {
    fs.writeFile('example.pdf', buffer, err => {
      if (err) {
        console.log(err);
        res.status(500).send('Ошибка сохранения PDF');
      } else {
        res.send('PDF сохранен');
      }
    });
  });
});

Отправка PDF пользователю:

app.get('/generate-pdf', (req, res) => {
  const docDefinition = {
    content: [
      'Привет, мир!'
    ]
  };

  const pdfDoc = pdfMake.createPdf(docDefinition);

  pdfDoc.getBuffer(buffer => {
    res.setHeader('Content-Type', 'application/pdf');
    res.setHeader('Content-Disposition', 'attachment; filename=example.pdf');
    res.send(buffer);
  });
});

После вызова pdfDoc.getBuffer(), вы можете либо сохранить PDF-файл на локальном диске, используя fs.writeFile, либо отправить его пользователю, устанавливая правильные заголовки и отправляя буфер.

Шаг 4: Тестирование

Запустите сервер Express и перейдите по URL /generate-pdf. Вы должны увидеть сообщение о сохранении PDF или загрузке файла в зависимости от варианта, который вы выбрали для обработки файла в маршруте.

Вот таким образом вы можете создать генерацию PDF в Express с использованием библиотеки pdfmake. Запомните, что это только базовый пример и pdfmake предоставляет более сложные возможности для создания настраиваемых документов PDF, содержащих таблицы, изображения и другие элементы. Не забудьте прочитать документацию pdfmake, чтобы узнать больше о его возможностях.