Este pacote fornece uma maneira simples de carregar/instalar fontes de sua escolha para a biblioteca DOMPDF em um projeto Symfony. Este pacote oferece funcionalidade para carregar as famílias de fontes de forma programática ou automaticamente no aquecimento do cache. Você pode especificar cada família de fontes com um nome e um caminho para os arquivos de fonte ou deixa o pacote de descoberta automática todas as fontes em um diretório.
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.php (normalmente feita pela Symfony Flex automaticamente)config/packages/jbtronics_dompdf_font_loader.yaml , com o conteúdo descrito abaixo (e alterado de acordo com sua necessidade) 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 "As fontes e as teclas de descoberta automática são opcionais, mas pelo menos uma delas é necessária para carregar fontes.
Quando você ativar a opção auto_install , não precisa fazer mais nada, as fontes serão carregadas automaticamente no aquecimento do cache (quando php bin/console cache:clear é executado). O pacote copiará os arquivos de font para o diretório de fontes DOMPDF, criará métricas de fonte e as registrará na biblioteca DOMPDF.
O mecanismo de descoberta automática verá os diretórios configurados em busca de arquivos TTF e os registrará como famílias de fontes com o nome do arquivo de fonte. Ele também tenta detectar o tipo de fonte com base em um sufixo: _bold ou _b será detectado como fontes em negrito, _italic , _i como fontes itálicas e _bold_italic ou _bi como italic ousado. Portanto, o my_font_bold.ttf será registrado como uma fonte em negrito da família my_font e assim por diante, enquanto my_font.ttf será registrado como fonte normal da família my_font .
Em princípio, o DOMPDF também deve poder usar arquivos OTF, no entanto, nos meus testes, ele não funcionou, portanto, a descoberta automática detecta apenas arquivos TTF por padrão. Você pode alterar os tipos de arquivos detectados através da opção autodiscovery.file_pattern .
O DOMPDF possui seu próprio diretório de fonte, onde armazena os arquivos e métricas de fonte. Isso é configurado por instância em um objeto DOMPDF com o método set_option('fontDir', $path) . Para especificar o diretório de fontes para a instância do DOMPDF usada por este pacote, você deve decorar o DompdfFactoryInterface e configurar o objeto no método create() :
#[AsDecorator(decorates: DompdfFactoryInterface::class)]
class MyDompdfFactory implements DompdfFactoryInterface
{
public function create (): Dompdf
{
return new Dompdf ([ ' fontDir ' => ' %kernel.project_dir%/var/dompdf/fonts ' ]);
}
} Este pacote oferece o serviço DompdfFontLoader , que pode ser usado para instalar as famílias de fontes manualmente. Você pode instalar uma única família de fontes com o método installFontFamily() ou instalar todas as fontes encontradas em uma pasta com o método autodiscoverAndInstallFonts() .
Este pacote está licenciado sob a licença do MIT. Consulte a licença para obter detalhes.