PDFでバーコード出力

 PHPのPDF出力を利用し、バーコードを出力してみました。当初は倍率が変わってしまう為、読み込みが出来ないと思っていましたが、試しにテストしてみたらうまく読み込みが出来ました。

下のコードはCODE39のバーコード出力を行う関数です。

  <?php
class pdfclass
{
  //CODE39のバーコードを出力するための関数
  function Code39Barcode($pdf,$x,$y,$yh,$str){
    $str="*".$str."*";
    $bar="";
    for($i=0;$i<strlen($str);$i++){
       $outmoji = substr($str,$i,1);
       if($outmoji == "1")
          $bar.="1101001010110";
       else if($outmoji == "2")
          $bar.="1011001010110";
       else if($outmoji == "3")
          $bar.="1101100101010";
       else if($outmoji == "4")
          $bar.="1010011010110";
       else if($outmoji == "5")
          $bar.="1101001101010";
       else if($outmoji == "6")
          $bar.="1011001101010";
       else if($outmoji == "7")
          $bar.="1010010110110";
       else if($outmoji == "8")
          $bar.="1101001011010";
       else if($outmoji == "9")
          $bar.="1011001011010";
       else if($outmoji == "0")
          $bar.="1010011011010";
       else if($outmoji == "*")
         $bar.="1001011011010";
       else if($outmoji == "A")
         $bar.="1101010010110";
       else if($outmoji == "B")
         $bar.="1011010010110";
       else if($outmoji == "C")
         $bar.="1101101001010";
       else if($outmoji == "D")
         $bar.="1010110010110";
       else if($outmoji == "E")
         $bar.="1011011001010";
       else if($outmoji == "F")
         $bar.="1010100110110";
     }
     for($i=0;$i<strlen($bar);$i++){
        if(substr($bar,$i,1) == "1"){
           PDF_moveto($pdf,$x+($i),$y);
           PDF_lineto($pdf,$x+($i),$y-$yh);
           pdf_stroke($pdf);
        }
     }
   }
}
?>
 

下のコードはPDFを出力するコードです。特に日本語が入っているわけではないので問題はないのですが、EUCで書いたほうが後々いいかもしれません。

  <?
$barpdf = new pdfclass();
pdf_set_parameter($pdf, "warning", "true");
pdf_set_info($pdf, "Creator", "");
pdf_set_info($pdf, "Author", "");
pdf_set_info($pdf, "Title", "");
pdf_begin_page($pdf,842,595);
pdf_set_parameter($pdf, "transition", "wipe");
pdf_set_value($pdf, "duration", 0.5);
$barpdf->Code39Barcode($pdf,100,100,10,"12345ABCD");
pdf_restore($pdf);
pdf_end_page($pdf);
pdf_close($pdf);

$buf = pdf_get_buffer($pdf);
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=test.pdf");
print $buf;

pdf_delete($pdf);
?>
 

実際には運用で使用していませんが、使う用途はいろいろと出てくると思います。