Thu 21 August 2014
I've noticed some issues with DOMpdf when trying to generate PDFs using their internal Helvetica font. After banging my head against a wall for a few hours trying to "fix" UTF-8 support, it turned out UTF-8 support was working fine. Essentially DOMpdf's internal Helvetica font didn't support a few polish characters. Specifically the Sacute, sacute and a few others like this. This was a bit of a killer problem for my requirements so I needed a work-around. My workaround was to use Arial fonts(they were close enough), but if you really need Helvetica you could source a copy of the .ttfs and replicate these steps.
Download Arial fonts
wget http://www.drivehq.com/file/df.aspx/shareID2129391/fileID59377155/arial.ttf wget http://www.911fonts.com/fonts/6/0/5/605.ttf -O arialit.ttf wget http://4nts.com/fonts/arialbd.ttf wget http://www.911fonts.com/fonts/6/0/4/604.ttf -O arialbit.ttf
This downloads arial, arial-bold, arial-oblique and arial-boldoblique.
Generate compatible dompdf files
Pull up a terminal and cd into your dompdf folder. If you're using composer, it'll be <project_root>/vendor/dompdf/dompdf
php load_font.php arial ~/arial.ttf ~/arialbd.ttf ~/arialit.ttf ~/arialbit.ttf
You should now see an entry in lib/fonts/dompdf_font_family_cache.php like so:
'arial' => array ( 'normal' => DOMPDF_FONT_DIR . 'arial', 'bold' => DOMPDF_FONT_DIR . 'arialbd', 'italic' => DOMPDF_FONT_DIR . 'arialit', 'bold_italic' => DOMPDF_FONT_DIR . 'arialbit', ),
You can now reference the Arial font-family in your DOMpdf stylesheets and have it render some nice Helvetica like fonts.
Bonus: Ensure you use your own fonts folder.
If you are using composer with DOMpdf, I would highly recommend not leaving your custom fonts in DOMpdfs vendor folder. Copy the fonts directory somewhere in your projects directory, and over-ride this variable with your own def, referencing the new folder location.
def("DOMPDF_FONT_DIR", DOMPDF_DIR . "/lib/fonts/");
This means you shouldn't need to rely on dodgy customisations to the vendor folder.