Friday, May 9, 2008

[php] auto barcode

problem: bir .mdb dosyadan hazırlanmış olan kişisel bilgi listesindeki kişilere herhangi bir algoritma ile bir şekilde barcode oluştur ve mail ile bu kişilere barcode larını pdf olarak gönder.Tabi bu barcode lar gerçek hayatta kullanılabilir olmalı ve test edilmeli. barcode lara göre kişileri ayıracağız . kişilerin barcodelarını okutmak için ve ayırmak için bir windows programı yap.

çözüm: farklı kütüphaneler ile yaptım. bir kaç gün sonra kodları sunarım. ancak evvela finaller bitmeli.
ancak kullandığım kütüphane http://chir.ag/tech/download/pdfb adresinde ikamet etmekte ve son derece başarılı bir kütüphane. üstelik ücretsiz. ayrıca barcode metini yazarken ve pdf üzerine döşerken kullandığım harika ve ücretsiz başka bir kütüphane FPDF ( http://www.fpdf.org ) kütüphanesi ki bu da gerçekten harika ve pratik bir çözüm.
mdb dosyaına ile bağlanıp verilerimi çektim ve listedim. şu şekilde:
yukarda bahsettiğim iki paketi yada sadece fdpf pakeiti indirip bir yere açtım. ardından php ile mdb dosyalarına bağlanma işlemini kolaylaştıran kütüphane olan class_mdb.php kütüphanesini indirdim. ancak nerden indirdimhatırlamıyorum. kütüphanenni üst kredi bilgisini şurda. aranarak hemen bulunur.
/*
* Filename.....: class_mdb.php
* Class........: mdb
* Aufgabe......: open *.mdb MSAccess files
* Erstellt am..: Donnerstag, 17. Juni 2004, 23:32:07
*
* Wirtschaftsinformatiker IHK
* www.ingoknito.de
*
* Peter Klauer
*/


Sonra şablon pdf dosyamı oluturudum ve yazıların gelceği alanları ekranımda pixel cetvel ile ölçerek not aldım. ve pdf dosyamı şu kodlardakine benzer bi şekilde oluşturdum:
bu dosya fpdf içinde. ayrıca pdfb kütüphane dizini de aynı yerde olmalı.

require("pdfb/pdfb.php"); // bu önemli

class PDF extends PDFB
{
function Header()
{
// şu an için gereksiz. ama uzun pdf dosyalarda gerekli
}

function Footer()
{
// şu an için gereksiz. ama uzun pdf dosyalarda gerekli
}
}


$pdf = new PDF("p", "pt", "letter");


$pdf->setSourceFile("demo.pdf");
$tplidx = $pdf->ImportPage(1);


$pdf->AddPage();
$pdf->useTemplate($tplidx);

// pdfb/pdfb.php içindeki BarCode() fonksiyonuna
//bakarak daha başka parametrelerini öğrenmek gerek..
// şu an için yerleşim (x,y) genişlik (w,h) ve link parametreleri olduğunu öğrendim.
// Code 128-B barcode
$pdf->BarCode("HasanTayyar", "C128B", 298, 180, 288, 88, 1, 1, 2, 5, "http://hasantayyar.blogspot.com", "PNG");

// UPC-A Barcode // bu da bi barkod çeşidi ama ben en genel olan code-128 i kullandım.
$pdf->BarCode("73725735882", "UPCA", 300, 300);

$pdf->Output();
$pdf->closeParsers();


sonuçta dinamik olaraktan oluşan pdf dosyasını ayrı ayrı kaydetmek yerine talep zamanında oluşturmak en iyisi oldu.

No comments: