該捆綁包提供了一種簡單的方法,可以在Symfony項目中為DOMPDF庫加載/安裝您選擇的字體。該捆綁包提供了可以通過緩存熱身來編程或自動加載字體系列的功能。您可以指定每個字體家族的名稱和通往字體文件的路徑,也可以讓捆綁包在目錄中的所有字體。
composer require jbtronics/dompdf-font-loader-bundleconfig/bundles.php中啟用捆綁包(通常由Symfony Flex自動完成)config/packages/jbtronics_dompdf_font_loader.yaml ,其中包括以下內容(並根據您的需要更改) 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 "字體和自動發現鍵都是可選的,但是加載字體中至少需要其中一個。
啟用了auto_install選項後,您無需做任何其他操作,字體將自動加載在高速緩存上(當php bin/console cache:clear運行時)。該捆綁包將將字體文件複製到DOMPDF字體目錄,創建字體指標,然後在DOMPDF庫中註冊。
自動發現機制將掃描TTF文件的配置目錄,並將其註冊為具有字體文件名稱的字體系列。它還試圖根據後綴檢測字體的類型: _bold或_b將被檢測為BOLD字體, _italic , _i為斜體字體, _bold_italic或_bi或_bi或_bi為粗斜面。因此, my_font_bold.ttf將註冊為my_font家族的粗體字體,等等,而my_font.ttf將以my_font家族的正常字體註冊。
原則上,DOMPDF也應該能夠使用OTF文件,但是在我的測試中它不起作用,因此自動發現僅默認情況下檢測TTF文件。您可以通過autodiscovery.file_pattern選項更改檢測到的文件類型。
DOMPDF擁有自己的字體目錄,其中存儲字體文件和指標。這是用set_option('fontDir', $path)方法在DOMPDF對像上配置的。要指定此捆綁包使用的DOMPDF實例的字體目錄,您必須裝飾DompdfFactoryInterface並在create()方法中配置對象:
#[AsDecorator(decorates: DompdfFactoryInterface::class)]
class MyDompdfFactory implements DompdfFactoryInterface
{
public function create (): Dompdf
{
return new Dompdf ([ ' fontDir ' => ' %kernel.project_dir%/var/dompdf/fonts ' ]);
}
}該捆綁包提供DompdfFontLoader服務,可用於手動安裝字體系列。您可以使用installFontFamily()方法安裝單個字體族,也可以使用autodiscoverAndInstallFonts()方法安裝所有發現的字體。
該捆綁包已根據MIT許可獲得許可。有關詳細信息,請參見許可證。