Bundel ini menyediakan cara sederhana untuk memuat/menginstal font pilihan Anda untuk perpustakaan DOMPDF dalam proyek Symfony. Bundel ini menawarkan fungsionalitas untuk memuat keluarga font secara terprogram atau otomatis pada pemanasan cache. Anda dapat menentukan setiap keluarga font dengan nama dan jalur ke file font atau Anda membiarkan bundel autodiscover semua font di direktori.
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.php Anda (biasanya dilakukan oleh Symfony Flex secara otomatis)config/packages/jbtronics_dompdf_font_loader.yaml , dengan konten yang dijelaskan di bawah ini (dan diubah sesuai kebutuhan Anda) 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 "Kunci font dan autodiscovery keduanya opsional, tetapi setidaknya satu dari mereka diminta untuk memuat font.
Ketika Anda telah mengaktifkan opsi auto_install , Anda tidak perlu melakukan hal lain, font akan dimuat secara otomatis pada pemanasan cache (ketika php bin/console cache:clear dijalankan). Bundel akan menyalin file font ke direktori font DOMPDF, membuat metrik font dan mendaftarkannya di pustaka DOMPDF.
Mekanisme Autodiscovery akan memindai direktori yang dikonfigurasi untuk file TTF dan mendaftarkannya sebagai keluarga font dengan nama file font. Ia juga mencoba untuk mendeteksi jenis font berdasarkan akhiran: _bold atau _b akan terdeteksi sebagai font tebal, _italic , _i sebagai font miring, dan _bold_italic atau _bi sebagai huruf miring tebal. Jadi my_font_bold.ttf akan didaftarkan sebagai font tebal dari keluarga my_font dan sebagainya, sedangkan my_font.ttf akan terdaftar sebagai font normal dari keluarga my_font .
Pada prinsipnya DOMPDF harus dapat menggunakan file OTF juga, namun dalam pengujian saya tidak berfungsi, sehingga Autodiscovery hanya mendeteksi file TTF secara default. Anda dapat mengubah jenis file yang terdeteksi melalui opsi autodiscovery.file_pattern .
DOMPDF memiliki direktori font sendiri, di mana ia menyimpan file dan metrik font. Ini dikonfigurasi berdasarkan per instance pada objek DOMPDF dengan metode set_option('fontDir', $path) . Untuk menentukan direktori font untuk instance DOMPDF yang digunakan oleh bundel ini, Anda harus menghiasi DompdfFactoryInterface dan mengkonfigurasi objek dalam metode create() :
#[AsDecorator(decorates: DompdfFactoryInterface::class)]
class MyDompdfFactory implements DompdfFactoryInterface
{
public function create (): Dompdf
{
return new Dompdf ([ ' fontDir ' => ' %kernel.project_dir%/var/dompdf/fonts ' ]);
}
} Bundel ini menawarkan layanan DompdfFontLoader , yang dapat digunakan untuk menginstal keluarga font secara manual. Anda dapat menginstal satu keluarga font dengan metode installFontFamily() atau menginstal semua font yang ditemukan dalam folder dengan metode autodiscoverAndInstallFonts() .
Bundel ini dilisensikan di bawah lisensi MIT. Lihat lisensi untuk detailnya.