DOMpdf failing to render certain accented characters

Thu 21 August 2014

logo-adobe-pdf

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.

Category: PHP Tagged: dompdf

comments


Php Beautifier

Sat 23 January 2010

Why?

When you're faced with an ugly PHP file(or files) with little to do but trawl through it, there is a solution.

Php beautifier is a pear package that will process PHP files and reformat them in a (hopefully) nicer format.

Installation

You can install it using pear with …

Category: PHP Tagged: code php

comments

Read More
Page 1 of 1