Prskavčí blog

Nov 5, 2007 - Comments

Tvorba čárového kódu v PHP

Nedávno jsem tvořil apliakci, která obsahuje čárový kód. Doposud jsem neměl s tím co dočinění, ale získal jsem cenné zkušenosti, které se mohou hodit i vám.

Čárový kód (barcode) má různé normy. Já jsem musel podle naší aplikace použít Code 128B. Je několik možností jak danou problematiku řešit.

  1. máte font, který umí přímo psát v daném čárovém kódu
  2. budete generovat obrázek pomocí nějaké aplikace (tuto variantu jsem zvolil já)
  3. pokud generujete PDF, můžete použít XSL-FO a generovat kód přímo v něm
Vzhledem k problémům s nákupem fontu a časové tísni jsem zvolil variantu 2. Použil jsem knihovnu PHP-barcode, kterou musím doporučit. Mám ji odzkoušenou jak pro Windows tak Linux, kde je v produkčním nasazení. Udělal jsem si pár úprav zdrojáků (výhoda php), které mi ořezávají výšku kódu, aby se vešel do našeho designu. Generoval jsem PDF, kde jsem použil PNG obrázek čárového kódu, výhodu oproti použití fontu vidím hlavně v tom, že nemusím vkládat font, což nemusí některé licenční podmínky u těchto fontů dovolit.

Pro volání ve vlastním kódu jsem použil CURL a vlastní  generování se chová jako samostatná aplikace.

   /**
* Generovani unikatniho jmena souboru
*/
$filename="barcode_".$sid.".png";
/**
* URL pro generovani caroveho kodu
*/
$url=$config->barlib."barcode.php?code=".$input[croom]."&encoding=128B&scale=1&mode=png&filename=".$filename;
$logger->debug($url);
/**
* Curl inicializace
*/
$ch = curl_init();
/**
*  Set URL and other appropriate options
*/
curl_setopt($ch, CURLOPT_URL, $url);
/**
* Vypinani kontroly certifikatu u SSL spojeni
* Stejne pozor ! u IE7 je nutny bezproblemovy certifikat, jinak muze byt problem se stahnutim PDF
*/
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// grab URL and pass it to the browser
$res=curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
/**
* Konec generovani PNG pro barcode
*/

Tags: barcode php

XMLRPC a Google docs Wordpress a Texy

comments powered by Disqus