Ошибка при открытии pdf laravel (неправильно отображается в браузере)
У меня проблемы с открытием существующего PDF из каталога в laravel. Код прекрасно работает с чистым PHP, но перенос его на laravel не работает должным образом, потому что он не отображается правильно в браузере, это выглядит так:
% PDF-1.5 3 0 obj <> / Содержание 4 0 R>> endobj 4 0 obj <> stream x } NAE 1 E= bq~ I = .....
код выглядит следующим образом:
//eval_pdf.blade.php
File::requireOnce('fpdf.php');
File::requireOnce('fpdi.php');
$pdf = new FPDI('P','mm','Letter');
$pdf->AddPage();
$pdf->SetAutoPageBreak(true,10);
$sourceFileName = app_path().'/include/formato.pdf';
$pdf->setSourceFile($sourceFileName);
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx);
$pdf->SetFont('helvetica','B',8);
.
.
.
$pdf->SetXY(86, 21);
$pdf->Write(0, utf8_decode($comp));
.
.
.
$pdf->Output();
В чем может быть проблема и как ее решить?
1 ответ
Решение
Вы должны использовать что-то вроде этого:
вместо $pdf->Output();
использовать:
$pdfContent = $pdf->Output('', "S");
сохранить содержимое в строку
а затем вернуть ответ, например:
return response($pdfContent, 200,
[
'Content-Type' => 'application/pdf',
'Content-Length' => strlen($pdfContent),
'Content-Disposition' => 'attachment; filename="mypdf.pdf"',
'Cache-Control' => 'private, max-age=0, must-revalidate',
'Pragma' => 'public'
]
);