Templates: Use custom fonts in PDF documents
HostBill uses mPDF 8 to generate PDF documents. You can refer to its documentation for further guidance on configuration files:Â https://mpdf.github.io/
Uploading font files
To be able to use custom fonts in pdf documents you have to upload those font files to  hbf/libs/mpdf/ttfonts directory.
Only True Type Font (ttf) files are supported, if you have fonts in other format you will have to convert it to ttf.Â
In this guide we will use Open Sans font with four styles (bold, italic, ...). If your font has only one file you should treat it as a "regular" style.
In case of Open Sans fonts you should have the following file structure:
hbf/libs/mpdf/ttfonts/OpenSans-Regular.ttf hbf/libs/mpdf/ttfonts/OpenSans-Bold.ttf hbf/libs/mpdf/ttfonts/OpenSans-Italic.ttf hbf/libs/mpdf/ttfonts/OpenSans-BoldItalic.ttf
Setting up custom fonts - after 2023-11-20 release
Each font that you want to use has to be added into $config
array under mPDF.fontdata
key in includes/config.php
file:
Font family name (array key) used in configuration has to be lower case, without spaces. If you use "OpenSans" as your css font-familly HostBill will look for "opensans".
Font file name (OpenSans-Regular.ttf) is case-sensitive.
$config['mPDF.fontdata'] = [ 'opensans' => [ 'R' => 'OpenSans-Regular.ttf', ] ];
You can define 4 font styles under the same name, the R (Regular) variant is required for each font family, B (Bold), I (Italic), BI (Bold Italic) are optional.
If you specify additional variants it will allow mpdf to use correct fonts if you use font-weight or font-style properties in your CSS.
$config['mPDF.fontdata'] = [ 'opensans' => [ 'R' => 'OpenSans-Regular.ttf', 'B' => 'OpenSans-Bold.ttf', 'I' => 'OpenSans-Italic.ttf', 'BI'=> 'OpenSans-BoldItalic.ttf' ] ];
Setting up custom fonts - before 2023-11-20 release
Important: mPDF update
Version 2023-11-20 brings major mPDF version update, the file hbf/libs/mpdf/config_fonts.php no longer works and is ignored, ensure to migrate your custom configuration into method described above
Each font that you want to use has to be added in hbf/libs/mpdf/config_fonts.php
 configuration file.
Font family name (array key) used in configuration has to be lower case, without spaces. If you use "OpenSans" as your css font-familly HostBill will look for "opensans".
Font file name (OpenSans-Regular.ttf) is case-sensitive.
$this->fontdata = array( //... 'opensans' => [ 'R' => 'OpenSans-Regular.ttf', ], //... );
You can define 4 font styles under the same name, the R (Regular) variant is required for each font family, B (Bold), I (Italic), BI (Bold Italic) are optional.
If you specify additional variants it will allow mpdf to use correct fonts if you use font-weight or font-style properties in your CSS.
$this->fontdata = array( //... 'opensans' => [ 'R' => 'OpenSans-Regular.ttf', 'B' => 'OpenSans-Bold.ttf', 'I' => 'OpenSans-Italic.ttf', 'BI'=> 'OpenSans-BoldItalic.ttf' ], //... );
Note
If you are using auto upgrade, you should add hbf/libs/mpdf/config_fonts.php
to excluded file list. Otherwise your changes will be overwritten when upgrading.
Accessing fonts
You will have to define font-family directly in html when editing invoice template. To do that click on "html" button available in formatting tools, this will open a popup with html source for you to edit.
If you want to apply your font to the whole document, add or replace your style at the beginning with this code:Â
<style type="text/css"><!-- body { font-family: OpenSans; } --></style>
If you want to use this font only on some elements, you can add your own css rules or use inline styles:
<div style="font-family:OpenSans;"> Hello World </div>