Как скачать pdf в nodejs + экспресс?

Я пытаюсь заполнить pdf, и этот pdf нужно скачать. но я не могу скачать этот pdf я использую этот пакет

https://www.npmjs.com/package/node-pdftk

от клиента я запрашиваю вот так

Получить запрос

http://localhost:3000/api/joining-form/[email protected]

export const sendGetRequest = (url, config = {}) => {
    return axios.get(url, config);
}

Как скачать pdf в nodejs + экспресс?

const buf = await pdftk
                .input('templates/joining-form.pdf')
                .fillForm(data)
                .flatten()
                .output()
            res.send(buf);

Как скачать pdf в nodejs + экспресс?

в настоящее время получает этот вывод

%PDF-1.6
%âãÏÓ
1 0 obj 
<<
/FormType 1
/Subtype /Form
/Resources 
<<
/Font 
<<
/Helv 2 0 R
>>
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
>>
/Type /XObject
/BBox [0 0 362.4 28.8]
/Filter /FlateDecode
/Length 87
/Matrix [1 0 0 1 0 0]
>>
stream

нет, если бы я использовал `window.open('url').

user944513 03.05.2019 15:31

если вы набираете новую вкладку, она отображается. Но когда я запускаю запрос на получение, она не отображается

user944513 03.05.2019 15:33

Браузеры знают, как отображать PDF-файлы, поэтому они не предлагают запрос на загрузку, вы можете изменить этот параметр, указав другой заголовок типа контента или используя ссылку <a href = "pathtofile.pdf" download = "filename.pdf">download</a>. axios.get() не будет предлагать пользователю загрузить файл.

Roland Starke 03.05.2019 15:33

@RolandStarke как отправить token

user944513 03.05.2019 15:36

он всегда будет скачивать pdf

user944513 03.05.2019 15:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
238
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На стороне клиента вы можете создать загружаемую базу ссылок на основе ответа на запрос,

Попробуй это:

sendGetRequest(
  "http://localhost:3000/api/joining-form/[email protected]",
  {
    responseType: "blob" // important
  }
).then(response => {
  const url = window.URL.createObjectURL(new Blob([response.data]));
  const link = document.createElement("a");
  link.href = url;
  link.setAttribute("download", "file.pdf");
  document.body.appendChild(link);
  link.click();
});

Другие вопросы по теме