Programming, tutorials, mechatronics, operating systems, dan artikel teknologi lainnya.

Cara menambahkan font baru di fpdf | tutorial php FPDF

Tidak ada komentar
Pada tutorial kali ini saya akan membahas tentang cara menambahkan font pada fpdf untuk digunakan dalam file pdf.
Secara default, font yang dapat digunakan pada library php fpdf hanya font standar bawaan library seperti courier, helvetica, arial, times, symbol, dan ZapfDingbats. Fpdf tidak bisa menggunakan font yang terinstall pada pc server maupun client secara langsung. Jadi meskipun pada komputer anda sudah terinstall font semisal open sans, anda tidak bisa langsung menggunakannya dalam dokumen pdf anda.

Untuk itu, anda harus mengkonversi file font ttf menjadi font library fpdf yang terdiri dari sebuah file php dan file berekstensi "z".

Dalam tutorial ini, saya akan menjelaskan cara mengkonversi font ttf menjadi library font fpdf, kemudian meggunakannya untuk membangun sebuah file pdf.

Tutorial ini dibuat dengan asumsi bahwa anda sudah paham dasar menggunakan library fpdf. Jika belum, silahkan anda baca tutorial Cara membuat file PDF di PHP menggunakan library FPDF.

Mengkonversi font TTF agar bisa digunakan di library FPDF.

Untuk mengubah font ttf menjadi library font fpdf, fpdf sudah menyediakan script makefont.php yang bisa kita gunakan untuk mengkonversi file ttf. Script ini sudah diikutsertakan dalam distribusi library fpdf. Anda bisa mendownload library fpdf disini.

Pertama, extract library fpdf pada direktori web anda (jika belum). Didalamnya, anda akan menemukan sebuah folder bernama "makefont" yang didalamnya ada file php bernama sama.

Keluar dari direktori tersebut, siapkan font-font yang hendak anda konversi dalam sebuah folder terserah anda. Misalnya dalam tutorial ini saya menggunakan nama "customfont".
Font-font dalam folder ini yang nantinya akan kita konversi. Jadi struktur folder saya seperti berikut.
htdocs/pdf
  |-fpdf17
  |   |-doc
  |   |-font
  |   |-makefont
  |   |-...
  |-customfont
      |-alienleagueii.ttf
      |-alienleagueiiital.ttf
      |-FREESCPT.TTF
      |-JOKERMAN.TTF

Dalam tutorial ini saya menggunakan 4 font sebagai contoh.

Lalu jalankan command prompt(windows) atau terminal(linux) anda. Lalu masuk ke direktori customfont anda dengan perintah cd. 
Misalnya dalam contoh ini lokasi folder saya ada di C:\xampp\htdocs\pdf\customfont\
maka perintah yang saya gunakan adalah:

Lalu jalankan perintah berikut:
php <lokasi direktori makefont>\makefont.php <nama file font>.ttf


Dimana <lokasi direktori makefont> adalah lokasi folder makefont anda dan <nama file font> adalah nama file font anda. Perlu diperhatikan bahwa nama file disini adalah case-sensitive.
Ulangi langkah-langkah diatas untuk tiap-tiap font.

Menambahkan library font PHP FPDF baru.

Jika anda berhasil, maka dalam folder customfont akan muncul file php dan z dari masing-masing font seperti pada gambar berikut:
copy file-file tersebut kecuali file ttf kedalam folder "font" di dalam direktori fpdf17, jadi seperti pada gambar berikut.
Lalu buat file pdf generator baru seperti pada tutorial Cara membuat file PDF di PHP menggunakan library FPDF.

Kemudian tambahkan font-font baru anda dengan menggunakan perintah AddFont dengan format sebagai berikut:

<?php
//add new freescript font
$pdf->AddFont('Freescript','','FREESCPT.php');

//add new jokerman font
$pdf->AddFont('Jokerman','','JOKERMAN.php');

