View Sidebar
PHP ile HTML’den PDF’e dönüşüm

PHP ile HTML’den PDF’e dönüşüm

Şubat 9, 2013 16:2112 yorum

Merhaba. PDF dosya tipinin varoluş amacı kesinlikle yapacağımız iş değil. Öncelikle bunu belirtmekte fayda görüyorum. Garip hatalarla karşılaştığımızda kimi zaman garip çözümleri olurken, kimi zaman da probleminiz çözümsüz kalabilir. Uyarılarımı okuduğunuzu ve yorumlarınızı ona göre yapacağınızı varsayıyorum. PHP kullanarak HTML’den PDF’e dönüşüm sağlamak için bir çok sınıf var. Benim bahsedeceğim sınıf HTML2PDF olacak.

Sınıfın kaynak kodlarını indirmek için
[ tıklayınız ]

<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <style type="text/css">
 <!--
 h3{
 color: red;
 }
 -->
 </style>
 </head>
 <body>
 <table>
 <tr>
 <td>#TR1#TD1</td>
 <td>#TR1#TD2</td>
 </tr>
 <tr>
 <td>#TR2#TD1</td>
 <td>#TR2#TD2</td>
 </tr>
 </table>

 <p>&nbsp;</p>

 <h3>Deneme</h3>
 <span>İçerik</span>
 </body>
</html>
<?php $yazdirilacakHTML = ob_get_clean();

require("html2pdf_v4.03/html2pdf.class.php");

$pdf = new HTML2PDF('P', 'A4', 'tr');

$pdf->setDefaultFont("dejavusans");
$pdf->WriteHTML($yazdirilacakHTML);
$pdf->Output("dosyaAdi.pdf", 'D');

 ?>

Kullanımı gördüğünüz gibi gayet basit. Dikkat edilmesi gereken bir kaç nokta var.

$pdf = new HTML2PDF('P', 'A4', 'tr');

İlk parametre olan ‘P’ belgenin oryantasyonunu belirtiyor. P (Portrait – Dikey) veya L (Landscape – Yatay) olabilir.
İkinci parametre belgenin büyüklüğünü belirtiyor. A4, A3 gibi değerler alabilir.
Üçüncü parametre ise dili temsil ediyor. Hata mesajlarında işe yarıyor diyebiliriz. Onun dışında boş bırakabiliriz.

$pdf->setDefaultFont("dejavusans");

Eğer font belirleme işlemi yapmazsanız Türkçe karakterleri desteklemeyen fontlarda sorun çıkacaktır. dejavusans fontunu kullanmanız hiç bir sorun çıkmamasını garanti edecektir. Eğer kendiniz font eklemek istiyorsanız, klasör içinde bulunan “_tcpdf_5.0.002\fonts\utils\README.TXT” dosyasındaki adımları uygulamanız gerekmekte. Çok gerekli değilse uğraşmayın derim.

Diğer bir kısım ise oluşturulan PDF dosyasının kullanıcıya nasıl aktarılacağı.

$pdf->Output("dosyaAdi.pdf", 'D');

İkinci parametrede kullandığımı ‘D’ download anlamına geliyor. Bu parametre belgenin gönderileceği yeri belirtiyor. String, yerel dosya(dosyayı servera kayıt etme) veya tarayıcı olabilir. Alabileceği değerler:

  • I: Dosyayı tarayıcıya indirilmek üzere gönderir(bu değer aynı zamanda varsayılan değerdir). Dosyayı farklı kaydet penceresi açılacaktır. Ancak eklenti yüklü ise, dosya tarayıcı üzerinde görüntülenir.
  • D: Dosyayı direkt olarak kaydetmeye zorlar.
  • F: Dosyayı verilen ismiyle sunucuya kaydetmeye yarar.
  • S: Dosyayı string olarak döndürür.
  • FI: F + I işlemlerini yapar
  • FD: F + D işlemlerini yapar
  • I: TRUE
  • S: FALSE

Bir html dosyasını PDF’e dönüştürmek istiyorsanız kullanım şu şekilde olmalıdır.

<?php $yazdirilacakHTML = file_get_contents("dosyaAdi.html");

require("html2pdf_v4.03/html2pdf.class.php");

$pdf = new HTML2PDF('P', 'A4', 'tr');

$pdf->setDefaultFont("dejavusans");
$pdf->WriteHTML($yazdirilacakHTML);
$pdf->Output("dosyaAdi.pdf", 'D');

 ?>

12 Yorum

  • Burak K.

    Dediğin gibi kullandım fakat, “ş,ç,ğ” gibi harflerden sonra sağa boşluk atıyor.

    • Ulvi

      Evet dediğiniz gibi bir problem var. Açıkçası sebebini araştırmadım. Ancak metinleri span veya div etiketleri arasında bastırıp, varsayılan fontu “dejavusans” olarak değiştirdiğinizde herhangi bir problem kalmıyor. İyi kodlamalar.

  • Hddn THA

    Ya bu sınıf çok güzel ama ben bir türlü img etiketiyle fotoğraf ekleyemedim. acaba hata nerede. Tırnaklardan kaynaklanan bir sorun mu?

  • Merhaba;
    Bilgi için teşekkürler. Takıldığım bir nokta var. CSS ve Html kodlarını almıyor. Ve resimlerde de sıkıntı yaratıyor. Sayfada gördüğümüzü pdfe nasıl çevireceğiz?

  • Ahmet

    Kaynak dosyalarıda yukleseydinde bizde ordan alsaydık verdiğin adrestekilerlerle yapamadım

  • Türkçe Karakter Sorunu Yaşıyoruz.

  • nuri

    Güzel bir kodlama örneği.Ama türkçe karakter sorununu çözemedim.
    Deneme
    �erik
    şeklinde çıkıyor.

  • insan

    türkçe karakterlerde sorun çıkartmasa çok güzel ve çalışıyor malesef oda düzeltilemiyor :S

  • MURAT

    arkadaşlar aşağıdaki gibi hata veriyor bende neden böyle bir hata alıyorum kodları olduğu gibi alıp dosyaya yapıştırdım ama olmuyor…

    [ERROR] It seems that HTML2PDF dependencies are not installed… you must install thems with `composer install`

  • MURAT en son sürümde bu hata var. 4.4.0 ‘a downgrade yapılınca sorun kalmıyor.

Yanıtla