print under linux


PRINT perl script
El próposito de este código es tener la funcionalidad del PRINT del DOS bajo linux. Es un script perl fácilmente editable, que esta diseñado para manejar impresoras DESKJET serie 500 (y 600) con lenguaje PCL de HP.

Admite tanto la impresión de un fichero pasado como parámetro como una canalización; esto es, tanto "print <fichero>" como "cat fichero | print"



#!/usr/bin/perl $num = scalar(@ARGV); if ($num>0){ open IN,"<".$ARGV[0] || die "Cannot open $ARGV[0]"; @data = <IN>; close IN; }else{ @data = <STDIN>; } $reset = chr(27) . chr(69); $selftest = chr(27) . chr(122); $e = chr(27) . chr(38) . chr(108); # Escape codes DJ 500 (PCL) $e2 = chr(27) . chr(38) . chr(107); $e3 = chr(27) . chr(40) . chr(115); $ejectpage = $e . chr(48) . chr(72); $a4 = $e . chr(50) . chr(54) . chr(65); $line_termination = $e2 . chr(48) . chr(71); # CR=CR; LF=LF; FF=FF; $line_termination2 = $e2 . chr(49) . chr(71); # CR=CR+LF; LF=LF; FF=FF; $line_termination3 = $e2 . chr(50) . chr(71); # CR=CR; LF=CR+LF; FF=CR+FF; $line_termination4 = $e2 . chr(51) . chr(71); # CR=CR+LF; LF=CR+LF; FF=CR+FF; $latin1 = chr(27) . chr(40) . chr(48) . chr(78); $spanish = chr(27) . chr(40) . chr(50) . chr(83); $fixed = $e3 . chr(48) . chr(80); $proportional = $e3 . chr(49) . chr(80); $compressed = $e2 . chr(50) . chr(83); $elite12 = $e2 . chr(52) . chr(83); $italic = $e3 . chr(49) . chr(83); $bold = $e3 . chr(51) . chr(66); $normal = $e3 . chr(48) . chr(66); $courier = $e3 . chr(52) . chr(48) . chr(57) . chr(57) . chr(84); $cgtimes = $e3 . chr(52) . chr(49) . chr(48) . chr(49) . chr(84); $lettergothic = $e3 . chr(52) . chr(49) . chr(48) . chr(50) . chr(84); $univers = $e3 . chr(52) . chr(49) . chr(52) . chr(56) . chr(84); $helvetica = $e3 . chr(52) . chr(84); $timesroman = $e3 . chr(53) . chr(84); $garmond = $e3 . chr(49) . chr(48) . chr(49) . chr(84); $letterq = $e3 . chr(50) . chr(81); $economode = $e3 . chr(49) . chr(81); open PRN, ">>/dev/lp0" || die "Cannot open /dev/lp0"; # must be root print PRN $a4; print PRN $line_termination4; # huh? print PRN $elite12; print PRN $courier; print PRN $letterq; print PRN @data; print PRN $ejectpage; close PRN; __END__


Back