aklump/dompdf-fonts

简化使用DomPDF的TrueType字体。

0.0.18 2024-03-19 23:22 UTC

This package is auto-updated.

Last update: 2024-09-20 00:21:11 UTC


README

我编写了这个项目,以便简化使用 自定义字体DOMPDF

安装

  1. composer require aklump/dompdf-fonts
  2. 在您的项目中创建一个目录以存储源字体和配置文件。
  3. 将位于 vendor/aklump/dompdf-fonts/dompdf-fonts.config.dist.yml 中的配置文件复制到字体文件夹中,命名为 dompdf-fonts.config.yml

在Drupal模块中

安装

  1. cd my_module
  2. 作为开发要求安装: composer require --dev aklump/dompdf-fonts
  3. mkdir fonts
  4. cp vendor/aklump/dompdf-fonts/dompdf-fonts.config.dist.yml fonts/dompdf-fonts.config.yml

导入

  1. 将源字体复制到 fonts/
  2. ./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字体文件

  1. 下载一个或多个字体族,例如从 https://fonts.google.com
  2. 对于DomPDF的使用,您只需要 .ttf 版本。将这些文件复制到您的源目录。在下面的示例中,该目录是 ./fonts
  3. 您可能需要四种字体版本:正常、粗体、斜体和粗体斜体。

示例文件树。

.
├── 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

设置导入配置

  1. dompdf-fonts.config.yml 应在安装时从 dompdf-fonts.config.dist.yml 复制,如果不是,现在必须手动进行。
  2. 根据需要更新 dompdf-fonts.config.yml。所有路径均相对于 dompdf-fonts.config.yml 的父目录。

文件: _dompdf-fonts.config.yml

sources:
  - ../Merriweather*.ttf
output: ../../dist/dompdf_fonts/

运行导入器

  1. 运行 php vendor/bin/import.php path/to/dompdf-fonts.config.yml 处理您的字体。
  2. 检查以确保输出目录包含必要的文件。

与DomPDF实例一起使用

  1. 将字体目录设置为与您的代码中每个新的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标记一起使用

  1. 要在浏览器中查看您的字体,必须导入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;
}

资源链接