Um guia para os iniciantes no mundo do FreeBSD
Configurando o FreeBSD para imprimir documentos no formato postscript.
Para configurar o seu FreeBSD para imprimir arquivos .ps
voce deve efetuar algumas modificacoes no arquivo /etc/printcap.
Mas antes de iniciar voce deve instalar em seu sistema o aplicativo
GNU GhostScript , disponivel no packages. Instalado o GhostScript,
iniciemos a configuracao:
A primeira coisa a fazer e verificar no ghostscript ( "gs -h" )
o DEVICE corespondente a sua impressora, por exemplo para a impressora
Deskjet 540 , o DEVICE e djet500 e se nao me falha a memoria para uma
Epson Stylus color II , o DEVICE e esc2.
Um exemplo de /etc/printcap , usando uma impressora Deskjet 540 conectada a LPT1:
lp|HP Deskjet 540:\
:lo=/var/spool/output/lpd/lp-lock:\
:lp=/dev/lpt0:\
:lf=/var/log/lpd-errs:\
:of=/var/spool/ps-filter:\
:sd=/var/spool/output/lpd:\
:sh:
Como voce pode ver , foi invocado um filtro de output para manusear
o arquivo .ps' ( :of=/var/spool/ps-filter:\ ) , este filtro esta descrito abaixo, voce deve grava-lo
em /var/spool/ e seta-lo com chmod +rx.
Do jeito que esta o filtro ira funcionar com impressoras da serie Deskjet 500,
se voce possuir outra impressora , procure no script a entrada:
-sDEVICE=djet500 e altere de acordo com o device correspondente a sua impressora.
#Inicio
#!/usr/bin/perl
# Filter which detects postscript files and appends cr to lines of text.
# $Id: ps-filter,v 1.3 1995/02/14 01:05:59 brian Exp $
$cat="/bin/cat";
$gs="/usr/local/bin/gs";
$_ = ;
if (/^%!/)
{
# Pipe the file as-is to the ghostscript interpreter.
# Postscript files have their pages reversed because my
# DeskJet 540 stacks them in reverse order if I don't.
$old_dir=`pwd`;
$tmp_dir = "/tmp/lp-gs.$$";
mkdir($tmp_dir,0700);
chdir $tmp_dir;
open(PIPE, "|$gs -q -sDEVICE=djet500 -sOutputFile=%03d.lj -")
|| die "$0: can't run ghostscript: $!";
print PIPE $_;
while ()
{
print PIPE $_;
}
close PIPE;
@pages=reverse(sort(<*.lj>));
system $cat, @pages;
unlink @pages;
chdir $old_dir;
rmdir $tmp_dir;
}
elsif (&isprint() && !/\r\n$/)
{
# Send the text to the printer with trailing lf converted to crlf.
s/([^\r])?\n$/\1\r\n/;
print;
while ()
{
s/([^\r])?\n$/\1\r\n/;
print;
}
}
else
{
print;
while ()
{
print;
}
}
sub isprint
{
($c) = split(//,$_);
return ($c =~ /[\s\n]/) || (ord($c) >= 32 && ord($c) < 127);
}
#Fim
Apos criar o filtro e editar o /etc/printcap sua impressora ja deve estar pronta
para um teste. Se na funcionar verifique se todos os diretorios utilizados existem e se
possuem as permissoes corretas, e tambem se todas as bibliotecas nessessarias estao disponiveis ( insrtaladas com o Xfree e com o ghostscript ).
Boa sorte!
Se você possui alguma critica , duvida ou sugestão ,entre em contato pelo e-mail: edson.brandi@uol.com.br