Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dompdf and set different font-family

Tags:

php

dompdf

When generating a PDF it totally ignores my font-family attribute applied to my CSS. Instead of say Verdana, it uses Times New Roman. So my CSS look like:

.sub-header {     font-size: 1.4rem;     text-transform: uppercase;     font-family: NeutraText-Book !important;     padding-bottom: 1.5rem; } 

The PDF is generated like this:

$pdf = PDF::loadHTML($view); return $pdf->stream(); 

How can I set a font I want?

like image 572
John Avatar asked Jun 25 '14 15:06

John


Video Answer


1 Answers

PDF documents internally support the following fonts: Helvetica, Times-Roman, Courier, Zapf-Dingbats, & Symbol (all using Windows ANSI encoding). dompdf will embed any referenced font in the PDF so long as it has been pre-loaded or is accessible to dompdf and referenced in a CSS @font-face rule. The loading process is necessary in order to produce the font metrics used for type setting.

dompdf supports the same fonts as the underlying R&OS PDF class: Type 1 (.pfb) and TrueType (.ttf) so long as the font metrics (.afm/.ufm) are available. The bundled, PHP-based php-font-lib provides support for loading and sub-setting fonts.

The process for loading a font varies depending on your needs and server access. There are three ways you can load a font:

  1. Use CSS @font-face rules to load a font at run-time.
  2. From the command line use dompdf/load_font.php.
  3. Browse to dompdf/www/fonts.php in the included admin site.

Use CSS @font-face rules to load a font at run-time

No command line access required. So long as the font you want to load is available online you can load it easily via CSS.

@font-face {   font-family: 'Open Sans';   font-style: normal;   font-weight: normal;   src: url(http://themes.googleusercontent.com/static/fonts/opensans/v8/cJZKeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf) format('truetype'); } 

From the command line use dompdf/load_font.php

If you have access to the command line then loading a font is as simple as:

[php] load_font.php "NeutraText-Book" /path/to/neutratext.ttf 

Run the command without any parameters to see help text. Quickly, though, the parameters are: name of the font, normal font file, bold font file, italic font file, bold-italic font file

Browse to dompdf/www/fonts.php in the included admin site

Self-explanatory (sample). The only thing you need to do is make sure you've modified the admin username/password combo


Note: load_font.php and the admin site will not be included by default starting with dompdf 0.7.0

Adapted from the dompdf wiki (Unicode How-To, About Fonts and Character Encoding) and other sources.

like image 56
8 revs, 3 users 98% Avatar answered Sep 22 '22 10:09

8 revs, 3 users 98%