Laravel DomPdf 添加自定义字体[重复]

作者:编程家 分类: laravel 时间:2025-10-12

使用自定义字体是一个常见的需求,在Laravel DomPdf中也提供了相应的支持。本文将介绍如何添加自定义字体,并给出一个案例代码。

在使用Laravel DomPdf生成PDF时,字体的选择对于最终的输出效果非常重要。如果默认的字体无法满足需求,我们可以通过添加自定义字体来解决这个问题。

首先,我们需要准备好自定义字体文件。通常,字体文件会以.ttf或.otf为后缀。你可以在网上找到各种免费的字体,也可以购买商业字体。确保你有合法的使用权。

接下来,将字体文件保存到Laravel项目的某个目录下,例如`public/fonts`。

然后,我们需要在DomPdf中注册自定义字体。在`config/dompdf.php`配置文件中,找到`'font_dir'`选项,将其值设置为字体文件所在的目录路径,例如`public/fonts`。

接着,在`'font_cache'`选项中设置一个字体缓存目录,例如`storage/fonts`。确保该目录对于Laravel应用来说是可写的。

最后,我们需要告诉DomPdf要使用哪个字体。在生成PDF的代码中,可以使用`setOptions`方法来设置字体选项。例如:

php

$pdf = PDF::loadView('pdf.template', $data);

$pdf->setOptions([

'fontDir' => storage_path('fonts/'),

'fontCache' => storage_path('fonts/'),

'defaultFont' => 'custom_font',

]);

在这个例子中,`custom_font`是我们自定义字体的文件名(不包含后缀)。确保字体文件已经放置在指定的字体目录中。

现在,我们可以在PDF模板中使用自定义字体了。在CSS样式中,通过`font-family`属性指定字体名称。例如:

css

body {

font-family: custom_font, sans-serif;

}

这样,生成的PDF中的文本将会使用我们自定义的字体。

案例代码

下面是一个完整的案例代码,演示如何使用Laravel DomPdf添加自定义字体:

php

// 注册字体

$fontDir = base_path('public/fonts/');

$fontCache = storage_path('fonts/');

$defaultFont = 'custom_font';

$dompdf = new Dompdf();

$options = $dompdf->getOptions();

$options->setFontDir($fontDir);

$options->setFontCache($fontCache);

$options->setDefaultFont($defaultFont);

$dompdf->setOptions($options);

// 加载视图并生成PDF

$data = [

'title' => '使用自定义字体的PDF',

'content' => '这是一段使用自定义字体的文本。',

];

$pdf = PDF::loadView('pdf.template', $data);

$pdf->output();

上述代码中,我们首先注册了自定义字体的相关信息。然后,加载一个包含自定义字体样式的视图,并生成PDF输出。

在视图文件`pdf.template`中,我们可以使用CSS样式来指定字体:

css

body {

font-family: custom_font, sans-serif;

}

这样,生成的PDF中的文本就会使用我们自定义的字体了。

通过以上步骤,我们可以轻松地在Laravel DomPdf中添加自定义字体,并生成使用该字体的PDF文件。这为我们提供了更大的灵活性和定制化的可能性。无论是在商业应用中还是个人项目中,都可以根据具体需求来选择适合的字体,从而得到更好的输出效果。