Ошибка, которую вы видите, связана с кодировкой данных, которые вы пытаетесь декодировать с помощью функции `atob` в браузере. Функция `atob` может обрабатывать только символы в кодировке Latin-1 (ISO-8859-1), и символы, не входящие в эту кодировку, вызывают ошибку.
В случае скачивания PDF-файла с помощью Axios, вам необходимо обрабатывать данные как двоичные, а не как текстовые данные. Для этого опция `responseType` должна быть установлена как `'blob'` (двоичный объект).
Вот пример, как можно скачать PDF-файл с помощью Axios с сохранением его на локальном компьютере:
```javascript
const axios = require('axios');
const fs = require('fs');
axios({
url: 'http://example.com/path/to/file.pdf',
method: 'GET',
responseType: 'blob' // важно указать, что ожидаем двоичные данные
})
.then(response => {
const pdfFile = new Blob([response.data], { type: 'application/pdf' });
const downloadLink = document.createElement('a');
downloadLink.href = window.URL.createObjectURL(pdfFile);
downloadLink.download = 'file.pdf';
downloadLink.click();
})
.catch(error => {
console.error(error);
});
```
В этом примере мы создаем запрос с помощью Axios с указанием опции `responseType: 'blob'`, чтобы получить ответ в виде двоичных данных (blob). Затем мы создаем объект `Blob` с данными ответа и определенным типом ('application/pdf'), создаем ссылку на этот объект, указываем имя файла для скачивания и "кликаем" по ссылке.
Обратите внимание, что этот код будет работать в браузере, так как это клиентская библиотека. Если вы работаете в среде Node.js, то можете воспользоваться модулем `axios` вместе с модулем `fs` для сохранения файла на диск. В этом случае необходимо изменить вызов `downloadLink.click()` на сохранение файла с помощью `fs.writeFile()`.