/[cvs]/nfo/php/libs/de.ashberg.www/barcode/encode_bars.php
ViewVC logotype

Annotation of /nfo/php/libs/de.ashberg.www/barcode/encode_bars.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Thu Aug 11 19:19:57 2005 UTC (18 years, 10 months ago) by jonen
Branch: MAIN
CVS Tags: HEAD
+ initial commit

1 jonen 1.1 <?
2     /*
3    
4     * Built-In Encoders
5     * Part of PHP-Barcode 0.3pl1
6    
7     * (C) 2001,2002,2003,2004 by Folke Ashberg <folke@ashberg.de>
8    
9     * The newest version can be found at http://www.ashberg.de/bar
10    
11     * This program is free software; you can redistribute it and/or modify
12     * it under the terms of the GNU General Public License as published by
13     * the Free Software Foundation; either version 2 of the License, or
14     * (at your option) any later version.
15    
16     * This program is distributed in the hope that it will be useful,
17     * but WITHOUT ANY WARRANTY; without even the implied warranty of
18     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19     * GNU General Public License for more details.
20    
21     * You should have received a copy of the GNU General Public License
22     * along with this program; if not, write to the Free Software
23     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24    
25     */
26    
27     function barcode_gen_ean_sum($ean){
28     $even=true; $esum=0; $osum=0;
29     for ($i=strlen($ean)-1;$i>=0;$i--){
30     if ($even) $esum+=$ean[$i]; else $osum+=$ean[$i];
31     $even=!$even;
32     }
33     return (10-((3*$esum+$osum)%10))%10;
34     }
35    
36     /* barcode_encode_ean(code [, encoding])
37     * encodes $ean with EAN-13 using builtin functions
38     *
39     * return:
40     * array[encoding] : the encoding which has been used (EAN-13)
41     * array[bars] : the bars
42     * array[text] : text-positioning info
43     */
44     function barcode_encode_ean($ean, $encoding = "EAN-13"){
45     $digits=array(3211,2221,2122,1411,1132,1231,1114,1312,1213,3112);
46     $mirror=array("000000","001011","001101","001110","010011","011001","011100","010101","010110","011010");
47     $guards=array("9a1a","1a1a1","a1a");
48    
49     $ean=trim($ean);
50     if (eregi("[^0-9]",$ean)){
51     return array("text"=>"Invalid EAN-Code");
52     }
53     $encoding=strtoupper($encoding);
54     if ($encoding=="ISBN"){
55     if (!ereg("^978", $ean)) $ean="978".$ean;
56     }
57     if (ereg("^978", $ean)) $encoding="ISBN";
58     if (strlen($ean)<12 || strlen($ean)>13){
59     return array("text"=>"Invalid $encoding Code (must have 12/13 numbers)");
60     }
61    
62     $ean=substr($ean,0,12);
63     $eansum=barcode_gen_ean_sum($ean);
64     $ean.=$eansum;
65     $line=$guards[0];
66     for ($i=1;$i<13;$i++){
67     $str=$digits[$ean[$i]];
68     if ($i<7 && $mirror[$ean[0]][$i-1]==1) $line.=strrev($str); else $line.=$str;
69     if ($i==6) $line.=$guards[1];
70     }
71     $line.=$guards[2];
72    
73     /* create text */
74     $pos=0;
75     $text="";
76     for ($a=0;$a<13;$a++){
77     if ($a>0) $text.=" ";
78     $text.="$pos:12:{$ean[$a]}";
79     if ($a==0) $pos+=12;
80     else if ($a==6) $pos+=12;
81     else $pos+=7;
82     }
83    
84     return array(
85     "encoding" => $encoding,
86     "bars" => $line,
87     "text" => $text
88     );
89     }
90    
91     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed