50

In TCPDF, there are only a few fonts to choose from, to create pdf files. I want to set Tahoma as my pdf font. How can I include Tahoma in TCPDF??

Alex Kulinkovich
  • 4,408
  • 15
  • 46
  • 50
Alfred
  • 21,058
  • 61
  • 167
  • 249

14 Answers14

89

The latest TCPDF version automatically convert fonts into TCPDF format using the addTTFfont() method. For example:

// convert TTF font to TCPDF format and store it on the fonts folder
$fontname = TCPDF_FONTS::addTTFfont('/path-to-font/FreeSerifItalic.ttf', 'TrueTypeUnicode', '', 96);

// use the font
$pdf->SetFont($fontname, '', 14, '', false);

For further information and examples, please check the TCPDF Fonts documentation page.

NOTE: Once the font has been converted, TCPDF no longer requires the TTF file or the above call to addTTFfont()!

Nicola Asuni
  • 1,500
  • 16
  • 9
  • 1
    Related Answer: http://stackoverflow.com/questions/19385618/tcpdf-could-not-include-font-definition-file-with-opentype-fonts/19394545#19394545 – JamesG Oct 24 '13 at 00:40
  • 2
    Most likely your call to addTTFfont() can be used with less parameters to let the `addTTFfont()` method automatically detect things: `$fontname = TCPDF_FONTS::addTTFfont('/path-to-font/FreeSerifItalic.ttf');` – DOOManiac Jul 08 '15 at 16:52
  • 6
    It seems that sometimes `tcpdf` generates wrong `.z` and `.php` files of a font. I tried to use online tool http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf out of another answer to generate .z and .php files and my font is working now. – shukshin.ivan Mar 26 '16 at 14:23
  • Hi @NicolaAsuni Is the tcpdf_addfont.php also possible to use with OTF font? I tried it but it gives me this error message: '--- Process completed with ERRORS!' – bananaCute May 23 '19 at 08:55
  • There is a link at the top of this page that says: "NOTE: The following information is valid only "foR" the old TCPDF library. The new tc-lib-pdf library uses the new tc-lib-pdf-font library that is able to convert fonts on the fly." – kojow7 Jan 03 '20 at 17:07
30

I have discovered a very good tool online. The only thing you need to do is to upload your .ttf file and then download the files and copy then into the /fonts folder.

https://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf

Martin
  • 22,212
  • 11
  • 70
  • 132
