Использую библиотеку snappy для генерации PDF. Били отеку подключила для Laravel. Сама генерации я работает нормально. Но когда в контроллере отдаю файл на скачивание, в браузере не происходит скачивание, вместо этого, он пытается вывести содержимое.
Код контроллера:
<?php
namespace App\Http\Controllers;
use App\Services\AmoCredentials;
use Carbon\Carbon;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\App;
class PdfGeneratorController extends Controller
{
public function generate(int $leadId)
{
$lead = AmoCredentials::getApiClient()->leads()->getOne($leadId);
$cf = $lead->getCustomFieldsValues();
$fields = [];
$dates = [820727, 671325];
if ($cf) {
$fields = collect($cf->toArray())
->mapWithKeys(function (array $a, $key) use ($dates) {
$value = implode(', ', Arr::pluck(Arr::get($a, 'values'), 'value'));
if(in_array(Arr::get($a, 'field_id'), $dates)) {
$value = Carbon::make($value);
}
return [
Arr::get($a, 'field_id') =>$value
];
});
}
// $html = Blade::render('kp', ['id' => $lead->getId(), 'price' => $lead->getPrice(), 'fields' => $fields]);
$filename = 'test.pdf';
$kp = Blade::render('kp-test');
$pdf = App::make('snappy.pdf.wrapper');
$pdf = \PDF::loadView('kp-test');
$pdf->setOption('encoding', 'UTF-8');
$pdf->setOption('page-width', '200');
$pdf->setOption('page-height', '650');
$pdf->setOption('user-style-sheet', "body { font-size: '16px'; }");
//return $pdf->generateFromHtml($kp, $filename);
return $pdf->download($filename);
}
}
Получаю в браузере типа такого:
Если, например вместо
return $pdf->download($filename);
использовать
return $pdf->generateFromHtml($kp, $filename);
то файл PDF генерируется и сохраняется в папку public,если открыть в браузере, то все нормально.
Но если использовать методы download, output, inline, stream вывод в браузере получаю, как скриншоте выше.
Может, кто знает, в чем проблема?