From: Dobrica Pavlinusic Date: Tue, 7 Feb 2012 17:40:12 +0000 (+0100) Subject: use librsvg2-bin and netpbm for rendering X-Git-Url: http://git.rot13.org/?p=Printer-Zebra.git;a=commitdiff_plain;h=ac2d7685e18cb552beb759d027884ffe0179ccc3 use librsvg2-bin and netpbm for rendering ImageMagick is broken in older versions, ignoring -density and/or -units flag, so we need something else to render pixel exact bitmaps --- diff --git a/svg-render.pl b/svg-render.pl index 6eeb4f9..d86488d 100755 --- a/svg-render.pl +++ b/svg-render.pl @@ -3,25 +3,20 @@ use warnings; use strict; use autodie; -# 5166 px = 1000 dpi +# sudo apt-get install librsvg2-bin netpbm -my $size = $ENV{SIZE} || '105x40'; - -my $w = 832; - -my $density = $w / 5166 * 1000; -warn "# density = $density\n"; +my $size = $ENV{SIZE} || '105x40'; +my $width = $ENV{WIDTH} || 832; my $args = join(' ', @ARGV); -die "usage: $0 1301272944 callnumber\n" unless $args; +die "usage: $0 1301272944 callnumber > label.pbm\n" unless $args; my ( $barcode, $call1, $call2, $call3, $call4 ) = split(/\s+/, $args, 5); -my $pbm = "/tmp/$barcode.pbm"; - open(my $from, '<', "templates/$size.svg"); -open(my $to, '|-', "convert -units PixelsPerInch -density $density - $pbm"); +open(my $to, '|-', "rsvg-convert --width=$width --format=png --background-color=white | pngtopnm | pnmdepth 2"); while(<$from>) { + no warnings 'uninitialized'; s/1301272944/$barcode/gs && warn "# barcode $barcode\n"; s/##call1##/$call1/gs && warn "# 1: $call1\n"; s/##call2##/$call2/gs && warn "# 2: $call2\n"; @@ -33,6 +28,3 @@ while(<$from>) { close($from); close($to); -warn "$pbm ", -s $pbm, " bytes\n"; - -