Yannis
  • 469
  • 5
  • 4
  • how come this works sometimes but returns empty font definition files the other times? – lol Mar 02 '13 at 04:54
  • FWIW it can happen the other way round too, Anecdotally, I converted the gillsans.ttc into individual TTFs (using [DfontSplitter](https://peter.upfold.org.uk/projects/dfontsplitter)) but found while TCPDF_FONTS::addTTFfont worked for semi-bold, bold etc. it returned various errors for the Regular face. The converter at the above URL produced an extra file (gillsans_0.z *and* gillsans_0.z.cpgz) and that displayed correctly. So try both methods. – William Turrell Jan 21 '16 at 21:28
  • 1
    I found out that this one: http://fonts.snm-portal.com gives much better results :-) – Camaleo Feb 23 '17 at 06:47
  • For now, this tool doesn't work well with latin-ext fonts from Google Fonts. – long May 20 '21 at 11:36
10

The addTTFfont method is not available on TCPDF main class so following worked for me.

// convert TTF font to TCPDF format and store it on the fonts folder
$fontname = TCPDF_FONTS::addTTFfont('pathto/arial.ttf', 'TrueTypeUnicode', '', 96);

// use the font
$pdf->SetFont($fontname, '', 14, '', false);

Hope this helps!

psuhas
  • 608
  • 7
  • 13
5

the below lines will generate 3 files in ur fonts folder 1.rotisserifi56.php 2.rotisserifi56.ctg 3.rotisserifi56.rar

    use this to generate the required php and other files
$fontname = $this->pdf->addTTFfont('D:/wamp/www/projectname/sites/all/modules/civicrm/packages/tcpdf/fonts/Rotis Serif Italic 56.ttf', 'TrueTypeUnicode', '', 32);

    // use the font
    $this->pdf->SetFont($fontname, '', 14, '', false);

Now,

use the fonts like this:

 $this->pdf->AddFont('rotisserifi56', '', 'rotisserifi56.php');
$this->pdf->SetFont('rotisserifi56');

--hope this helps some one :)

Developer
  • 3,857
  • 4
  • 37
  • 47
  • Heh @Developer, it looks like you are using CiviCRM. We're trying to launch a new StackExchange site for CiviCRM at ttp://area51.stackexchange.com/proposals/77367/civicrm -- we have lots of people interested, but we need another 36 people with 200+ reputation on another StackExchange site to commit before we can launch. Would you help us out? Thanks! – Joe Murray Dec 09 '14 at 22:39
  • how you want me to help you? – Developer Dec 11 '14 at 17:16
  • Thanks, Developer! Just go to http://area51.stackexchange.com/proposals/77367/civicrm and click on Commit button in upper left. If you know of others using CiviCRM encourage them too! Cheers. – Joe Murray Dec 11 '14 at 21:19
3

First create .php ,.afm,.z from http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf and move all three in same directory containing .ttf file. then Use This :

$pdf->AddFont(path-to/universe.ttf','',path-to/universe.php');
$pdf->SetFont(path-to/universe.ttf','',10);
Bharat Parmar
  • 1,842
  • 2
  • 18
  • 22
2

I found the addTTFfont method a little finicky (ok, probably didn't try very hard) and the online tool mentioned above works for FPDF but misses the ctg.z file that TCPDF requires.

This one - http://fonts.snm-portal.com/ - generates the 3 required files (.php, .z and .ctg.z) for TCPDF. Convert the TTF, upload the three files to your fonts folder and you're good to go.

Craig
  • 79
  • 8
2

I don't know anything about tcpdf or php, but I found this:

http://www.tcpdf.org/examples/example_033.phps

Apparently you just use the font's name, not the file name.


Strike one!

Okay, how about this page. To prep a font to be used by TCPDF, you have to run the file through a command line utility and a PHP script.

$ ttf2ufm -a -F myfont.ttf

And then:
$ php -q makefont.php myfont.ttf myfont.ufm
or
MakeFont(string $fontfile, string $fmfile [, boolean $embedded [, $enc="cp1252" [, $patch=array()]]])

ttf2ufm is distributed with TCPDF in the TCPDF/fonts directory.

Mark Storer
  • 15,672
  • 3
  • 42
  • 80
1

Latest TCPDF supports custom fonts.

Documentation about using custom fonts with TCPDF can be read here.

Alfred
  • 21,058
  • 61
  • 167
  • 249
1

the best way i have been tried and worked 100% put your TTF font in fonts folder and then use this constant K_PATH_FONTS + FONT NAME

   $font1 = $this->pdf->addTTFfont(K_PATH_FONTS . 'arial.ttf', 'TrueTypeUnicode', '', 8);
   $this->pdf->SetFont($font1, '', 15, '', false);
user1080247
  • 1,076
  • 4
  • 21
  • 51
1

Create new font by the following script after adding php in your path

php /path_to_tcpdf_directory/tools/tcpdf_addfont.php -i font_name.ttf,font_nameb.ttf,font_namei.ttf

Then use the font by following code

$pdf->SetFont('Font_name');

Name of the font can be found in the /path_to_tcpdf_directory/fonts/font_name.php

To add php into your environment variables, refer How to set the env variable for PHP?

Rinshan Kolayil
  • 1,111
  • 1
  • 9
  • 14
0

There is no point in using addTTFfont() if you don't have the .ttf file.

And the whole point is: if there is NO ttf file, how can someone use addTTFfont() function?

For example, there is no cid0cs file in font/ directory (TCPDF 6.0.20), only cid0cs.php, which is NOT a font file.

Ellery Leung
  • 617
  • 3
  • 10
  • 23
0

I wasn't able to find addTTFFont() in the latest release of tcpdf. However, I was able to include a custom TTF file by myself. Within the tcpdf folder is a folder named tools which include a PHP file called tcpdf_addfont.php.

I symlinked it to my home directory (you can omit this step) and run it like this: shell ./addfont.php -b -t TrueTypeUnicode -f 32 -i myfont.ttf

That's it, it will dump something similar to this: ```

Converting fonts for TCPDF: *** Output dir set to /Users/pascalraszyk/XXX/XXX/pdf/vendor/tecnick.com/tcpdf/fonts/ +++ OK : /Users/pascalraszyk/XXX/XXX/pdf/myfont.ttf added as myfont Process successfully completed! ```

Note: There are more examples within the tools folder for various font types. I used composer to checkout tcpdf.

As long as you put your font definition files in the tcpdf/fonts folder you should be good to go!

I used HTML2PDF which uses tcpdf under the hood and it worked like a charm.

posixpascal
  • 3,031
  • 3
  • 25
  • 44
0

I had this problem despite having all the right files. I had to change the file names to all lower case

Arindam
  • 537
  • 1
  • 5
  • 8
-2

When was not possible convert font GothamRounded standard way, I was looking for another tool and only this one http://fonts.snm-portal.com/ worked for me.

revoke
  • 529
  • 4
  • 9