このバンドルは、SymfonyプロジェクトでDOMPDFライブラリに選択したフォントをロード/インストールする簡単な方法を提供します。このバンドルは、キャッシュウォームアップでプログラムまたは自動的にフォントファミリーをロードする機能を提供します。各フォントファミリーをフォントファイルへの名前とパスで指定するか、ディレクトリ内のすべてのフォントをバンドルを自動化することができます。
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.phpでバンドルを有効にします(通常はSymfony Flexによって自動的に行われます)config/packages/jbtronics_dompdf_font_loader.yamlを追加します(以下に説明します(必要に応じて変更されました) dompdf_font_loader :
# Set this to true to enable the automatic font loading on cache warmup, without it you have to load the fonts
# manually via the ConfiguredFontsInstaller service
auto_install : true
# You can specify font families here manually
fonts :
my_font : # The name of the font family (used to access it in dompdf later)
# A font family consists of up to four font files (normal, bold, italic, bold_italic)
normal : " %kernel.project_dir%/assets/fonts/my_font.ttf "
bold : " %kernel.project_dir%/assets/fonts/my_font_bold.ttf "
italic : " %kernel.project_dir%/assets/fonts/my_font_italic.ttf "
bold_italic : " %kernel.project_dir%/assets/fonts/my_font_bold_italic.ttf "
# But only the normal font file is required, the others can be omitted
unifont :
normal : " %kernel.project_dir%/assets/fonts/unifont.ttf "
# Autodiscover allows you to specify directories, where all fonts will be loaded automatically
autodiscovery :
# Each of this directory will be scanned for font files
paths :
- " %kernel.project_dir%/assets/fonts "
- " %kernel.project_dir%/vendor/fonts/package/ttfs "
exclude_patterns :
# You can exclude certain patterns from the autodiscovery if you want
- " exclude_this_font.ttf "フォントと自動化キーはどちらもオプションですが、フォントをロードするには少なくともそのうちの1つが必要です。
auto_installオプションを有効にした場合、他に何もする必要はありません。フォントはキャッシュウォームアップで自動的にロードされます( php bin/console cache:clear Is Run)。バンドルは、フォントファイルをDOMPDFフォントディレクトリにコピーし、フォントメトリックを作成し、DOMPDFライブラリに登録します。
AutoDiscoveryメカニズムは、TTFファイルの設定されたディレクトリをスキャンし、フォントファイルの名前を持つフォントファミリとして登録します。また、接尾辞に基づいてフォントのタイプを検出しようとします: _boldまたは_b 、太字のフォント、 _italic 、 _i 、_i it、 _bold_italicまたは_biとして検出されます。したがって、 my_font_bold.ttf my_fontファミリの太字のフォントとして登録されますが、 my_font.ttf my_fontファミリーの通常のフォントとして登録されます。
原則的には、DOMPDFもOTFファイルを使用できるはずですが、私のテストでは機能しませんでした。そのため、自動化はデフォルトでTTFファイルのみを検出します。 autodiscovery.file_patternオプションを使用して、検出されたファイルタイプを変更できます。
DOMPDFには、フォントファイルとメトリックを保存する独自のフォントディレクトリがあります。これはset_option('fontDir', $path)メソッドを備えたDOMPDFオブジェクトでインスタンスごとに構成されています。このバンドルで使用されるDOMPDFインスタンスのフォントディレクトリを指定するには、 DompdfFactoryInterfaceを飾り、 create()メソッドでオブジェクトを構成する必要があります。
#[AsDecorator(decorates: DompdfFactoryInterface::class)]
class MyDompdfFactory implements DompdfFactoryInterface
{
public function create (): Dompdf
{
return new Dompdf ([ ' fontDir ' => ' %kernel.project_dir%/var/dompdf/fonts ' ]);
}
}このバンドルは、 DompdfFontLoaderサービスを提供します。これは、フォントファミリを手動でインストールするために使用できます。 installFontFamily()メソッドを使用して単一のフォントファミリーをインストールするか、 autodiscoverAndInstallFonts()メソッドを使用して、FOUND FOUND FONTSをすべてフォルダーにインストールできます。
このバンドルは、MITライセンスの下でライセンスされています。詳細については、ライセンスを参照してください。