Ce bundle fournit un moyen simple de charger / installer des polices de votre choix pour la bibliothèque DOMPDF dans un projet Symfony. Ce bundle offre des fonctionnalités pour charger des familles de polices par programme ou automatiquement sur l'échauffement du cache. Vous pouvez spécifier chaque famille de polices avec un nom et un chemin vers les fichiers de police ou vous laissez le bundle découvert automatiquement toutes les polices dans un répertoire.
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.php (normalement réalisé par Symfony Flex automatiquement)config/packages/jbtronics_dompdf_font_loader.yaml , avec le contenu décrit ci-dessous (et modifié en fonction de votre besoin) 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 "Les polices et les clés de découverte automatique sont toutes deux facultatives, mais au moins une d'entre elles est nécessaire pour charger les polices.
Lorsque vous avez activé l'option auto_install , vous n'avez rien à faire d'autre, les polices seront chargées automatiquement sur le réchauffement du cache (lorsque php bin/console cache:clear est exécuté). Le bundle copiera les fichiers de police dans le répertoire de police DOMPDF, créera des métriques de police et les enregistrera dans la bibliothèque DOMPDF.
Le mécanisme de découverte automatique analysera les répertoires configurés pour les fichiers TTF et les enregistrera en tant que familles de polices avec le nom du fichier de police. Il essaie également de détecter le type de police basé sur un suffixe: _bold ou _b sera détecté comme des polices audacieuses, _italic , _i comme polices italiques, et _bold_italic ou _bi en italique audacieux. Ainsi, le my_font_bold.ttf sera enregistré comme police audacieuse de la famille my_font et ainsi de suite, tandis que my_font.ttf sera enregistré comme police normale de la famille my_font .
En principe, DOMPDF devrait également être en mesure d'utiliser des fichiers OTF, mais dans mes tests, cela n'a pas fonctionné, donc Autodistervert ne détecte que les fichiers TTF par défaut. Vous pouvez modifier les types de fichiers détectés via l'option autodiscovery.file_pattern .
DOMPDF possède son propre répertoire de police, où il stocke les fichiers de police et les mesures. Ceci est configuré sur une base par instance sur un objet DOMPDF avec la méthode set_option('fontDir', $path) . Pour spécifier le répertoire de police pour l'instance DOMPDF utilisée par ce bundle, vous devez décorer le DompdfFactoryInterface et configurer l'objet dans la méthode create() :
#[AsDecorator(decorates: DompdfFactoryInterface::class)]
class MyDompdfFactory implements DompdfFactoryInterface
{
public function create (): Dompdf
{
return new Dompdf ([ ' fontDir ' => ' %kernel.project_dir%/var/dompdf/fonts ' ]);
}
} Ce bundle propose le service DompdfFontLoader , qui peut être utilisé pour installer les familles de polices manuellement. Vous pouvez soit installer une seule famille de polices avec la méthode installFontFamily() , soit installer toutes les polices trouvées dans un dossier avec la méthode autodiscoverAndInstallFonts() .
Ce bundle est sous licence sous la licence du MIT. Voir la licence pour plus de détails.