Gerando arquivos PDF através do SAMBA

Este artigo descreve um processo simples através do qual é possível gerar arquivos PDF diretamente pelo Samba.
Dê uma olhada nos comentários pois acrescentei recursos para imprimir no diretório do usuário, com o nome enviado pelo windows e impressão colorida.
Confira!

[ Hits: 47.481 ]

Por: Fabio Bonilha em 17/09/2004


Executando a configuração - Linux



Após ter instalado o servidor, o GhostScript, configurado o SAMBA e testado as suas configurações através do cliente Windows, faça o seguinte:

1. Crie um diretório em um local conveniente chamado, por exemplo, "pdf".

2. Crie um compartilhamento (share) no SAMBA para este diretório, no exemplo chamaremos de "Impressos". As linhas a serem adicionadas no smb.conf são:

[Impressos]
   path = /pdf  
   browseable = yes  
   writeable = yes  
   guest ok = yes  
   force user = nobody  

3. Crie uma impressora compartilhada no SAMBA, que na verdade quando utilizada irá executar um script específico. Para fazer isso adicione as seguintes linhas ao smb.conf. Neste exemplo chamei a impressora de "pdf":

[pdf]
     path = /tmp  
     printable = yes  
     guest ok = yes  
     print command = /usr/local/bin/printpdf %s  
     use client driver = yes  

A última linha serve para evitar problemas com o Windows XP.

4. Crie o arquivo printpdf no local especificado em "print command", no exemplo /usr/local/bin. Este arquivo deverá conter as seguintes linhas:

#!/bin/sh

DATE=`date +%b%d-%H%M%S`
OUTDIR=/pdf
ps2pdf $1 $OUTDIR/$DATE.temp
mv $OUTDIR/$DATE.temp $OUTDIR/$DATE.pdf
rm $1

5. Salve o arquivos e execute:

# chmod +x printpdf

6. Reinicie o Samba com:

# service smb restart

ou equivalente na sua distribuição.

Página anterior     Próxima página

Páginas do artigo
   1. Pré-requisitos
   2. Executando a configuração - Linux
   3. Executando a configuração - Windows
   4. Testando
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Scripts no SAMBA

Inserindo o recurso de LIXEIRA nos compartilhamentos Samba

Migrando servidores Linux para autenticação LDAP

SAMBA 4 - Servidor de Arquivos Utilizando ACLs Windows (Domínio)

Samba 4 - Configurado para reportar a diferentes redes

  
Comentários
[1] Comentário enviado por fabio em 17/09/2004 - 10:04h

Excelente artigo! Agora vem cá, de onde você tirou essa idéia mirabolante? :P
Muito legal mesmo.

[2] Comentário enviado por agk em 17/09/2004 - 14:52h

Parabéns, excelente artigo, é impressionante as possibilidades que temos usando software livre. O melhor de tudo é que dá para guardar em pdf a impressão de qualquer aplicativo, muito bom mesmo, valeu.

[3] Comentário enviado por mnc em 17/09/2004 - 15:17h

faltou só um detalhe:

printing = bsd

nas opcoes globais do samba, senão nao funfa!

[4] Comentário enviado por fabio em 18/09/2004 - 00:01h

Nosso amigo Cabelo enviou uma dica que é leitura obrigatória para quem gostou desse artigo:

Enriquecendo o artigo: Gerando arquivos PDF através do SAMBA
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=1424

[]'s

[5] Comentário enviado por engos em 20/09/2004 - 15:06h

Beleza de artigo, pena que aqui não funciou... até eu ler a dica enviada pelo Cabelo.

Foi o primeiro artigo, né? Bem, mais cuidado na proxima porque faltou configurar a impressora adequadamente no samba, mas de resto ficou bom.

[]s

[6] Comentário enviado por fbonilha em 22/09/2004 - 11:28h

Antes de mais nada gostaria de agradecer a todos que contribuiram com seus comentários, dicas, etc...
Com relação ao ponto de ajustes colocados pelo Cabelo, lembrem-se de que no início do artigo diz:
1) A distribuição que fiz a configuração é RedHat

2) Que não abordaria detalhes sobre a configuração do Samba, que é justamente onde diferem alguns pontos, especialmente no quesito Cups x BSD, ficando esses detalhes a cargo do responsável pela configuração

