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.

Другие вопросы по тегам