Dieses Bundle bietet eine einfache Möglichkeit, Schriftarten Ihrer Wahl für die Dompdf -Bibliothek in einem Symfony -Projekt zu laden/zu installieren. Dieses Bundle bietet Funktionen, um Schriftfamilien programmgesteuert oder automatisch beim Cache -Aufwärmen zu laden. Sie können jede Schriftfamilie mit einem Namen und einem Pfad zu den Schriftartdateien angeben oder das Bundle autodell alle Schriftarten in einem Verzeichnis automatisch entdecken.
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.php (normalerweise von Symfony Flex automatisch).config/packages/jbtronics_dompdf_font_loader.yaml hinzu, wobei der unten beschriebene Inhalt beschrieben wurde (und entsprechend Ihrer Bedürfnisse geändert). 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 "Die Schriftarten und Autodiscovery -Schlüssel sind beide optional, aber mindestens einer von ihnen ist erforderlich, um Schriftarten zu laden.
Wenn Sie die Option auto_install aktiviert haben, müssen Sie nichts php bin/console cache:clear tun. Das Bundle kopiert die Schriftartdateien in das Dompdf -Font -Verzeichnis, erstellt Schriftart Metriken und registriert sie in der Dompdf -Bibliothek.
Der Autodiscovery -Mechanismus scannt die konfigurierten Verzeichnisse für TTF -Dateien und registriert sie als Schriftfamilie mit dem Namen der Schriftart. Es wird auch versucht, den Typ der Schriftart basierend auf einem Suffix zu erkennen: _bold oder _b wird als mutige Schriftarten, _italic , _i als italische Schriftarten und _bold_italic oder _bi als mutige Italic erkannt. So wird die my_font_bold.ttf als fett gedruckte Schrift in der Familie my_font usw. registriert, während my_font.ttf als normale Schriftart der Familie my_font registriert wird.
Im Prinzip sollte DompDF auch in der Lage sein, OTF -Dateien zu verwenden, in meinen Tests funktionierte sie jedoch nicht, sodass die Autodiscovery nur standardmäßig TTF -Dateien erkennt. Sie können die erkannten Dateitypen über die Option autodiscovery.file_pattern ändern.
Dompdf hat ein eigenes Schriftstellungsverzeichnis, in dem es die Schriftart Dateien und Metriken speichert. Dies wird pro Instanzbasis auf einem DompDF -Objekt mit der Methode set_option('fontDir', $path) konfiguriert. Um das Font -Verzeichnis für die von diesem Bundle verwendete Dompdf -Instanz anzugeben, müssen Sie das DompdfFactoryInterface dekorieren und das Objekt in der Methode create() konfigurieren:
#[AsDecorator(decorates: DompdfFactoryInterface::class)]
class MyDompdfFactory implements DompdfFactoryInterface
{
public function create (): Dompdf
{
return new Dompdf ([ ' fontDir ' => ' %kernel.project_dir%/var/dompdf/fonts ' ]);
}
} Dieses Bundle bietet den DompdfFontLoader -Dienst an, mit dem Schriftfamilien manuell installiert werden können. Sie können entweder eine einzelne Schriftfamilie mit der Methode " installFontFamily() installieren oder alle gefundenen Schriftarten in einem Ordner mit der autodiscoverAndInstallFonts() -Methode installieren.
Dieses Bundle ist unter der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in Lizenz.