3) Tentarei no próximo artigo abordar as configurações em outras distribuições e/ou abordar outros pontos nas variações de configuração.

Novamente, muito obrigado a todos.

[7] Comentário enviado por rbn_jesus em 28/10/2004 - 18:13h

Achei muito bom este artigo...
assim que tiver oportunidade testarei.

[8] Comentário enviado por fernandus em 10/11/2004 - 17:51h

parabens...só a idéia já valeu a pena...vou testar amanha...

um abraco

[9] Comentário enviado por Ti_j@der em 19/12/2004 - 21:16h

muito bom, paraben pela iniciativa, espero q possamos fazer deste site uma referencia mundial em linux...heeeee

[10] Comentário enviado por fernandoamador em 23/12/2004 - 00:32h

Ótima apostila. Recomendo


[11] Comentário enviado por augusto_jr em 25/01/2005 - 16:16h

Cara, muito bom o seu artigo. E o melhor é q a comunidade contribui para facilitar a vida q quem tem outras distribuições. Valeu mesmo...

[12] Comentário enviado por johntop3 em 26/01/2005 - 22:44h

grande idéia show de bola

[13] Comentário enviado por reimassupilami em 18/02/2005 - 13:59h

cara, q idéia massa mesmo!!! legal ae a idéia... pra mim vai ser ótimo se rodar aqui, pois estou precisando gerar vários pdfs, e todos programas q ja testei só me decepcionaram...

bom, tive o seguinte problema: quando mando a impressão, no servidor da essa mensagem no log:

Unable to connect to CUPS server localhost - Connection refused

ou seja, parece q ele precisa de alguma coisa do cups pra rodar, é isso?

[14] Comentário enviado por davidsonpaulo em 05/03/2005 - 10:47h

Bom... aqui não funcionou... mas eu fiz a configuração bem rapidamente e, além disso, aqui na empresas eles ainda usam uma porcaria duma rede Novell que é um lixo... talvez esteja dando alguma incompatibilidade, sei lá... qualquer dia desses eu tento com mais calma...

[15] Comentário enviado por leandrobernardo em 14/03/2005 - 09:49h

Configuração para Samba 3.X Fedora 2
no arquivo smb.conf

[pdf]
comment = Gerador de PDF
path = /var/tmp
guest ok = no
printable = yes
printing = bsd
printcap name = cups
print command = /usr/local/bin/printpdf %s
lpq command = /bin/true

[16] Comentário enviado por reimassupilami em 14/03/2005 - 09:53h

pow, aki funcionou perfeitamente... foi a melhor solução que já encontrei para criar pdf de qualquer arquivo, dessa maneira... alguns programinhas que testei sempre zoavam o arquivo, naum aparecia imagem, etc...

ótimo mesmo..

[17] Comentário enviado por reimassupilami em 14/04/2005 - 16:45h

agora to com uma dúvida aqui pra personalizar melhor isso: tem alguma forma de ao invés de gerar o arquivo com data e horario, gerar com o nome do arquivo original, mas com o .pdf na frente? naum sei se tem alguma variavel q pega isso... tem?

preciso converter uma grande quantidade de arquivos pra pdf, dae para renomear um por um vai ser complicado... por exemplo, gostaria que ao imprimir um arquivo teste.doc fosse gerado um arquivo teste.pf... é possivel?

[18] Comentário enviado por germano_silva em 25/04/2005 - 07:50h

deixar aqui tb meu parabens a ti pq esse artigo me ajudou a resolver problemas na rede

[19] Comentário enviado por caduardo em 28/04/2005 - 16:01h

Olás, como faço para inves deu pegar a date do arquivo eu pegar o nome do arquivo. So preciso disso, que ele apareça o nome real do arquivo.

Grato.

[20] Comentário enviado por fbonilha em 28/04/2005 - 17:45h

Altere a seção PDF do smb.conf para

[pdf]
comment = Gerador de PDF
path = /tmp
guest ok = no
printable = yes
printing = bsd
printcap name = cups
print command = /usr/local/bin/printpdf "%s" "%H" "//%L/%u" "%m" "%I" "%J" &
lpq command = /bin/true

