Этот пакет обеспечивает простой способ загрузить/установить шрифты по вашему выбору для библиотеки DOMPDF в проекте Symfony. Этот пакет предлагает функциональность для программного или автоматического загрузки семейств шрифтов в разминку кэша. Вы можете указать каждую семью шрифтов с именем и путем к файлам шрифтов, или вы позволите пакету автоматически раскрыть все шрифты в каталоге.
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 "Шрифты и ключи от автоматического открытия являются необязательными, но, по крайней мере, один из них требуется для загрузки шрифтов.
Когда вы включили опцию auto_install , вам не нужно ничего делать, шрифты будут автоматически загружены на разминку кэша (когда php bin/console cache:clear выполняется). Компания скопирует файлы шрифтов в каталог DOMPDF FONT, создаст метрики FONT и зарегистрирует их в библиотеке DOMPDF.
Механизм автоматического открытия сканирует настроенные каталоги для файлов TTF и зарегистрирует их в качестве семейства шрифтов с именем файла шрифта. Он также пытается обнаружить тип шрифта на основе суффикса: _bold или _b будет обнаружена как жирные шрифты, _italic , _i в качестве курсивных шрифтов и _bold_italic или _bi как жирный курсив. Таким образом, my_font_bold.ttf будет зарегистрирован как жирный шрифт семьи my_font и т. Д., В то время как my_font.ttf будет зарегистрирован как обычный шрифт семьи my_font .
В принципе DOMPDF также должен быть в состоянии использовать файлы OTF, однако в моих тестах он не работал, поэтому автоматическое открытие только обнаруживает файлы TTF по умолчанию. Вы можете изменить обнаруженные типы файлов через опцию autodiscovery.file_pattern .
DOMPDF имеет свой собственный каталог шрифтов, где он хранит файлы и метрики шрифтов. Это настроено на основе экземпляра на объекте DOMPDF с помощью метода set_option('fontDir', $path) . Чтобы указать каталог FONT для экземпляра 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() .
Этот пакет лицензирован по лицензии MIT. Смотрите лицензию для деталей.