Преобразование Base64 в PDF-файл в JavaScript: подробное руководство

В веб-разработке может возникнуть необходимость преобразовать строку в кодировке Base64 в файл PDF. Независимо от того, работаете ли вы над функцией загрузки файлов или имеете дело с манипулированием данными, возможность конвертировать Base64 в файл PDF является ценным навыком. В этой статье мы рассмотрим несколько методов JavaScript для выполнения этой задачи. Итак, приступим!

Метод 1: использование библиотеки (pdf-lib)
Если вы ищете простой и эффективный способ преобразования Base64 в PDF-файл, использование библиотеки JavaScript, такой как pdf-lib, может быть отличным выбором. Вот пример того, как этого можно добиться:

const { PDFDocument } = require('pdf-lib');
async function convertBase64ToPDF(base64String) {
  const pdfBytes = Buffer.from(base64String, 'base64');
  const pdfDoc = await PDFDocument.load(pdfBytes);

  // Perform any required modifications to the PDF document here

  const modifiedPdfBytes = await pdfDoc.save();
  return modifiedPdfBytes;
}
const base64String = '...'; // Replace with your Base64-encoded string
const modifiedPdfBytes = await convertBase64ToPDF(base64String);
// Save modifiedPdfBytes to a file or perform further actions

Метод 2. Использование атрибута загрузки HTML5
Если вы работаете в среде браузера и хотите предоставить пользователю возможность загрузить преобразованный PDF-файл, вы можете использовать HTML5 downloadвместе с API Blob. Вот пример:

function convertBase64ToPDF(base64String, fileName) {
  const byteCharacters = atob(base64String);
  const byteArrays = [];

  for (let offset = 0; offset < byteCharacters.length; offset += 512) {
    const slice = byteCharacters.slice(offset, offset + 512);
    const byteNumbers = new Array(slice.length);

    for (let i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }

    const byteArray = new Uint8Array(byteNumbers);
    byteArrays.push(byteArray);
  }

  const blob = new Blob(byteArrays, { type: 'application/pdf' });
  const url = URL.createObjectURL(blob);

  const link = document.createElement('a');
  link.href = url;
  link.download = fileName;
  link.click();

  URL.revokeObjectURL(url);
}
const base64String = '...'; // Replace with your Base64-encoded string
const fileName = 'document.pdf'; // Replace with the desired file name
convertBase64ToPDF(base64String, fileName);

Метод 3: использование PDF.js
PDF.js — популярная библиотека JavaScript для работы с PDF-файлами в браузере. Он предоставляет ряд функций, включая возможность конвертировать строку Base64 в файл PDF. Вот пример:

function convertBase64ToPDF(base64String) {
  const data = atob(base64String);
  const buffer = new Uint8Array(data.length);

  for (let i = 0; i < data.length; i++) {
    buffer[i] = data.charCodeAt(i);
  }

  PDFJS.getDocument(buffer).then(function (pdf) {
    // Perform any required modifications to the PDF document here

    pdf.save('converted.pdf'); // Save the modified PDF document
  });
}
const base64String = '...'; // Replace with your Base64-encoded string
convertBase64ToPDF(base64String);

В этой статье мы рассмотрели три различных метода преобразования строки в кодировке Base64 в файл PDF с помощью JavaScript. Мы узнали, как использовать библиотеку pdf-lib, атрибут загрузки HTML5 и библиотеку PDF.js. В зависимости от ваших конкретных требований и настроек проекта вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Теперь у вас есть знания и инструменты для легкого преобразования Base64 в PDF в ваших приложениях JavaScript.