PHP ile PDF dosya oluşturmak

Php ile yeni bir pdf dosyası oluşturmak : Öncelikle php ile pdf işlemleri yapmak için bir pdf kütüphanesine ihtiyacınız olacak
www.dijitalders.com
Php manuelde bahsedilen kütüphane , PDFlib http://www.pdflib.com/products/pdflib/index.html
bu adresten indirebilirsiniz .
Öncelikle PDF_new(); fonksiyonu ile pdf oluşturmak için kullanacağımız sınıfı çağırıyoruz. Daha sonra PDF_open_file() fonksiyonu ile bellirtiğimiz isimde bir pdf dosyası oluşturabiliriz.
$var = PDF_new();
int PDF_open_file([pdf nesnesi], [dosya_adı]); dosya_adı parametresini daha önce oluşturulmuş bir pdf dosyasını tekrar açmak için kullanabilirsiniz, eğer herhangi bir dosya adı belirtmezseniz üzerinde işlem yapabileceğiniz yeni bir pdf dosyası oluşacaktır.
$pdf = PDF_new();
PDF_open_file($pdf);
Bu iki fonksiyon ile pdf dosyamızı oluşturduktan sonra artık işlemeye başlayabiliriz öncelikle tanımlamaız gereken “Document information” döküman bilgileri.
PDF_set_info([pdf_object], [property string], [value]);
Bu fonksiyon pdf dosyamız için başlık , oluşturan gibi dosya bilgilerini yerleştirmemize yarıyor.
PDF_set_info($pdf, “author”, “John Coggeshall”);
PDF_set_info($pdf, “title”, “Zend.com Example”);
PDF_set_info($pdf, “creator”, “Zend.com”);
PDF_set_info($pdf, “subject”, “Code Gallery Spotlight”);
author : belge sahibi
title : belge başlığı
creator : oluşturucu
subject : konu
Pdh dosyamızı oluşturduktan ve döküman bilgilerini tanımladıktan sonra , PDF_begin_page() fonksiyonu ile dosyamızın içinde ilk sayfamızı oluşturmaya başlayabiliriz.
PDF_begin_page([pdf object], [page width], [page height]);
Fonksiyona daha önce oluşturduğumuz pdf nesnemizi gösterdikten sonra page width, ve page height değerleri ile sayfamızın yüksekliğini ve genişliğini tanımlıyoruz.
PDF_begin_page($pdf, 450, 450);
Burada 450 değeri pixel değil point olarak verilir,
Pdf dosaymızın içine birşeyler yazmaya başlamadan önce yapmamız gereken bir işlem daha var, kullanacağımız fontu tanımlamak PDF_findfont() ve PDF_setfont() pdf dosyamızda kullanacağımız fontu tanımlamak için kullanacağımız fonksiyonlar, PDF_findfont() ile kullanacağımız fontları değişkenlere tanımlayabiliriz, PDF_setfont() da daha önce tanımladığımız fontları geçerli kılmak için kullanacağımız fonksion. Pdf ler için kullanabileceğimiz ön tanımlı fontlar şunlar
Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique
Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic
Symbol, ZapfDingbats
Tabi bunların dışında kendi fontlarımızı da kullanabiliriz.
int PDF_findfont([pdf object], [fontname], [encoding],

)
$font = PDF_findfont($pdf, “Helvetica-Bold”, “winansi”,0);
Bu satır ile $font değişkenine Helvetica-Bold fontunu tanımlamış olduk. bunun gibi birden fazla tanımlama yapıp PDF_setfont() ile kullnadığımız fontu her an değiştirebiliriz.
PDF_setfont($pdf, $font, 12); geçerli olan fontu $font değişkeninde tanımlı olan font olarak tanımladık.
Yazıların pdf belgesinin içindeki sayfalara basılmasını sağlayan fonksiyon da
PDF_show_xy([pdf object], [string], [x value], [y value]); bunda da yazılacak olan veriyi ve x ve y olarak yazılacak verinin görüneceği koordinatları tanımlıyoruz.
PDF_show_xy($pdf, “Hello, Dynamic PDFs!”, 5, 225);
Bu işlem ile yazan pdf dosyamızı oluşturmayı tamamladık, geriye
PDF_end_page([pdf object]); ile üzerinde çalıştığımız sayfayı sonlandırmak kaldı, bu adımdan sonra PDF_begin_page() fonksiyonunu tekrar çalıştrarark birden çok sayfadan oluşan pdf blgeleri oluşturabiliriz.
Sayfaları oluşturma işlemi bittikten sonra da PDF_close($pdf); ile tüm pdf belgenizi kapatabiliriz.
Bundan sonra eğer pdf belgemizi web sayfamızda oluşturuyorsak ziyaretçiye göndermemiz ve hafızadan temizlememiz gerekiyor.
Php ile pdf headerlerini oluşturup belgenin browserda açılmasını veya kaydedilmesini sağlamak için öncelikle döküman boyutunu almamız gerekiyor. PDF_get_buffer(). fonksiyonu bu işe yarıyor.
$buffer = PDF_get_buffer($pdf);
Artık buffer bilgisi de elimizde olduğuna göre headerleri oluşturup belgeyi yolayabiliriz.
header(“Content-type: application/pdf”);
header(“Content-Length: “.strlen($buffer));
header(“Content-Disposition: inline; filename=zend.pdf”);
Buradaki başlıklar browsera bu belgenin bir pdf dosyası olduğunu anlatmak için , bu adımdan sonra kullanıcının terhinine göre browserında ya pdf dosyası adobe reader yardımı ile açılcak yada kaydetme penceresi çıkacak. Burada “Content-Disposition” ile tanımladıığımız başlıktan sonraki zend.pdf bilgisayara kaydedilecek olan pdf dosyamızın adı.
Son olarak PDF_delete($pdf); ile pdf dosyamızı hafızadan tamamen silebiliriz.
Pdf oluşturmak veya düzenlemek için kullanabileceğiniz pek çok fonksiyon var bu fonksiyonların listesine ve daha detaylı örneklere bu adresten ulaşabilirsiniz.
http://tr2.php.net/manual/en/ref.pdf.php
adresinden laşabilirsiniz.
Örnek :
<?php
$p = PDF_new();
if (PDF_begin_document($p, “”, “”) == 0) {
die(“Error: ” . PDF_get_errmsg($p));
}
PDF_set_info($p, “Creator”, “hello.php”);
PDF_set_info($p, “Author”, “Rainer Schaaf”);
PDF_set_info($p, “Title”, “Hello world (PHP)!”);
PDF_begin_page_ext($p, 595, 842, “”);
$font = PDF_load_font($p, “Helvetica-Bold”, “winansi”, “”);
PDF_setfont($p, $font, 24.0);
PDF_set_text_pos($p, 50, 700);
PDF_show($p, “Hello world!”);
PDF_continue_text($p, “(says PHP)”);
PDF_end_page_ext($p, “”);
PDF_end_document($p, “”);
$buf = PDF_get_buffer($p);
$len = strlen($buf);
header(“Content-type: application/pdf”);
header(“Content-Length: $len”);
header(“Content-Disposition: inline; filename=hello.pdf”);
print $buf;
PDF_delete($p);
?>
Kaynak www.meteryus.com/index.php