domingo, fevereiro 03, 2008

Configurando uma impressora PDF

Por: Flavio Torres <fla_torres@yahoo.com.br>

Bom, precisei refazer um servidor e acabei lembrando que eu me prometi um how-to sobre a impressora pdf, como ela esta instalada, e o que precisei?

Pre-requisitos:

Samba instalado:

# apt-get install [samba|smb]

Utilizaremos o ps2pdf13 (PostScript 2 Pdf), que faz parte do pacote gs-common instalado:

# apt-get install gs-common

Configurações a serem alteradas no samba:

   security = share
load printers = yes
printing = lprng
printcap name = /etc/printcap

[print_pdf]
;print_pdf e´ o nome da impressora que aparecera´ compartilhada quando voce fizer um \\servidor
printing = print_pdf
comment = Impressora PDF dir saida: pdf
path = /tmp
printable = yes
browseable = yes
guest ok = yes
print command = /usr/bin/printpdf %s
; Local onde deve ser armazenado o script abaixo
use client driver = yes
[pdf]
; Diretorio onde ficarao os arquivos pdf apos a conversao
comment = Diretorio de pdf
path = /home/grupos/pdf
; Voce deve criar este diretorio com permissao rw para o usuario nobody
public = yes
only guest = yes
writable = yes
guest ok = yes
force user = nobody

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no


Comentários:

print_pdf é o nome da impressora que aparecerá compartilhada quando você fizer um \\servidor

print command = /usr/bin/printpdf %s Local onde deve ser armazenado o script abaixo

[pdf] Diretório onde ficarão os arquivos pdf após a conversão

path = /home/grupos/pdf Você deve criar este diretório com permissão rw para o usuário nobody

Abaixo segue o script que vai tratar o seu arquivo, converter e salvar no devido diretorio:

#!/bin/bash
# printpdf
# Script converte arquivo em pdf
# Flavio Torres, flaviotorres@linuxmasters.info
# v 0.1 - Setembro/2006

DIR=/home/grupos/pdf

NOME=`grep -m 1 -i "%%Title" "$1"`
if [[ `echo $NOME | fgrep "://"` ]]; then
NOMEARQUIVO=`echo $NOME | grep -m 1 -i "%%Title" | cut -d\. -f2`
else
NOMEARQUIVO=`grep -m 1 -i "%%Title" "$1" | cut -f 2- -d' '| cut -f 1 -d'.'| sed -e 's/[ ()]//g'`
fi

ps2pdf13 $1 $DIR/$(echo $NOMEARQUIVO | sed 's/\?//g' | tr -d "\r").pdf

rm -f /tmp/$1

Pronto, reinicie o samba.