Este paquete proporciona una forma simple de cargar/instalar fuentes de su elección para la biblioteca DOMPDF en un proyecto Symfony. Este paquete ofrece funcionalidad para cargar familias de fuentes programada o automáticamente en el calentamiento de caché. Puede especificar a cada familia de fuentes con un nombre y una ruta a los archivos de fuentes o deja que el paquete automátelo automáticamente todas las fuentes en un directorio.
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.php (normalmente realizado por Symfony Flex automáticamente)config/packages/jbtronics_dompdf_font_loader.yaml , con el contenido que se describe a continuación (y cambió según su necesidad) 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 "Las fuentes y las teclas de autodescubrimiento son opcionales, pero al menos una de ellas se requiere para cargar fuentes.
Cuando haya habilitado la opción auto_install , no tiene que hacer nada más, las fuentes se cargarán automáticamente en el calentamiento de caché (cuando php bin/console cache:clear se ejecuta). El paquete copiará los archivos de fuentes en el directorio de fuentes DOMPDF, creará métricas de fuentes y los registrará en la biblioteca DOMPDF.
El mecanismo de autodescubrimiento escaneará los directorios configurados para los archivos TTF y los registrará como familias de fuentes con el nombre del archivo de fuentes. También trata de detectar el tipo de fuente basado en un sufijo: _bold o _b se detectará como fuentes audaces, _italic , _i como fuentes cursivas y _bold_italic o _bi como cursiva audaz. Entonces, el my_font_bold.ttf se registrará como una fuente audaz de la familia my_font , etc., mientras que my_font.ttf se registrará como fuente normal de la familia my_font .
En principio, DOMPDF también debería poder usar archivos OTF, sin embargo, en mis pruebas no funcionó, por lo que el autodescubrimiento solo detecta archivos TTF de forma predeterminada. Puede cambiar los tipos de archivos detectados a través de la opción autodiscovery.file_pattern .
DOMPDF tiene su propio directorio de fuentes, donde almacena los archivos de fuentes y las métricas. Esto se configura en una base por instancia en un objeto DOMPDF con el método set_option('fontDir', $path) . Para especificar el directorio de fuentes para la instancia DOMPDF utilizada por este paquete, debe decorar el DompdfFactoryInterface y configurar el objeto en el 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 paquete ofrece el servicio DompdfFontLoader , que se puede utilizar para instalar familias de fuentes manualmente. Puede instalar una sola familia de fuentes con el método installFontFamily() o instalar todas las fuentes encontradas en una carpeta con el método autodiscoverAndInstallFonts() .
Este paquete tiene licencia bajo la licencia MIT. Vea la licencia para más detalles.