X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=evolis-printer.pl;h=23f431af13acccc1cc9a6d081752ac0eb988a8b8;hb=f3c09fd7ef64c13af90056e03ae868f1e106ff14;hp=d37eddd57070c59d4e22cfc5f1dca877a3237885;hpb=3b7a8099ab9b4a9c1df68655539bb0be2ff10dff;p=Printer-EVOLIS.git diff --git a/evolis-printer.pl b/evolis-printer.pl index d37eddd..23f431a 100755 --- a/evolis-printer.pl +++ b/evolis-printer.pl @@ -17,10 +17,13 @@ local $/ = "\r"; my $page = 1; +my $name = $ARGV[0] || 'page'; + sub save_pbm; while(<>) { - die "no escape at beginning",dump($_) unless s/^\x1B//; + die "no escape at beginning",dump($_) unless s/^(\x00*)\x1B//; + warn "WARNING: ", length($1), " extra nulls before ESC\n" if $1; chomp; my @a = split(/;/,$_); my $c = shift @a; @@ -36,10 +39,12 @@ while(<>) { } elsif ( $c eq 'Pr' ) { print "improve $a[0]\n"; # FIXME windows sends it, cups doesn't + } elsif ( $c eq 'Sv' ) { + print "even page on duplex printing\n"; } elsif ( $c eq 'Db' ) { # XXX not in cups my ( $color, $two, $data ) = @a; $two eq '2' or die '2'; - my $path = "page-Db-$color-$page.pbm"; + my $path = "$name-Db-$color-$page.pbm"; $page++; save_pbm $path, 648, 1015, $data; # FIXME 1016? } elsif ( $c eq 'Dbc' ) { # XXX not in cups @@ -50,9 +55,12 @@ while(<>) { } $len == length $comp or warn "wrong length $len != ", length $comp; - my ( $w, $h ) = ( 646, 1081 ); # from driver + my $w = 648 / 2; + +=for non-working my $data; + my $i = 0; while ( $i < length $comp ) { my $len = ord(substr($comp,$i,4)); @@ -63,11 +71,14 @@ while(<>) { $i += $len; } +=cut + + my $data = $comp; - my $path = "page-Dbc-$color-$page.pbm"; + my $path = "$name-Dbc-$color-$page.pbm"; $page++; - #$h = int( length($data) * 8 / $w ); + my $h = int( $len / 128 ); save_pbm $path, $w, $h, $data; } else {