Bug 11592: MARCView and ISBD followup
[koha.git] / svc / barcode
1 #!/usr/bin/perl
2
3 # Copyright 2014 ByWater Solutions
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use Modern::Perl;
21
22 use CGI qw(header);
23 use GD::Barcode;
24
25 use C4::Auth qw(check_cookie_auth);
26
27 =head1 NAME
28
29     /cgi-bin/koha/svc/barcode
30
31 =head1 SYNOPSIS
32
33 This service generates a PNG barcode image for the requested barcode.
34
35 =head2 PARAMETERS
36
37 =over
38
39 =item I<barcode>
40
41 I<barcode> is the desired barcode. It should be called like:
42
43 =item I<type>
44
45 I<type> is the desired barcode type. Possible values are
46 Code39
47 UPCE
48 UPCA
49 QRcode
50 NW7
51 Matrix2of5
52 ITF
53 Industrial2of5
54 IATA2of5
55 EAN8
56 EAN13
57 COOP2of5
58
59 If ommited,it defaults to Code39.
60
61 =back
62
63 =head2 EXAMPLES
64
65 =over
66
67 =item /cgi-bin/koha/svc/barcode?barcode=123456789
68
69 Returns a Code39 barcode image for barcode 123456789
70
71 =item /cgi-bin/koha/svc/barcode?barcode=123456789&type=UPCE
72
73 Returns a UPCE barcode image for barcode 123456789
74
75 =cut
76
77 my $input = new CGI;
78
79 my ( $auth_status, $sessionID ) = check_cookie_auth( $input->cookie('CGISESSID'), { catalogue => '*' } );
80
81 if ( $auth_status ne "ok" ) {
82     exit 0;
83 }
84
85 binmode(STDOUT);
86
87 my $type = $input->param('type') || 'Code39';
88 my $barcode = $input->param('barcode');
89 my $image;
90
91 eval {
92     $image = GD::Barcode->new( $type, $barcode )->plot()->png();
93 };
94
95 if ( $@ ) {
96     # problem creating image
97     print header( -status => 500 );
98 } else {
99     print header('image/png');
100     print $image;
101 }
102
103 exit 0;
104
105 =head1 AUTHOR
106
107 Kyle M Hall <kyle@bywatersolutions.com>
108
109 =cut