【问题标题】:How to load fonts and images with Dompdf (laravel-dompdf)?如何使用 Dompdf (laravel-dompdf) 加载字体和图像?
【发布时间】:2021-12-07 15:51:36
【问题描述】:

我已经安装了 Laravel 8 和 laravel-dompdf。

在 config/domppdf.php 文件中我有一些设置

"font_dir" => storage_path('pdf-assets-cache/'),
"font_cache" => storage_path('pdf-assets-cache/'),
"temp_dir" =>  storage_path('pdf-assets-cache/'),
"chroot" => realpath(base_path()),
"pdf_backend" => "PDFLib",
"enable_remote" => true,
"enable_html5_parser" => true,

观点:

@font-face {
    font-family: 'TTNorms-Reg';
    src: url('/pdf-fonts/TTNorms-Reg.eot') format('embedded-opentype'),
        url('/pdf-fonts/TTNorms-Reg.woff2'),
        url('/pdf-fonts/TTNorms-Reg.woff') format("woff"),
        url('/pdf-fonts/TTNorms-Reg.ttf');
    format("truetype");
}

body {
    color: black !important;
    background: white;
    font-size: 13px;
    line-height: 20px;
    font-family: TTNorms-Reg;
}

在我的控制器中我尝试过

$pdf = PDF::loadView('frontend.attendees.ticket', $data)
    ->setPaper('a4', 'portrait')
    ->setOptions(['dpi' => 96,
        'isHtml5ParserEnabled' => TRUE,
        'isRemoteEnabled' => TRUE,
        'enable_html5_parser' => TRUE,
        'enable_remote' => TRUE,
        'enable_css_float' => TRUE, 
'chroot' => storage_path('/')]);

视图完美加载 return view('frontend.attendees.ticket', $data);

但是pdf的结果是没有图片和字体的。

启用警告时,我得到: Permission denied on /pdf-fonts/TTNorms-Reg.woff2. The file could not be found under the paths specified by Options::chroot

有点卡住了。非常感谢任何帮助或提示!

【问题讨论】:

    标签: laravel-8 dompdf


    【解决方案1】:

    通过将 utm 和缓存添加到 storage/pdf-assets-cache/ 文件夹中解决。步骤:

    1. 不需要:
    @font-face {
        font-family: 'TTNorms-Reg';
        src: url('/pdf-fonts/TTNorms-Reg.eot') format('embedded-opentype'),
            url('/pdf-fonts/TTNorms-Reg.woff2'),
            url('/pdf-fonts/TTNorms-Reg.woff') format("woff"),
            url('/pdf-fonts/TTNorms-Reg.ttf');
        format("truetype");
    }
    
    1. 下载 load_font.php https://github.com/dompdf/utils/blob/master/load_font.php

    2. 在终端

    php load_font.php TTNorms-Reg public/fonts/TTNorms-Reg.ttf
    php load_font.php MG-mono public/fonts/MonumentGrotesk-Mono.ttf
    
    1. 将新生成的 .ufm、.ufm.php、dompdf_font_family_cache.php 文件复制到 vendor/dompdf/dompdf/lib/fonts/ 文件夹 到 storage/pdf-assets-cache/文件夹

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 2015-10-22
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2018-03-27
      相关资源
      最近更新 更多