« PS2PDF » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
(conversion de la documentation originale de Léa par HTML::WikiConverter)
 
(conversion de la documentation originale de Léa par HTML::WikiConverter)
Ligne 23 : Ligne 23 :
Voici le cheminement :
Voici le cheminement :


client <span class="code">--></span> imprimante PDF <span class="code">--></span> script <span class="code">printpdf--></span> Répertoire public <br /> 
client <span class="code">--></span> imprimante PDF <span class="code">--></span> script <span class="code">printpdf--></span> Répertoire public <br /> 


=== Installation ===
=== Installation ===
Ligne 37 : Ligne 37 :
<br />On va ensuite utiliser le script [http://www.linuxgazette.com/issue72/misc/bright/printpdf.sh.txt printpdf] suivant :
<br />On va ensuite utiliser le script [http://www.linuxgazette.com/issue72/misc/bright/printpdf.sh.txt printpdf] suivant :


<div class="code"><nowiki>#!/bin/sh </nowiki><br /><nowiki># </nowiki>'''printpdf'''<br /><br /><nowiki># Simple script pour convertir un fichier postscript </nowiki><br /><nowiki># spécifié en un document PDF et le déposer dans un </nowiki><br /><nowiki># répertoire partagé avec Samba. </nowiki><br /><nowiki>#  </nowiki><br /><nowiki># Arguments: </nowiki><br /><nowiki># 1er - Le nom du fichier de spool </nowiki><br /><nowiki># </nowiki><br /><nowiki># John Bright, 2001, jbright@winfordeng.com </nowiki><br /><br /><nowiki># Nous allons créer le pdf dans un fichier temporaire </nowiki><br /><nowiki># basé sur la date et l'heure courante. </nowiki><br /><nowiki># Après cela, nous le renommerons avec l'extension pdf. </nowiki><br /><nowiki># On fait cela car si un utilisateur essaie d'ouvrir un </nowiki><br /><nowiki># fichier pdf qui est encore en cours d'écriture, il </nowiki><br /><nowiki># obtiendra un message d'erreur disant que le PDF est </nowiki><br /><nowiki># corrompu, alors qu'il n'est simplement pas fini. </nowiki><br /><br />DATE=`date +%b%d-%H%M%S` <br /><br /><nowiki># Répertoire où placer la sortie. </nowiki><br /><nowiki># Assurez-vous que ce répertoire existe, et que </nowiki><br /><nowiki># l'utilisateur sous lequel tourne Samba peut y écrire </nowiki><br /><nowiki># (par exemple l'utilisateur nobody) </nowiki><br /><br />OUTDIR=/home/public/pdf <br /><br />ps2pdf $1 $OUTDIR/$DATE.temp <br />mv $OUTDIR/$DATE.temp $OUTDIR/$DATE.pdf <br />rm $1</div>
<div class="code"><nowiki>#!/bin/sh </nowiki><br /><nowiki># </nowiki>'''printpdf'''<br /><br /><nowiki># Simple script pour convertir un fichier postscript </nowiki><br /><nowiki># spécifié en un document PDF et le déposer dans un </nowiki><br /><nowiki># répertoire partagé avec Samba. </nowiki><br /><nowiki>#  </nowiki><br /><nowiki># Arguments: </nowiki><br /><nowiki># 1er - Le nom du fichier de spool </nowiki><br /><nowiki># </nowiki><br /><nowiki># John Bright, 2001, jbright@winfordeng.com </nowiki><br /><br /><nowiki># Nous allons créer le pdf dans un fichier temporaire </nowiki><br /><nowiki># basé sur la date et l'heure courante. </nowiki><br /><nowiki># Après cela, nous le renommerons avec l'extension pdf. </nowiki><br /><nowiki># On fait cela car si un utilisateur essaie d'ouvrir un </nowiki><br /><nowiki># fichier pdf qui est encore en cours d'écriture, il </nowiki><br /><nowiki># obtiendra un message d'erreur disant que le PDF est </nowiki><br /><nowiki># corrompu, alors qu'il n'est simplement pas fini. </nowiki><br /><br />DATE=`date +%b%d-%H%M%S` <br /><br /><nowiki># Répertoire où placer la sortie. </nowiki><br /><nowiki># Assurez-vous que ce répertoire existe, et que </nowiki><br /><nowiki># l'utilisateur sous lequel tourne Samba peut y écrire </nowiki><br /><nowiki># (par exemple l'utilisateur nobody) </nowiki><br /><br />OUTDIR=/home/public/pdf <br /><br />ps2pdf $1 $OUTDIR/$DATE.temp <br />mv $OUTDIR/$DATE.temp $OUTDIR/$DATE.pdf <br />rm $1</div>


que l'on copie dans le répertoire <span class="code">/usr/bin</span> sans oublier de lui mettre les droits d'exécution :
que l'on copie dans le répertoire <span class="code">/usr/bin</span> sans oublier de lui mettre les droits d'exécution :
Ligne 51 : Ligne 51 :
Nous allons créer une imprimante nommée "pdf" dans Samba. <br />Voici le fichier de configuration mininal que vous pouvez également adapter à votre installation.
Nous allons créer une imprimante nommée "pdf" dans Samba. <br />Voici le fichier de configuration mininal que vous pouvez également adapter à votre installation.


<div class="code"><nowiki>#Fichier smb.conf </nowiki><br /><br />[global] <br /> guest account = nobody <br /> invalid users = root <br /> interfaces = 127.0.0.1 eth0 <br /> bind interfaces only = Yes <br /> hosts allow = 192.168. <br /> security = share <br /> workgroup = WORKGROUP <br /> printer driver file = /home/printer/printers.def <br /><br />[public] <br /> path = /home/public <br /> browseable = yes <br /> writeable = yes <br /> guest ok = yes <br /> force user = nobody <br /><br />'''[pdf]'''<br />''' path = /tmp'''<br />''' printable = yes'''<br />''' guest ok = yes'''<br />''' print command = /usr/bin/printpdf %s'''<br />''' lpq command ='''<br />''' lprm command ='''<br />''' printer driver = HP Color LaserJet 4500 PS'''<br />''' printer driver location = \\%h\printer$'''<br /><br />[printer] <br /> path = /home/printer <br /> guest ok = yes <br /> read only = yes</div>
<div class="code"><nowiki>#Fichier smb.conf </nowiki><br /><br />[global] <br /> guest account = nobody <br /> invalid users = root <br /> interfaces = 127.0.0.1 eth0 <br /> bind interfaces only = Yes <br /> hosts allow = 192.168. <br /> security = share <br /> workgroup = WORKGROUP <br /> printer driver file = /home/printer/printers.def <br /><br />[public] <br /> path = /home/public <br /> browseable = yes <br /> writeable = yes <br /> guest ok = yes <br /> force user = nobody <br /><br />'''[pdf]'''<br />''' path = /tmp'''<br />''' printable = yes'''<br />''' guest ok = yes'''<br />''' print command = /usr/bin/printpdf %s'''<br />''' lpq command ='''<br />''' lprm command ='''<br />''' printer driver = HP Color LaserJet 4500 PS'''<br />''' printer driver location = \\%h\printer$'''<br /><br />[printer] <br /> path = /home/printer <br /> guest ok = yes <br /> read only = yes</div>


=== Installation ===
=== Installation ===
Ligne 80 : Ligne 80 :


<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Dimitri CLATOT le 11/01/2002.</div>
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Dimitri CLATOT le 11/01/2002.</div>
= Copyright =
Copyright &copy; 11/01/2002, Dimitri CLATOT
{{CC-BY-NC-SA}}

Version du 7 septembre 2005 à 12:09

PS2PDF

PS2PDF
par Dimitri Clatot
Ou : comment votre serveur linux convertit vos documents de différents formats en fichier PDF à partir d'un client Linux ou Windows.

PS2PDF

Présentation

ps2pdf est un filtre qui permet de transformer un document postscript (.ps) en document Acrobat reader (.pdf).

Vous pouvez l'utiliser en ligne de commande très simplement (ps2pdf doc.ps doc.pdf) ; cet article va vous expliquer comment votre serveur linux peut convertir vos documents au format PDF à partir d'un client linux ou window$.

Depuis votre client, vous allez imprimer sur une pseudo imprimante, qui va créer un document PDF, mis à disposition dans un répertoire public.

Pour réaliser cette recette, nous avons besoin de 3 ingrédients :

  • [../reseau/samba.php3 Samba]: Nous l'utiliserons pour partager une imprimante 'PDF' et un répertoire public.
  • GNU Ghostscript est l'application qui permettra à travers le script ps2pdf de transformer le travail d'impression soumis à l'imprimante 'PDF' en fichier pdf.
  • Un script d'impression créé par John Bright.

Voici le cheminement :

client --> imprimante PDF --> script printpdf--> Répertoire public
 

Installation

Nous allons commencer par créer le répertoire public puis celui où seront stockés les fichiers traités :

[root@micro home]# mkdir -p /home/public/pdf

en affectant les droits de lecture, ecriture et exécution (rwx) à l'utilisateur nobody :

[root@micro home]# chown nobody:nobody -R /home/public
[root@micro home]# chmod u+rwx -R /home/public


On va ensuite utiliser le script printpdf suivant :

#!/bin/sh
# printpdf

# Simple script pour convertir un fichier postscript
# spécifié en un document PDF et le déposer dans un
# répertoire partagé avec Samba.
# 
# Arguments:
# 1er - Le nom du fichier de spool
#
# John Bright, 2001, jbright@winfordeng.com

# Nous allons créer le pdf dans un fichier temporaire
# basé sur la date et l'heure courante.
# Après cela, nous le renommerons avec l'extension pdf.
# On fait cela car si un utilisateur essaie d'ouvrir un
# fichier pdf qui est encore en cours d'écriture, il
# obtiendra un message d'erreur disant que le PDF est
# corrompu, alors qu'il n'est simplement pas fini.

DATE=`date +%b%d-%H%M%S`

# Répertoire où placer la sortie.
# Assurez-vous que ce répertoire existe, et que
# l'utilisateur sous lequel tourne Samba peut y écrire
# (par exemple l'utilisateur nobody)

OUTDIR=/home/public/pdf

ps2pdf $1 $OUTDIR/$DATE.temp
mv $OUTDIR/$DATE.temp $OUTDIR/$DATE.pdf
rm $1

que l'on copie dans le répertoire /usr/bin sans oublier de lui mettre les droits d'exécution :

[root@micro root]# mv printpdf.sh.txt /usr/bin/printpdf
[root@micro root]# chmod +x /usr/bin/printpdf*

Installation de Ghostscript

Le script ps2pdf fait partie de l'application Ghostscript que l'on peut trouver sous le nom de package ghostscript sur Red Hat/Mandrake, gs ou gs-aladdin sur Debian. Vous pouvez l'installer avec le package adapté à votre distribution ou à partir des sources disponibles sur le site des auteurs.

Paramètrage de Samba

Nous allons créer une imprimante nommée "pdf" dans Samba.
Voici le fichier de configuration mininal que vous pouvez également adapter à votre installation.

#Fichier smb.conf

[global]
 guest account = nobody
 invalid users = root
 interfaces = 127.0.0.1 eth0
 bind interfaces only = Yes
 hosts allow = 192.168.
 security = share
 workgroup = WORKGROUP
 printer driver file = /home/printer/printers.def

[public]
 path = /home/public
 browseable = yes
 writeable = yes
 guest ok = yes
 force user = nobody

[pdf]
 path = /tmp
 printable = yes
 guest ok = yes
 print command = /usr/bin/printpdf %s
 lpq command =
 lprm command =
 printer driver = HP Color LaserJet 4500 PS
 printer driver location = \\%h\printer$

[printer]
 path = /home/printer
 guest ok = yes
 read only = yes

Installation

Pilote pour windows

Pour que le pilote de l'imprimante s'installe automatiquement sous window$, il faut récupérer celui que l'on a choisi (de préférence un pilote d'imprimante couleur PostScript, ici HP Color LaserJet 4500 PS) et extraire le fichier de configuration qui a l'extension INF.

Puis avec la commande 'make_printerdef' fournie avec Samba (taper sur une seule ligne) :

[root@micro public]# make_printerdef CONFIG.INF 'PILOTE COULEUR POSTSCRIPT' > /home/printer/printers.def


Après avoir tapé la commande, le programme vous demande de copier les fichiers du pilote correspondant, ici dans /home/printer.

Poste client Windows

L'installation sur un poste windows est on ne peut plus simple, il suffit d'ajouter une imprimante réseau et indiquer le chemin de la file d'impression dans notre exemple \\LE_MICRO_LINUX\PDF. Puis le pilote s'installera tout seul.

Poste client Linux

Ici, je vous laisse le choix des armes pour configurer votre imprimante (vi, webmin...) qui en général se base sur le script smbprint fourni avec Samba.

Une fois tout installé, lancez une impression sur cette imprimante et récupérez votre fichier sous format pdf dans le répertoire partagé /home/public/pdf.

The END

Cet article est une libre adaptation avec l'accord de son auteur de celui-ci.

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Dimitri CLATOT le 11/01/2002.

Copyright

Copyright © 11/01/2002, Dimitri CLATOT

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/