Я работаю над «DomPDF
», используя запрос Ajax Post в проекте Laravel. Ниже приведен код ajax.
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')
}
});
$.ajax({
url:"{{ route('screen.pdfticket') }}",
method:"POST",
data:{
id:$('#screenid').val()
},
success:function(data){
console.info(data);
}
});
А ниже код в контроллере.
$customPaper = array(0,0,216,158);
$pdf->loadView("screen.ticket" , [
'clinic' => 'clinic name' ,
'queno' => $screen->que
])->setPaper($customPaper, 'landscape');
return $pdf->download($screen->que .'.pdf');
Я могу получить правильный ответ, но это не читаемый формат. Я хотел бы сохранить в формате pdf после того, как ajax вызвал успех. Любые советы или рекомендации будут с благодарностью, спасибо.
Используйте stream() для потоковой передачи созданного PDF-файла в браузер и используйте output() для получения правильного формата возврата. См. https://github.com/dompdf/dompdf/wiki/Использование для получения дополнительной информации.
Поскольку вы делаете запрос с помощью AJAX, вам нужен способ, чтобы браузер загружал ресурс.
Есть способы пойти, но не ограничиваясь следующим:
Верните URL-адрес ресурса в ответ на запрос AJAX, а затем сделайте отдельный запрос браузера для загрузки ресурса.
Сделайте большой двоичный объект ответа ресурса на запрос AJAX, а затем загрузите его из URL-адреса большого двоичного объекта.
Это показано на примере ниже.
function downloadFile(response) {
var blob = new Blob([response], {type: 'application/pdf'})
var url = URL.createObjectURL(blob);
location.assign(url);
}
$.ajax({
url: "{{ route('screen.pdfticket') }}",
method: 'POST',
data: {
id: $('#screenid').val()
}
})
.done(downloadFile);
Уважаемый Олувафеми Суле, Большое спасибо.