在GotenbergBundle项目中通过Twig模板嵌入自定义字体生成PDF
在开发基于Symfony的PDF生成功能时,GotenbergBundle是一个非常实用的工具包。本文将详细介绍如何在使用GotenbergBundle生成PDF时,通过Twig模板嵌入自定义字体。
基本原理
GotenbergBundle通过调用Gotenberg服务来将HTML内容转换为PDF文档。在这个过程中,我们可以利用标准的CSS字体嵌入技术(@font-face)来使用自定义字体。
实现步骤
1. 准备字体文件
首先需要将字体文件(如.ttf格式)放置在项目的assets目录下。例如,我们有一个名为"Kanit.ttf"的字体文件。
2. 配置PDF生成器
在PHP代码中配置PDF生成器时,需要明确指定要包含的字体文件:
return $gotenberg
->html()
->content('content.html.twig')
->addAsset('Kanit.ttf') // 从assets目录加载字体文件
->generate();
3. 在Twig模板中定义字体
在HTML模板中,使用标准的CSS @font-face规则定义字体:
<style>
@font-face {
font-family: "my_custom_font";
src: url("Kanit.ttf"); // 注意路径直接使用文件名
font-weight: normal;
font-style: normal;
}
</style>
4. 应用自定义字体
定义好字体后,就可以在CSS样式中使用它了:
h1 {
font-family: "my_custom_font";
color: red;
}
注意事项
- 字体文件路径在模板中必须使用根路径(直接写文件名),不要包含任何目录结构
- 确保字体文件的格式是Gotenberg服务支持的格式(通常.ttf格式都能正常工作)
- 字体文件大小会影响PDF生成的速度和最终文件大小
- 商业字体使用时请注意授权问题
高级用法
如果需要使用多种字体样式(如粗体、斜体等),可以为每种样式单独定义@font-face规则:
@font-face {
font-family: "my_custom_font";
src: url("Kanit-Regular.ttf");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "my_custom_font";
src: url("Kanit-Bold.ttf");
font-weight: bold;
font-style: normal;
}
通过这种方式,可以在PDF文档中使用丰富多样的字体样式,满足各种设计需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



