aklump / dompdf-fonts
简化使用DomPDF的TrueType字体。
0.0.18
2024-03-19 23:22 UTC
Requires
- dompdf/dompdf: ^1.0|^2.0
- symfony/filesystem: ^4.4|^5.4
- symfony/yaml: ^4.4|^5.4
README
我编写了这个项目,以便简化使用 自定义字体 与 DOMPDF。
安装
composer require aklump/dompdf-fonts
- 在您的项目中创建一个目录以存储源字体和配置文件。
- 将位于 vendor/aklump/dompdf-fonts/dompdf-fonts.config.dist.yml 中的配置文件复制到字体文件夹中,命名为 dompdf-fonts.config.yml。
在Drupal模块中
安装
cd my_module
- 作为开发要求安装:
composer require --dev aklump/dompdf-fonts
mkdir fonts
cp vendor/aklump/dompdf-fonts/dompdf-fonts.config.dist.yml fonts/dompdf-fonts.config.yml
导入
- 将源字体复制到
fonts/
。 ./vendor/bin/import.php fonts/dompdf-fonts.config.yml
例如
composer require aklump/dompdf-fonts mkdir fonts cp vendor/aklump/dompdf-fonts/dompdf-fonts.config.dist.yml fonts/dompdf-fonts.config.yml
获取.ttf字体文件
- 下载一个或多个字体族,例如从 https://fonts.google.com
- 对于DomPDF的使用,您只需要 .ttf 版本。将这些文件复制到您的源目录。在下面的示例中,该目录是 ./fonts。
- 您可能需要四种字体版本:正常、粗体、斜体和粗体斜体。
示例文件树。
.
├── dist
│ └── dompdf_fonts
│ ├── Merriweather--bold-italic.ttf
│ ├── Merriweather--bold-italic.ufm
│ ├── Merriweather--bold.ttf
│ ├── Merriweather--bold.ufm
│ ├── Merriweather--italic.ttf
│ ├── Merriweather--italic.ufm
│ ├── Merriweather--normal.ttf
│ ├── Merriweather--normal.ufm
│ ├── _style.scss
│ └── installed-fonts.json
└── fonts
├── dompdf-fonts.config.yml
├── Merriweather--bold-italic.ttf
├── Merriweather--bold.ttf
├── Merriweather--italic.ttf
├── Merriweather--normal.ttf
└── dompdf
└── import.php
设置导入配置
- dompdf-fonts.config.yml 应在安装时从 dompdf-fonts.config.dist.yml 复制,如果不是,现在必须手动进行。
- 根据需要更新 dompdf-fonts.config.yml。所有路径均相对于 dompdf-fonts.config.yml 的父目录。
文件: _dompdf-fonts.config.yml
sources: - ../Merriweather*.ttf output: ../../dist/dompdf_fonts/
运行导入器
- 运行
php vendor/bin/import.php path/to/dompdf-fonts.config.yml
处理您的字体。 - 检查以确保输出目录包含必要的文件。
与DomPDF实例一起使用
- 将字体目录设置为与您的代码中每个新的DOMPDF实例上的
output.path
匹配。这是一个来自Drupal 9模块的示例。
$options = new \Dompdf\Options(); // Determine the configuration directory by reading the import config. $fonts_base_path = \Drupal::service('extension.list.module') ->getPath('my_module') . '/fonts'; $fonts_config = \Symfony\Component\Yaml\Yaml::parseFile($fonts_base_path . '/dompdf-fonts.config.yml'); $fonts_dir = realpath($fonts_base_path . '/' . $fonts_config['output']['path']); $options->setFontDir($fonts_dir); $dompdf = new \Dompdf\Dompdf($options);
与HTML标记一起使用
- 要在浏览器中查看您的字体,必须导入SCSS部分。当仅渲染PDF时,DOMPDF不使用 _style.scss。
文件: my_module/scss/_pdf.scss
@import "../dist/dompdf_fonts/style"; @mixin pdf_font_serif { font-family: Merriweather, Georgia, Times, "Times New Roman", serif; } h1 { @include pdf_font_serif; }