Вы получили поврежденный PDF, потому что:
- Согласно официальной документации 1005 *,
Base64.decode()
функция декодирует значение Base64 в строку UTF-8. Как
Вы можете видеть, что это неправильная функция, потому что вам нужно декодировать
значение в виде двоичных данных.
- Функция
Base64.atob()
делает именно то, что вам нужно, но вы
сделать ошибку при сохранении данных, потому что, согласно
Официальная документация , по умолчанию fs.writeFile()
Функция сохраняет данные в формате UTF-8, а вы хотите сохранить двоичные данные.
Чтобы правильно декодировать значение Base64 и сохранить его в виде двоичных данных, в зависимости от ваших потребностей, вы можете выбрать один из следующих методов:
требуется ( 'JS-base64'). Base64.atob ()
Расшифруйте значение Base64 с помощью Base64.atob()
и укажите двоичное кодирование при сохранении файла. Это полезно, только если вам нужно обрабатывать двоичные данные. В отличие от других методов, вы должны установить и загрузить модуль "js-base64".
var bin = Base64.atob(stringToDecode);
// Your code to handle binary data
fs.writeFile('result_binary.pdf', bin, 'binary', error => {
if (error) {
throw error;
} else {
console.log('binary saved!');
}
});
Buffer.from
Преобразовать значение Base64 в буфер с помощью Buffer.from()
и сохранить его в файл без указания кодировки. Это полезно, только если вам нужно обработать буфер.
var buf = Buffer.from(stringToDecode, 'base64');
// Your code to handle buffer
fs.writeFile('result_buffer.pdf', buf, error => {
if (error) {
throw error;
} else {
console.log('buffer saved!');
}
});
Опция , кодировка , опция
Если вам не нужно считывать / изменять двоичные данные или буфер, просто укажите опцию кодирования при сохранении файла. Этот метод является самым простым и может быть самым быстрым и наиболее эффективным в использовании памяти.
fs.writeFile('result_base64.pdf', stringToDecode, 'base64', error => {
if (error) {
throw error;
} else {
console.log('base64 saved!');
}
});