From 61858bb02854a656b2ce009febaebef2f7206a9c Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Fri, 7 Jan 2022 16:00:52 +0000 Subject: [PATCH] Bug 20894: Add barcode size parameters to /svc/barcode This patch adds a couple of new parameters to the barcode generator service: "modulesize," which controls the size of QRcodes*, and "height," which can be applied to all other barcode types. * The "modulesize" number refers to the pixel dimensions of each black and white square in the generated QRcode. The dimensions in "squares" of the QR code depends on how much data is being encoded. For QRcodes, one default parameters is used: An error-correction level of "M" (Medium, https://en.wikipedia.org/wiki/QR_code#Error_correction). To test, apply the patch and restart services. Test various settings to confirm that barcodes are displayed correctly: http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=QRcode&modulesize=3&barcode=https%3A%2F%2Fkoha-community.org http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=QRcode&modulesize=6&barcode=https%3A%2F%2Fkoha-community.org http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=Code39&height=50&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=Code39&height=20&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=COOP2of5&height=50&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=IATA2of5&height=50&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=Industrial2of5&height=50&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=ITF&height=50&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=Matrix2of5&height=50&barcode=32000000203734 http://127.0.0.1:8081/cgi-bin/koha/svc/barcode?type=NW7&height=50&barcode=32000000203734 --- svc/barcode | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/svc/barcode b/svc/barcode index 27d5952cd6..bd9c8203bc 100755 --- a/svc/barcode +++ b/svc/barcode @@ -102,10 +102,16 @@ binmode(STDOUT); my $type = $input->param('type') || 'Code39'; my $barcode = $input->param('barcode'); my $notext = $input->param('notext') ? 1 : 0; +my $height = $input->param('height') || 50; +my $qrcode_modulesize = $input->param('modulesize') || "5"; # 1+ my $image; eval { - $image = GD::Barcode->new( $type, $barcode )->plot( NoText => $notext )->png(); + if( $type eq "QRcode" ){ + $image = GD::Barcode->new('QRcode', $barcode, { Ecc => "M", ModuleSize => $qrcode_modulesize } )->plot->png(); + } else { + $image = GD::Barcode->new( $type, $barcode )->plot( NoText => $notext, Height => $height )->png(); + } }; if ( $@ ) { -- 2.20.1