| Catalyst-View-GD-Barcode documentation | Contained in the Catalyst-View-GD-Barcode distribution. |
Catalyst::View::GD::Barcode - make it easy to use GD::Barcode in Catalyst's View
Set string to be converted to barcode.
$c->stash->{'barcode_string'} = '123456';
Set barcode type. The default is 'NW7'.
$c->stash->{'barcode_type'} = 'NW7';
COOP2of5 | Code39 | EAN13 | EAN8 | IATA2of5 | ITF | Industrial2of5 | Matrix2of5 | NW7 | QRcode
Set barcode size option.
$c->stash->{'barcode_size'} = 10;
When the number of digit is insufficient, it buries by 0.
Set content type option. The default is 'png'.
$c->stash->{'content_type'} = 'png';
png | gif | jpeg
Set any other GD::Barcode options.
$c->stash->{'barcode_option'} = {NoText => 1}
Print the barcode.
$c->forward('Catalyst::View::GD::Barcode');
Generate barcode using GD::Barcode. You only need to set string and barcode type and no need to bother anything else. If it fails, it returns the string in plain text.
Set code in $c->res->body().
Returns the calculated check digit.
Toshimitu Yanagisawa, yanagisawa@shanon.co.jp
This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| Catalyst-View-GD-Barcode documentation | Contained in the Catalyst-View-GD-Barcode distribution. |
package Catalyst::View::GD::Barcode; use strict; our $VERSION = '0.05'; my($Revision) = '$Id: Barcode.pm,v 1.5 2006/04/26 13:59:45 yanagisawa Exp $';
sub gen_barcode { my $self = shift; my $c = shift; my $str = $c->stash->{'barcode_string'}; my $type = $c->stash->{'barcode_type'}; die "not integer barcode_size" if($c->stash->{'barcode_size'} =~ /\D/); my $size = sprintf('%%0%ss', $c->stash->{'barcode_size'} || length($c->stash->{'barcode_string'})); my $content_type = $c->stash->{'content_type'} || 'png'; my $opt = {}; if($str) { ##### set option my $size = sprintf('%%0%ss', $c->stash->{'barcode_size'}); $opt = $c->stash->{'barcode_option'}; $type ||= 'EAN13'; my($Barcode); my $m_name = "GD::Barcode::$type"; eval("use $m_name;"); if($@) { die "Do not install Barcord module $m_name"; } if ($type eq 'EAN13') { $Barcode = $m_name->new($self->calc_checkdigit(sprintf('%012s', $str))); } elsif ($type eq 'EAN8') { $Barcode = $m_name->new($self->calc_checkdigit(sprintf('%07s', $str))); }elsif($type eq 'Code39') { $Barcode = $m_name->new('*'. sprintf($size, $str).'*'); } elsif($type eq 'NW7') { $Barcode = $m_name->new('B'.sprintf($size, $str).'B'); } elsif($type eq 'QRcode') { $Barcode = $m_name->new(sprintf($size,$str), $opt); }else { $Barcode = $m_name->new(sprintf($size,$str)); } unless($Barcode) { $c->res->header('Content-Type' => 'text/plain'); return $GD::Barcode::errStr; } else { $c->res->header('Content-Type' => 'image/'.$content_type); return $Barcode->plot(%{$opt})->$content_type(); } }else{ $c->res->header('Content-Type' => 'image/'.$content_type); return 'No Barcode String'; } }
sub process{ my $self = shift; my $c = shift; $c->res->body($self->gen_barcode($c)); return 1; }
sub calc_checkdigit { my $self = shift; my $str = shift; my($checkdigit) = (10 - ((((substr($str, 1, 1) + substr($str, 3, 1) + substr($str, 5, 1) + substr($str, 7, 1) + substr($str, 9, 1) + substr($str, 11, 1)) * 3) + (substr($str, 0, 1) + substr($str, 2, 1) + substr($str, 4, 1) + substr($str, 6, 1) + substr($str, 8, 1) + substr($str, 10, 1))) % 10)) % 10; if (length($str) == 12) { $str .= $checkdigit; } elsif (length($str) == 13) { substr($str, 12, 1) = $checkdigit; } return $str; }
1;