GD::Barcode - Create barcode image with GD


GD-Barcode documentation Contained in the GD-Barcode distribution.

Index


Code Index:

NAME

Top

GD::Barcode - Create barcode image with GD

SYNOPSIS

Top

ex. CGI

  use GD::Barcode::UPCE;
  binmode(STDOUT);
  print "Content-Type: image/png\n\n";
  print GD::Barcode->new('EAN13', '123456789012')->plot->png;

with Error Check

  my $oGdBar = GD::Barcode->new('EAN13', '12345678901');
  die $GD::Barcode::errStr unless($oGdBar);     #Invalid Length
  $oGdBar->plot->png;

DESCRIPTION

Top

GD::Barcode is a subclass of GD and allows you to create barcode image with GD. This module based on "Generate Barcode Ver 1.02 By Shisei Hanai 97/08/22".

From 1.14, you can use this module even if no GD (except plot method).

new

$oGdBar = GD::Barcode::UPCE->new($sType, $sTxt);

Constructor. Creates a GD::Barcode::$sType object for $sTxt.

plot()

$oGd = $oGdBar->plot([Height => $iHeight, NoText => 0 | 1]);

creates GD object with barcode image for the $sTxt specified at new method. $iHeight is height of the image. If NoText is 1, the image has no text image of $sTxt.

 ex.
  my $oGdB = GD::Barcode->new('EAN13', '123456789012');
  my $oGD = $oGdB->plot(NoText=>1, Height => 20);
  # $sGD is a GD image with Height=>20 pixels, with no text.

barcode()

$sPtn = $oGdBar->barcode();

returns a barcode pattern in string with '1' and '0'. '1' means black, '0' means white.

 ex.
  my $oGdB = GD::Barcode->new('UPCE', '123456789012');
  my $sPtn = $oGdB->barcode();
  # $sPtn = '';

$errStr

$GD::Barcode::errStr

has error message.

$text

$oGdBar->{$text}

has barcode text based on $sTxt specified in new method.

AUTHOR

Top

Kawai Takanori GCD00051@nifty.ne.jp

COPYRIGHT

Top

SEE ALSO

Top

GD GD::Barcode subclasses


GD-Barcode documentation Contained in the GD-Barcode distribution.

package GD::Barcode;
require Exporter;
use strict;
use vars qw($VERSION @ISA $errStr);
@ISA = qw(Exporter);
$VERSION=1.15;
my @aLoaded = ();
#------------------------------------------------------------------------------
# new (for GD::Barcode)
#------------------------------------------------------------------------------
sub new($$$;$) {
        my($sClass, $sType, $sTxt, $rhPrm) = @_;
        my $oThis = {};
        unless(grep(/^$sType$/, @aLoaded)) {
        eval "require 'GD/Barcode/$sType.pm';";
        if($@) {
                $errStr = "Can't load $sType : $@";
                return undef;
                }
                push(@aLoaded, $sType);
        }
        bless $oThis, "GD::Barcode::$sType";
        return undef if($errStr = $oThis->init($sTxt, $rhPrm));
        return $oThis;
}
#------------------------------------------------------------------------------
# barPtn (for GD::Barcode)
#------------------------------------------------------------------------------
sub barPtn {
    my($bar, $table) = @_;
    my($sWk, $sRes);

    $sRes = '';
    foreach $sWk (split(//, $bar)) {
                $sRes .= $table->{$sWk};
    }
    return $sRes;
}
#------------------------------------------------------------------------------
# dumpCode (for GD::Barcode) for Code39, NW7...
#------------------------------------------------------------------------------
sub dumpCode {
    my( $sCode ) = @_;
    my($sWk, $sRes, $sClr);

#Init
    $sRes = '';
    $sClr = '1';  # 1: Black, 0:White

    foreach $sWk (split(//, $sCode)) {
                $sRes .= ($sWk eq '1')? $sClr x 3 : $sClr;      #3 times or Normal
                $sClr = ($sClr eq '0')? '1': '0';
    }
    return $sRes;
}
#------------------------------------------------------------------------------
# plot (for GD::Barcode)
#------------------------------------------------------------------------------
sub plot($$$$$) {
  my($sBarcode, $iWidth, $iHeight, $fH, $iStart) = @_;
  #Create Image
  my ($gdNew, $cWhite, $cBlack);
  eval {
    $gdNew = GD::Image->new($iWidth, $iHeight);
    $cWhite = $gdNew->colorAllocate(255, 255, 255);
    $cBlack = $gdNew->colorAllocate(  0,   0,   0);

    my $iPos =$iStart;
    foreach my $cWk (split(//,$sBarcode)) {
        if($cWk eq '0') {
            $gdNew->line($iPos, 0, $iPos, $iHeight - $fH, $cWhite);
        }
        elsif ($cWk eq 'G') {
            $gdNew->line($iPos, 0, $iPos, $iHeight - 2*($fH/3), $cBlack);
        }
        else {                              #$cWk eq "1" etc.
            $gdNew->line($iPos, 0, $iPos, $iHeight - $fH, $cBlack);
        }
        $iPos++;
    }
  };
  return ($gdNew, $cBlack);
}
#------------------------------------------------------------------------------
# Text (for GD::Barcode)
#------------------------------------------------------------------------------
sub Text($) {
        my($oThis) = @_;
        return $oThis->{text};
}
1;
__END__