我安装了laravel-dompdf(v0.8.5),以便为用户生成PDF文件,并希望使用一些不同的字体。
我通过在刀片文件中声明该字体来实现这一目标。
<!DOCTYPE html>
<html>
<head>
<title>{{ $title }}</title>
<style>
@font-face {
font-family: 'Jaldi';
src: url({{storage_path('fonts/Jaldi/Jaldi-Regular.ttf')}}) format("truetype");
}
@font-face {
font-family: 'Jaldi';
src: url({{storage_path('fonts/Jaldi/Jaldi-Bold.ttf')}}) format("truetype");
font-weight: bold;
}
当我生成pdf时(从浏览器),我会在 storage/fonts/dompdf_font_family_cache.php
:
'jaldi' => array(
'normal' => $fontDir . '/jaldi-normal_f26068eedd4182fc16a39c0f4c1a4678',
'bold' => $fontDir . '/jaldi-bold_b51d304a463ce577b3942eb308c7c1ff',
),
我的问题是 新文件在字体目录下生成。的一部分,是我的git仓库。所以当我在其他环境下(开发或生产)做同样的事情时。git状态不清楚了。
我试着在 config/dompdf.php
配置文件。
"font_cache" => storage_path('tmp/font-cache/'),
"temp_dir" => storage_path('tmp/font-cache/'),
但新文件还是在字体目录下生成的.
有什么办法吗?
我不知道这是否是正常行为,但我找到了一个适合我的解决方案。
我在以下目录中创建了两个目录 storage
目录 - fonts
和 fontsCache
:
fonts
目录中包含 ttf
字库fontsCache
目录为空,可写(chmod 777),并从我的仓库(.gitignore)中排除。该 config/dompdf.php
文件包含以下配置。
"font_dir" => storage_path('fontsCache/'),
"font_cache" => storage_path('fontsCache/')
另一方面 blade
文件包含以下代码。
<style>
@font-face {
font-family: 'Jaldi';
src: url({{storage_path('fonts/Jaldi/Jaldi-Regular.ttf')}}) format("truetype");
}
@font-face {
font-family: 'Jaldi';
src: url({{storage_path('fonts/Jaldi/Jaldi-Bold.ttf')}}) format("truetype");
font-weight: bold;
}
通过这种方式,我将由我的版本库控制的文件和由 dompdf 实时生成的文件分开。