O script de impressão ficou mais complexo. Altere-o para

PS2PDF=ps2pdf13
OPTIONS="-dAutoFilterColorImages=false -sColorImageFilter=FlateEncode"
#Values taken from arguments:
INPUT=$1
PREFIX="$2"
WINBASE=$(echo "$3"|sed -e 's,/,\\\\,g')
#NAME=`echo "$6"|sed -e 's/[&/:{}\\\[<>$#@*^!?=|]/-/g;s/]/-/g'`
NAME=`echo "$6"|tr '[:punct:]' '[-*]'`

# Source config file if it exists:
CONFFILE=/etc/samba/print-pdf.conf
[ -e $CONFFILE ] && . $CONFFILE

#Values not taken as arguments, could be set via env. vars (?) or config file
KEEP_PS=${KEEP_PS=0}
PERMS=${PERMS=640}
BASEFILE=${BASEFILE=pdf-service}
TEMP="${TEMP=$2}"
UMASK=${UMASK=006}

#Make sure that destination directory exists
mkdir -p "$PREFIX"

INFILE=$(basename $INPUT)

umask $UMASK

[ -n "$NAME" ] && TEMP="$PREFIX"

#make a temp file to use for the output of the PDF
OUTPUT=`mktemp -q $TEMP/$BASEFILE-XXXXXX`
if [ $? -ne 0 ]; then
echo "$0: Can't create temp file $TEMP/$OUTPUT, exiting..."
exit 1
fi
if [ -n "$NAME" ]; then
FINALOUTPUT="$PREFIX/$NAME"
else
FINALOUTPUT="$OUTPUT"
fi
if [ -n "$7" ]; then
OPTIONS="$OPTIONS -dPDFSETTINGS=/${7#pdf-}"
else
OPTIONS="$OPTIONS -dPDFSETTINGS=/default"
fi

WIN_OUTPUT="$WINBASE\\"`basename "$FINALOUTPUT"`
#mv "$INPUT" "$INPUT.ps";INPUT="$INPUT.ps"

# create the pdf
$PS2PDF $OPTIONS "$INPUT" "$OUTPUT.pdf" >/dev/null 2>&1
mv -f "${OUTPUT}.pdf" "${FINALOUTPUT}".pdf

# Generate a message to send to the user, and deal with the original file:
MESSAGE=$(echo "Your PDF file has been created as $WIN_OUTPUT.pdf
")


# Cleanup
if [ $KEEP_PS != 0 ];then
mv -f $INPUT "${FINALOUTPUT}".ps
MESSAGE=$(echo "$MESSAGE and your postscript file as $WIN_OUTPUT.ps")
# Fix permissions on the generated files
chmod $PERMS "${FINALOUTPUT}".ps "${FINALOUTPUT}".pdf
else
rm -f $INPUT
# Fix permissions on the generated files
chmod $PERMS "${FINALOUTPUT}".pdf
fi

#Remove empty file from mktemp:
rm -f $OUTPUT

# Send notification to user
echo -e $MESSAGE|smbclient -M $4 -I $5 -U "PDF Generator" >/dev/null 2>&1

Para imprimir colorido use uma impressora como a HP COLOR LASERJET 8500 PS.

Créditos do script melhorado para Buchan Milne <bgmilne@cae.co.za>

[21] Comentário enviado por reimassupilami em 29/04/2005 - 11:03h

hum, não consegui funcionar não hein... fiquei em dúvida com relação aos parametros... parece que naum tem nenhum lugar q informa o local onde os arquivos serão gravados...

poderia nos dar uma ajuda?

[22] Comentário enviado por capitainkurn em 03/10/2005 - 04:57h

Ótimo artigo, eu mesmo estou usando isso em alguns clientes! Muito obrigado pela sua iniciativa Fabio!

[23] Comentário enviado por hugobcar em 18/10/2005 - 08:17h

Muito interessante esse artigo, vou colocar em prática.

HugoBCar

[24] Comentário enviado por fernandoamador em 18/04/2006 - 18:58h

Ótimo artigo...

[25] Comentário enviado por wellesximenes em 07/08/2006 - 20:43h


Quando se usa o suse com cups como deve ficar o samba global ?pois o meu não esta funcionando


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts