Snappy Laravel PDF экспорт не загружается CSS
Я пытаюсь экспортировать страницу в формате PDF с помощью Snappy Laravel. У меня есть страница со всем CSS, и она прекрасно работает и выглядит великолепно, но когда я пытаюсь ее экспортировать, моя страница загружается в формате pdf, но без CSS. Вот код и то, что я уже попробовал:
контроллер:
$pdf = PDF::loadView('admin.userReport');
$pdf->setOption('enable-javascript', true);
$pdf->download('myFileName.pdf');
Голова:
<link href="{{ asset('/css/app.css') }}" rel="stylesheet"/>
PS: я пытался указать абсолютный путь к файлу CSS, но он тоже не работает.
3 ответа
Измените это в вашем клинке на <link href="{{ asset('/css/app.css') }}" rel="stylesheet"/>
в <link href="{{ public_path('css/pdf.css') }}" rel="stylesheet" type="text/css" />
это решит проблему с моей стороны.
В моем случае у меня есть последние версии Snappy и wkhtmltopdf.
Вот моя конфигурация Snappy:
'pdf' => [
'enabled' => true,
'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf'),
'timeout' => false,
'options' => [
'enable-local-file-access' => true,
'keep-relative-links' => true,
],
'env' => [],
],
Вот мой файл Blade для включения файла:
<link href="{{ public_path('css/pdf.css', ) }}" rel="stylesheet">
Оно работало завораживающе.
У меня была такая же проблема с Snappy на Lumen (почти такая же, как у Laravel) с использованием Docker. Мне пришлось попробовать несколько вещей, чтобы заставить его наконец работать на меня.
В моем случае в файле
config/snappy.php
Я поставил такой код:
'pdf' => [
'enabled' => true,
'binary' => env('WKHTML_PDF_BINARY', '/usr/local/bin/wkhtmltopdf'),
'timeout' => false,
'options' => [
'enable-local-file-access' => true,
'keep-relative-links' => true,
],
'env' => [],
],
Установка
enable-local-files-access
Переменная является ключом к правильному чтению и загрузке файлов CSS / JS / IMG. (документы wkhtmltopdf)
Затем, чтобы определить путь к файлам (CSS / JS / IMG) в файле HTML, я использовал метод
file:///var/www/html/public/<file-path>
(в моем случае файлы находятся в общей папке), например:
<link rel="stylesheet" href="file:///var/www/html/public/html/css/icons/app.css" type="text/css"/>
<script src="file:///var/www/html/public/html/js/js_file.js"></script>
<img src="file:///var/www/html/public/html/css/img/icon.png"/>
У меня отлично работает без проблем. Вы можете адаптировать маршрут так, чтобы он работал на вас.
Надеюсь, это поможет вам (несмотря на годы) и поможет другому бедному программисту, которому приходится иметь дело со Snappy.