//add alien league (regular)
$pdf->AddFont('Alien League','','alienleagueii.php');
Parameter pertama adalah nama family font, parameter kedua adalah variant, parameter ketiga adalah nama file php font yang bersangkutan.

Nama font family bisa anda pilih terserah anda. Hanya saja, hindari menggunakan nama yg sama dengan font standar misalnya Arial.


Varian font bisa terdiri dari gabungan antara string berikut:
  • string kosong (''): regular
  • B: bold
  • I: italic
  • BI or IB: bold italic
Nilai default adalah regular.

Pada contoh ini, saya menggunakan 2 bentuk varian font Alien League. Yaitu alienleagueii.php untuk font regular dan alienleagueiiital.php untuk versi italic (miring). Saya harus menambahkan keduanya secara terpisah dengan nama family sama namun varian yang berbeda (kayak iklan es krim aja LOL), dan font file yang berbeda pula. Jadi seperti berikut:

//add alien league (regular)
$pdf->AddFont('Alien League','','alienleagueii.php');

//add alien league italic
$pdf->AddFont('Alien League','I','alienleagueiiital.php');

Perlu diingat bahwa anda harus mendambahkan font terlebih dahulu sebelum bisa menggunakannya, jadi perintah-perintah diatas harus diletakkan di baris awal  setelah deklarasi class FPDF.

Menggunakan font custom di FPDF untuk membangun file PDF.

Untuk menggunakan font yang sudah kita tambahkan, kita hanya perlu memanggil fungsi SetFont beserta nama family, varian, dan ukurannya seperti berikut:
$pdf->SetFont('Freescript','',36);

Perlu dicatat bahwa font Freescript dalam tutorial ini tidak memiliki varian lain selain regular, jadi anda tidak bisa memanggil perintah $pdf->SetFont('Freescript','I',36);. Beda dengan Alien league, kita bisa menggunakan yang reguler dan italic karena sudah kita tambahkan sebelumnya.

Berikut adalah contoh lengkapnya:

<?php
require('fpdf17/fpdf.php');

$pdf = new FPDF('P','mm','A4');

//add new freescript font
$pdf->AddFont('Freescript','','FREESCPT.php');

//add new jokerman font
$pdf->AddFont('Jokerman','','JOKERMAN.php');

//add alien league (regular)
$pdf->AddFont('Alien League','','alienleagueii.php');

//add alien league italic
$pdf->AddFont('Alien League','I','alienleagueiiital.php');

$pdf->AddPage();

//freescript font
$pdf->SetFont('Freescript','',36);
$pdf->Cell(190,20,'Freescript Font',0,1,'C');

//jokerman font
$pdf->SetFont('Jokerman','',36);
$pdf->Cell(190,20,'Jokerman Font',0,1,'C');

//alien league regular font
$pdf->SetFont('Alien League','',36);
$pdf->Cell(190,20,'Alien League Regular Font',0,1,'C');

//alien league italic font
$pdf->SetFont('Alien League','I',36);
$pdf->Cell(190,20,'Alien League Italic Font',0,1,'C');

$pdf->Output();

Dan ini adalah hasil dari script diatas:

Untuk tutorial dalam bentuk video, bisa anda simak pada channel saya di sini.

FAQ

Q: Bagaimana kalau saya pakai shared hosting, jadi tidak ada akses ke terminal atau command prompt?
A: Konversinya bisa dilakukan di komputer anda dulu, baru hasilnya di upload ke hostingan anda.

Q: Bagaimana untuk file opentype font(otf)?
A: Bisa, namun hanya yg formatnya berdasarkan True Type, kalau Type1 harus menyertakan file AFM nya dalam direktori yg sama.

Q: Kok ribet sih, ada gak cara yg lebih gampang?
A: Ada, pakai font generator online nya fpdf di sini.

Q: Nah kenapa jelasin panjang lebar kalau ada cara yg lebih gampang?
A: Biar paham dasarnya, biar gak tergantung sama online generator. Sekaligus sharing ilmu biar dapat pahala.

Tidak ada komentar :

Posting Komentar