Я использую vue.js и нашел несколько хороших примеров, как это реализовать.
В настоящее время мой API возвращает test-pdf:
$snappy = App::make('snappy.pdf');
$html = '<h1>Bill</h1><p>You owe me money, dude.</p>';
return Response(
$snappy->getOutputFromHtml($html),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="file.pdf"'
)
);
Загрузка контента через Почтальон работаетхорошо.
Я управлял JS-частью следующим образом:
export const InvoiceService = {
get(slug) {
return ApiService.get("invoice", slug);
},
downloadPdf(slug) {
return ApiService.get(`pdf/invoice`, slug, {
responseType: 'arraybuffer'
});
}
};
и:
InvoiceService.downloadPdf(invoiceId)
.then(({ data }) => {
let blob = new Blob([data], {
type: "application/pdf"
});
FileSaver.saveAs(blob, "invoice.pdf");
})
.catch(error => {
throw new Error(error);
});
Загрузка работает нормально, но файл, загруженный через js, кажется,поврежден (PDF не будет отображаться):
Текст, помеченный зеленым цветом, является содержимым рабочего файла.
Я думаю, что-то напутано с кодировкой,но у меня кончились идеи: (
Надеюсь, кто-нибудь может дать мне подсказку - это сводит меня с ума:)
С наилучшими пожеланиями - Алекс