2

我正在尝试使用 Snappy Laravel 以 PDF 格式导出页面。我有包含所有 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 文件中,但它也不起作用。

4

2 回答 2

1

在刀片中将其更改为 <link href="{{ asset('/css/app.css') }}" rel="stylesheet"/>

<link href="{{ public_path('css/pdf.css') }}" rel="stylesheet" type="text/css" />

这解决了我这边的问题。

于 2019-03-28T17:03:40.883 回答
0

使用 Docker 在 Lumen(几乎与 Laravel 相同)上使用 Snappy 时,我遇到了同样的问题。我必须尝试几件事才能让它最终为我工作。

就我而言,在文件中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 文档)

然后在 HTML 文件中定义文件(CSS/JS/IMG)的路径,我使用了方法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 打交道的可怜的程序员。

于 2021-09-21T20:38:49.490 回答