mise en place d`une imprimante virtuelle destinée à la conversion

Transcription

mise en place d`une imprimante virtuelle destinée à la conversion
MISE EN PLACE
D’UNE IMPRIMANTE VIRTUELLE
DESTINÉE À LA CONVERSION
DE DOCUMENTS AU FORMAT PDF.
Auteur : Julien EHRHART.
Environnement NT4.
Document pour la Communauté Urbaine du Grand Nancy.
Dernière mise à jour : 7 juin 2004.
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Sommaire :
1. Présentation du projet........................................................................................................................................... 3
2. Présentation des logiciels utilisés....................................................................................................................... 4
3. Configuration du serveur d’impression............................................................................................................... 5
3.1. Préparation à l’installation des logiciels..................................................................................................... 5
3.2. Installation des logiciels............................................................................................................................... 5
3.2.1. Adobe PostScript Driver........................................................................................................................ 5
3.2.2. RedMon............................................................................................................................................... 10
3.2.3. Utilitaires « UnixUtils ».........................................................................................................................10
3.2.4. GhostScript..........................................................................................................................................10
3.2.4.1. Batch d’exécution de la procédure......................................................................................... 10
3.2.4.2. Installation.............................................................................................................................. 12
3.2.4.3. Script de paramétrage de GhostScript................................................................................... 13
3.3. Configuration de l’imprimante RedMon pour GhostScript...................................................................... 14
3.4. Configuration des paramètres par défaut de l’imprimante...................................................................... 19
3.5. Suppression des fichiers nécessaires à l’installation..............................................................................20
4. Configuration du serveur de fichier.................................................................................................................. 21
4.1. Vérification des droits de la ressource de destination.............................................................................21
4.2. Autoriser les accès anonymes sur la ressource.......................................................................................21
4.2.1. Les accès anonymes ou « NullSession »............................................................................................21
4.2.2. Modification de la base de registre......................................................................................................22
4.3. Tâche planifiée de suppression des fichiers PDF.................................................................................... 24
4.3.1. Contenu du fichier batch......................................................................................................................24
4.3.2. Planification de la tâche.......................................................................................................................24
5. Configuration du client........................................................................................................................................ 25
5.1. Connexion à l’imprimante réseau...............................................................................................................25
5.2. Impression d’un document......................................................................................................................... 26
6. Annexes................................................................................................................................................................ 28
6.1. Explications sur la configuration utilisée.................................................................................................. 28
6.1.1. Options de GhostScript....................................................................................................................... 28
6.1.2. Rôle du fichier batch appelant GhostScript......................................................................................... 29
6.2. Table de codes ASCII...................................................................................................................................32
Document pour la Communauté Urbaine du Grand Nancy.
Page 2 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
1. Présentation du projet
Ce projet est né suite à une demande croissante des utilisateurs du réseau qui souhaitaient pouvoir convertir de
manière simple et rapide tout type de documents au format PDF.
Note : Le format PDF (Portable Document Format) constitue une norme mondiale pour la transmission et
l’échange de documents numériques. Le format PDF a été conçu par la société ADOBE. Le format PDF est
ouvert, il n’est pas nécessaire d’utiliser le logiciel payant Adobe Acrobat pour la création de fichiers PDF car
certaines entreprises ou personnes ont développé des systèmes, des programmes et des méthodes
permettant de créer du PDF gratuitement.
La solution retenue se présente sous la forme d’une imprimante virtuelle sur le serveur d’impression qui se charge
de manière entièrement automatisée de la conversion. Elle a l’avantage de n’utiliser que des programmes « libres »
(gratuits). Dès la fin de la conversion, celle-ci dépose le document sur le serveur de fichier sur lequel les utilisateurs
ont un accès réseau.
Voici un diagramme explicatif :
CLIENT
SERVEUR D’IMPRESSION
SERVEUR DE FICHIERS
Connexion
à l’imprimante virtuelle.
Envoi d’un document sur
l’imprimante.
Génération du fichier
PostScript.
(Driver Adobe PostScript)
Redirection du port.
(RedMon RPTx:)
Attente
du client
Message d’information au
client pour le démarrage.
Conversion PostScript
vers PDF.
(GhostScript + pdfwrite.rsp)
Déplacement du document
sur le serveur de fichiers.
Tâche planifiée.
Message d’information
au client lui indiquant
le nom et la localisation
de son fichier généré.
Récupération du
document.
Document pour la Communauté Urbaine du Grand Nancy.
Suppression des
documents.
Stockage
des documents générés.
Page 3 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
2. Présentation des logiciels utilisés
DRIVERS ADOBE D’IMPRIMANTE POSTSCRIPT POUR WINDOWS 1.0.6 :
http://www.adobe.com/support/downloads/product.jsp?product=44&platform=win
-
Ils sont nécessaires à l’installation de l’imprimante virtuelle, ce programme a besoin du fichier de description
PostScript disponible ci-dessous afin de configurer une imprimante PostScript avec le driver Acrobat Distiller.
DESCRIPTION POSTSCRIPT ADOBE (ACROBAT DISTILLER) :
http://www.adobe.com/support/downloads/detail.jsp?ftpID=204
-
Fichiers de description du driver Acrobat Distiller nécessaires à l’installation de l’imprimante PostScript.
REDMON 1.7 :
http://www.cs.wisc.edu/~ghost/redmon/index.htm
-
Utilitaire de redirection du port d’impression. Il sert à appeler un programme tel que GhostScript pour lui fournir le
document PostScript.
GHOSTSCRIPT 8.14 :
http://www.cs.wisc.edu/~ghost/
-
Utilitaire de conversion de documents PostScript en PDF. La clé de voûte du projet.
ADOBE ACROBAT READER 6.0 :
http://www.adobe.fr/products/acrobat/readermain.html
-
Programme pour visionner les documents PDF.
UTILITAIRES « UNIXUTILS » :
http://unxutils.sourceforge.net/
-
Ensemble d’utilitaires Unix portés sous la plate-forme Windows.
Le projet nécessite « echo », « gawk », « sed » et « md5sum ».
UTILITAIRE « SCOPY » :
Ressource Kit Windows NT4.0 et supérieur.
-
Programme permettant de copier un fichier sur un volume en conservant ses paramètres de sécurité.
RÉSUMÉ ET LIENS DIRECTS VERS LES FICHIERS :
Les informations résumées dans ce tableau sont données à titre indicatif et sont susceptibles d'évoluer au fil des
nouvelles versions des logiciels.
Logiciel
Lien et nom de fichier
Drivers Adobe PostScript 1.0.6 http://www.adobe.com/support/downloads/detail.jsp?ftpID=1503 (winstfre.exe)
Description PostScript Adobe
http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=204&fileID=204 (adobe.zip)
RedMon 1.7
ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/ghostgum/redmon17.zip (redmon17fr.zip)
GhostScript 8.14
http://prdownloads.sourceforge.net/ghostscript/gs814w32.exe (gs814w32.exe)
Adobe Acrobat Reader 6.0
http://www.adobe.fr/products/acrobat/readstep2.html (AdbeRdr60_fra_full.exe)
Utilitaires « UnixUtils »
http://unxutils.sourceforge.net/UnxUtils.zip (UnxUtils.zip)
Utilitaire « Scopy »
Ressource Kit Windows NT4.0 et supérieur. (Scopy.exe)
Document pour la Communauté Urbaine du Grand Nancy.
Taille
Date
7,5 Mo 23/05/02
32 Ko 02/04/02
595 Ko 11/07/03
7 Mo 20/02/04
17,9 Mo
?
3,2 Mo 14/04/03
23 Ko
?
Page 4 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
3. Configuration du serveur d’impression
3.1. Préparation à l’installation des logiciels
Une fois les logiciels téléchargés, créez un répertoire d:\pdfconverter sur le serveur d’impression. Tous
les programmes seront centralisés dans ce répertoire.
Créez un répertoire d:\pdfconverter\Adobe\.
Décompressez le fichier adobe.zip (Adobe PostScript Document) vers celui-ci.
Créez un répertoire d:\pdfconverter\unixutils\.
Décompressez le contenu du répertoire \usr\local\wbin\ (de nombreux .exe) du fichier UnxUtils.zip
vers celui-ci.
Créez un répertoire d:\pdfconverter\redmon17f\.
Décompressez le contenu du fichier redmon17fr.zip vers celui-ci.
Copiez « Scopy.exe » dans le répertoire d:\pdfconverter\.
Créez un répertoire d:\tmp\.
Il sera destiné à accueillir les fichiers PDF générés avant leur traitement et déplacement.
3.2. Installation des logiciels
3.2.1. Adobe PostScript Driver
Lancez l’exécutable « winstfre.exe ». Le programme d’installation se charge.
Écran de lancement de Adobe PostScript Driver.
Document pour la Communauté Urbaine du Grand Nancy.
Page 5 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Choisissez « Connexion directe à l’ordinateur (imprimante locale) ».
Sélectionnez « FILE: Local Port »
Document pour la Communauté Urbaine du Grand Nancy.
Page 6 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Dans l’écran de sélection du modèle d’imprimante, cliquez sur « Parcourir… ».
Il faut aller chercher le driver PostScript Document qui se trouve dans d:\pdfconverter\Adobe\.
Sélectionnez l’imprimante « Acrobat Distiller ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 7 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Confirmez votre choix de l’imprimante « Acrobat Distiller » en cliquant sur « Suivant ».
Sélectionnez « Oui, cette imprimante est destinée à être partagée en réseau ».
Choisissez un nom de partage, « PPDFCONV » dans l’exemple.
Si vous êtes dans une configuration avec plusieurs domaines, donnez un nom qui rappelle à
la fois la fonction et le domaine associé à cette imprimante.
Sélectionnez « Windows 95 et Windows 98 », puis cliquez sur « Suivant ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 8 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Donnez un nom explicite à l’imprimante, ici « Conversion PDF » (en précisant si nécessaire le
domaine associé).
Sélectionnez « Non, je ne souhaite pas utiliser cette imprimante comme imprimante par défaut ».
Sélectionnez « Non, je ne souhaite pas imprimer une page de test ».
L’installation résume vos choix, si tout est bon, vous pouvez cliquer sur « Installer ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 9 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
3.2.2. Redmon
L’utilitaire Redmon est très simple à installer.
Lancez d:\pdfconverter\redmon17fr\setup.exe.
Un message de confirmation s’affiche, acquiescez.
L’installation est terminée.
3.2.3. Utilitaires « UnixUtils »
Les « UnixUtils » ne nécessitent pas d’installation particulière après leur décompression, toutefois, vous
pouvez supprimer les exécutables qui ne serviront pas pour l’installation de l’imprimante virtuelle PDF.
Je rappelle que les logiciels nécessaires sont : « echo », « gawk », « sed » et « md5sum ».
3.2.4. GhostScript
3.2.4.1. Batch d’exécution de la procédure
C’est le fichier qui sera appelé par RedMon pour la conversion, il gère à la fois :
o L’envoi de messages à l’utilisateur.
o La génération d’un nom de fichier temporaire pour le fichier généré.
o La génération du nom de fichier final en fonction de variables d’environnement de RedMon.
o La conversion du document PostScript que l’on envoie à GhostScript.
o La limitation des droits sur le fichier à son créateur.
o Le déplacement du document sur le serveur de fichier.
o L’effacement de fichiers temporaires.
On se propose de détailler son fonctionnement en annexe.
À l’aide du bloc-notes, vous allez créer le fichier batch « pdfprint.bat ».
Ce fichier devra être copié dans « d:\pdfconverter\ ».
Prenez garde à l’extension de ce fichier à son enregistrement. Pensez à désactiver l’option des
dossiers Windows qui masque l’extension pour éviter que le fichier n’ait l’extension « .bat.txt ». Le
fichier batch est reconnaissable à son icône à roue dentée.
Utilisation avec de multiples domaines :
Si votre configuration réseau utilise plusieurs domaines, vous devrez créer autant de fichiers batch
que de domaines car il faut attribuer des droits à l’utilisateur dans son domaine. Les points qui
diffèrent entre les fichiers sont mis en évidence ci-dessous.
Document pour la Communauté Urbaine du Grand Nancy.
Page 10 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Contenu du fichier « pdfprint.bat » :
@echo off
:: Fichier batch de gestion du convertisseur PostScript -> PDF (GhostScript).
::
:: On prévient l'utilisateur du démarrage de la conversion.
::
net send %REDMON_USER% "Bonjour ! Votre conversion au format PDF va commencer. L'operation peut prendre
quelques instants si le document est important et/ou contient de nombreuses images."
::
:: On génère un nom de fichier unique.
::
d:\pdfconverter\unixutils\echo -n "set PDFNAME=D:\\tmp\\" > d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "%REDMON_USER%". >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
echo.|time | d:\pdfconverter\unixutils\md5sum | d:\pdfconverter\unixutils\gawk "{print $1}" >>
d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
call d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
::
:: On génère le PDF
::
D:\pdfconverter\gs\gs8.14\bin\gswin32c.exe -sOutputFile=%PDFNAME% %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12
::
:: On génère le nom final.
::
d:\pdfconverter\unixutils\echo -n "set NEWPDF=(%REDMON_USER%)-" > d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "PDF-" >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "%REDMON_JOB%-(" >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "%REDMON_DOCNAME%" | d:\pdfconverter\unixutils\sed "s/http:\/\//http_/" |
d:\pdfconverter\unixutils\sed "s/[^-_a-zA-Z0-9\. ]/_/g" | d:\pdfconverter\unixutils\sed "s/ - */\)-\(/" |
d:\pdfconverter\unixutils\sed "s/ *$//" | d:\pdfconverter\unixutils\sed "s/ \+/_/g" >>
d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo ").pdf" >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
call d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
::
:: On renomme le fichier avec son nom final.
::
Ce paramètre
ren %PDFNAME% %NEWPDF%
change pour chaque
::
:: On donne les droits à cet utilisateur uniquement pour le domaine concerné.
fichier batch.
::
cacls d:\tmp\%NEWPDF% /E /G DOMAINCUGN\%REDMON_USER%:C
cacls d:\tmp\%NEWPDF% /E /R "Tout le monde"
::
:: On le déplace vers le(s) dossier(s) des PDF partagés sur le Commun du domaine.
::
d:\pdfconverter\scopy d:\tmp\%NEWPDF% \\Scugbur\PDF_Generes
del d:\tmp\%NEWPDF%
::
On peut copier le
:: On supprime le %REDMON_USER%.%REDMON_JOB%.bat.
::
fichier à plusieurs
del d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
emplacements si
::
nécessaire.
:: On prévient l'utilisateur de la fin de la conversion.
::
net send %REDMON_USER% "Votre fichier PDF a ete cree ! Nom : '%NEWPDF%' Emplacement : Dossier
'PDF_Generes' (disponible generalement dans le disque commun/echange M:). Merci de le recuperer des que
possible. Tous les fichiers PDF sont systematiquement effaces toutes les nuits. Merci et bonne journee !"
Les lignes commençant par « :: » sont des commentaires qui peuvent être omis lors de la reproduction du fichier.
Ces informations ne sont présentées ici que dans un souci de compréhension.
Attention : Plusieurs lignes se terminent par « | » (signe « pipe »). Vous ne devez pas ajouter de retour à la ligne
derrière ces signes.
Dans le document présenté, la ligne commençant par « d:\pdfconverter\unixutils\echo -n
"%REDMON_DOCNAME%" » est une seule et même commande qui est présentée ici sur trois lignes mais qui doit être
tapée d’un seul tenant dans le fichier batch.
Document pour la Communauté Urbaine du Grand Nancy.
Page 11 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
3.2.4.2. Installation.
Lancez le programme « gs814w32.exe ».
Le programme se décompresse automatiquement.
Sélectionnez le répertoire de destination « d:\dfconverter\gs » :
Document pour la Communauté Urbaine du Grand Nancy.
Page 12 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
L’installation se déroule et se termine en affichant le groupe de programme créé :
Vous pouvez fermer cette fenêtre, elle ne servira pas.
3.2.4.3. Script de paramétrage de GhostScript
Vous allez créer le fichier « pdfwrite.rsp ». C’est une sorte d’extension de la ligne de commande de
GhostScript. C’est l’utilitaire RedMon qui appelle ce fichier, il permet une gestion plus claire des
options de conversion.
Tout comme pour le fichier « pdfprint.bat », les options seront détaillées en annexe, on ne
s’attardera ici que sur trois options essentielles.
Note : Comme pour le fichier précédent, je vous invite à vérifier que l’extension est correcte après
l’édition du fichier.
Contenu du fichier « pdfwrite.rsp » :
-Id:\pdfconverter\gs\gs8.14\lib;d:\pdfconverter\gs\fonts
-sDEVICE=pdfwrite
-dPDFSETTINGS=/prepress
-dNOOUTERSAVE
-dCompatibilityLevel=1.4
-dAutoRotatePages=/PageByPage
-r300
-dNOPAUSE
-dSAFER
-l : Indique le chemin d’accès de GhostScript et de ces polices. Le chemin devra être le même à son
installation (cf. 3.2.4.3.).
-dCompatibilityLevel : Précise le niveau de compatibilité des documents PDF, ici 1.4 correspond à
Acrobat 5,x. C’est une compatibilité conseillée, pour Acrobat 6,x, choisissez 1.5.
-r : Permet d’indiquer la résolution lors de la conversion. Après différents tests, une résolution de
300ppp (points par pouce) semble être un juste compromis entre taille et qualité pour tout type de
documents.
Le fichier « pdfwrite.rsp » doit être copié dans « d:\pdfconverter\gs\ ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 13 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
3.3. Configuration de l’imprimante RedMon pour GhostScript
Sélectionnez le panneau des imprimantes s’il n’est déjà ouvert en y accédant via le menu démarrer ou le
panneau de configuration.
Faites un clic droit sur l’imprimante et faites « Propriétés ».
Cas d’une utilisation avec plusieurs domaines :
Si vous êtes dans une configuration à domaines
multiples, vous pouvez répéter la procédure qui suit
sur chaque imprimante que vous créerez avec le
programme d’installation du driver Adobe
PostScript (cf. 3.2.1.).
Créez simplement un nouveau port (RPT2:) pour un
nouveau domaine et appelez le fichier batch
correspondant lors de la configuration de celui-ci.
Vous pouvez remplir les champs « Commentaire » et « Emplacement » à votre guise.
Puis cliquez sur « Processeur d’impression ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 14 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Dans la fenêtre « Processeur d’impression », vérifiez que le type de données par défaut est « RAW ».
Cochez la case « Toujours spouler les types de données brutes (RAW) », validez.
Dans l’onglet « Ports », cliquez sur « Ajouter un port… ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 15 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Choisissez « Port redirigé »
puis cliquez sur « Nouveau port… ».
Entrez « RPT1: » si ce n’est pas déjà fait.
De retour dans l’onglet « Ports », vous pouvez constater que « RPT1: » demeure le seul port coché.
Cliquez sur le bouton « Configurer le port ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 16 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
En cliquant sur « Configurer le port », vous arrivez dans la configuration de RedMon.
Indiquez le chemin vers le fichier « pdfprint.bat », ici « D:\pdfconverter\gs\pdfprint.bat ».
Remplissez le champ des arguments comme illustré sur l’image.
« @d:\pdfconverter\gs\pdfwrite.rsp -c save pop -f -»
Remarquez que l’on indique le chemin vers le fichier « pdfwrite.rsp ».
Remarque importante : N’oubliez pas le tiret de fin, ce n’est pas une erreur, il sert à marquer la fin de
la balise -c (rôle expliqué en annexe).
Après avoir validé la fenêtre précédente, cliquez sur l’onglet « Planification ».
La capture d’écran se trouve à la page suivante.
Document pour la Communauté Urbaine du Grand Nancy.
Page 17 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Cochez « Commencer l’impression après que la dernière page ait été spoulée ».
Notez qu’il n’y a rien de particulier à modifier dans les onglets « Partage » et « Sécurité » à moins que vous
n’ayez des restrictions fines à appliquer sur cette imprimante.
Cliquez sur l’onglet « Paramètres du périphérique ».
La capture d’écran se trouve à la page suivante.
Document pour la Communauté Urbaine du Grand Nancy.
Page 18 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Vérifiez que le protocole de sortie est « ASCII ».
« Envoyer CTRL-D avant chaque tâche » doit être à « Non ».
« Envoyer CTRL-D après chaque tâche » doit être à « Oui ».
3.4. Configuration des paramètres par défaut de l’imprimante.
Faites un clic droit sur l’imprimante, sélectionnez « Valeurs par défaut du document ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 19 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Il n’y a rien de particulier à changer dans l’onglet « Mise en page ».
Cliquez sur l’onglet « Avancées ».
Fixez la « Résolution » à « 300dpi ». Notez que vous devriez mettre la même valeur que cette que vous
avez fixé dans le fichier de configuration « pdwrite.rsp » en 3.2.4.3.
Vérifiez que le « Format d’impression PostScript » est fixé à « Optimiser pour vitesse ».
Validez.
3.5. Suppression des fichiers nécessaires à l’installation.
Voici l’état final de l’installation si vous avez suivi la procédure précédente. Vous pouvez supprimer les
répertoires « Adobe » et « redmon17fr », ils ne seront plus nécessaires.
Document pour la Communauté Urbaine du Grand Nancy.
Page 20 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
4. Configuration du serveur de fichier.
4.1. Vérification des droits de la ressource de destination.
La ressource partagée doit disposer d’un compte « Tout le monde » ayant un accès « Modifier ». En effet, les
connexions anonymes héritent des droits du groupe « Tout le monde » lorsqu’elles tentent d’accéder à une
ressource.
Pour vérifier les permissions, faites un clic droit sur la ressource, cliquez sur « Propriétés », dans
l’onglet « Sécurité », cliquez sur « Permission ».
Si le groupe « Tout le monde » n’apparaît pas dans la liste. Cliquez sur « Ajouter », recherchez le
groupe et ajoutez le en prenant soin de choisir un type d’accès « Modifier ».
À propos de sécurité et de confidentialité :
On pourrait penser qu’une telle configuration permettrait à tous les utilisateurs de lire, copier,
imprimer ou supprimer les documents d’autrui.
Ces actes malveillants sont empêchés car lors de l’exécution du script « pdfprint.bat », on enlève les
droits « Tout le monde » et on rend le créateur seul utilisateur avec droits de son fichier (« cacls »
pour la gestion des droits en ligne de commande et « Scopy » pour conserver ces droits lors du
déplacement, cf. 3.2.4.1. et annexes).
4.2. Autoriser les accès anonymes sur la ressource.
4.2.1. Les accès anonymes ou « NullSession ».
Le projet s’est heurté à un problème de droits lors de la phase de copie du document généré vers le serveur
de fichier. En effet, lorsque le script est exécuté sur le serveur d’impression, il se lance via le compte « SYSTEM ».
Celui-ci n’a de droit que sur le poste où il est appelé. Il est impossible d’autoriser un compte « SYSTEM » d’un poste
sur des ressources distantes, par conséquent il a fallu trouver une alternative.
Document pour la Communauté Urbaine du Grand Nancy.
Page 21 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Lorsque le compte « SYSTEM » tente de se connecter à la ressource réseau, le poste distant appréhende la
connexion comme étant « anonyme ». Depuis NT4, les connexions anonymes sont systématiquement rejetées par
mesure de sécurité. Il reste toutefois la possibilité de désactiver cette protection, soit de manière totale, soit par nom
de ressource. C’est cette méthode plus sûre que nous allons utiliser ici.
4.2.2. Modification de la base de registre.
Cliquez sur « Démarrer », « Exécuter », tapez « regedit » puis validez.
Développez
« HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters »
La copie d’écran ci-dessous vous permet de repérer la clé à localiser. Un montage graphique a été
réalisé pour simplifier la représentation. Il se peut donc que votre présentation diffère légèrement.
Double cliquez sur « NullSessionShares » dans la fenêtre de droite.
La procédure qui suit devra être reproduite pour chaque ressource qui accueillera les fichiers
générés. Il faudra donc refaire la manipulation pour chaque serveur correspondant à un domaine et
ajouter autant de nom de ressources qu’il est nécessaire pour chacun d’entre eux.
Document pour la Communauté Urbaine du Grand Nancy.
Page 22 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Vous êtes sur le point de modifier une valeur binaire de la base de registre. Prenez garde à ne pas
faire de manipulation qui pourrait endommager la base, faites éventuellement une sauvegarde.
La première colonne donne le numéro du premier octet de la ligne. La seconde représente par ligne
de 8 octets et sous forme hexadécimale le nom des partages qui apparaissent « en clair » dans la
colonne de droite.
Vous allez devoir ajouter le nom de partage de la ressource sur laquelle on autorisera un accès en
NullSession. Il existe deux manières de procéder. Soit par ajout du nom directement dans la colonne
de droite, soit par ajout, octet par octet de ce nom en code hexadécimal (une table ASCII est fournie
en annexe).
Remarque importante : Chaque nom de ressource est séparé par un octet à la valeur « 00 », la fin
de la liste se termine par deux octets nuls (« 00 00 »). Si vous ajoutez un nom de ressource en
utilisant la troisième colonne (en tapant le nom en clair), prenez garde au point. Un octet nul est
représenté par un point dans la colonne de droite mais la réciproque n’est pas vraie. Si vous utilisez
le caractère point du clavier, vous obtiendrez le code correspondant en hexadécimal, soit « 2E » et
vous risquez d’avoir des problèmes.
Autre remarque : La casse (différenciation entre minuscules et majuscules) doit être respectée.
Ici, on autorise deux ressources pour les connexions anonymes : « COMCFG » et « DFS$ ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 23 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Ajoutez le nom de la ressource suivant l’une des deux méthodes exposée auparavant.
Nous choisissons d’ajouter ici une ressource intitulée « PDF_Generes ».
Remarquez les octets nuls qui séparent les noms des ressources et le double octet nul de fin.
4.3. Tâche planifiée de suppression des fichiers PDF.
4.3.1. Contenu du fichier batch.
Vous pouvez créer un fichier batch (« nettoyer.bat » par exemple) à appeler à intervalle régulier pour
supprimer les fichiers PDF laissés dans le dossier de partage, voici un exemple :
:: *******************************************
:: ** Efface tous les fichiers se trouvant **
:: ** dans le répertoire de partage des PDF **
:: ** suivant une tâche planifiée.
**
:: *******************************************
::
attrib -R -A -S -H D:\_chemin_du_repertoire_PDF_GENERES /S /D
:: On peut utiliser un utilitaire UniXUtils en plus
D:\unixutils\rm -rf P:\*
del /S /Q D:\_chemin_du_repertoire_PDF_GENERES\*.*
On enlève tous les attributs que le fichier pourrait posséder, on peut utiliser un utilitaire UnixUtils qui
détruira le fichier même s’il est en cours d’utilisation « rm -rf » ou plus simplement la commande
« del ».
4.3.2. Planification de la tâche.
Vous pouvez utiliser le planificateur de tâches de Windows NT4 (commande « AT ») ou tout autre
utilitaire pour appeler « nettoyer.bat » durant la nuit.
Document pour la Communauté Urbaine du Grand Nancy.
Page 24 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
5. Configuration du client.
5.1. Connexion à l’imprimante réseau.
Exemple de connexion sous Windows XP Professionnel :
Cliquez sur « Démarrer », « Exécuter », tapez « \\scugimp » qui est ici le serveur d’impression sur lequel
l’imprimante virtuelle a été installée.
Recherchez le nom de partage de l’imprimante, ici « PDFCONV », faites un clic droit puis « Connexion ».
L’imprimante est automatiquement ajoutée à vos autres imprimantes existantes. Vous pouvez l’utiliser
depuis n’importe quel logiciel dès que celui-ci vous permet de choisir votre périphérique d’impression. Si
ce n’est pas le cas, définissez cette imprimante comme étant par défaut (Clic droit sur celle-ci, « Définir
comme imprimante par défaut ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 25 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
5.2. Impression d’un document.
La transformation d’un document au format PDF se fait donc par « impression virtuelle ». L’exemple cidessous montre la boîte de dialogue de Microsoft Word.
Il suffit simplement de sélectionner le périphérique d’impression adéquat, il n’y a pas d’options
particulières à configurer, vous pouvez lancer « l’impression / conversion ».
Des messages sont envoyés pour informer l’utilisateur de l’avancement de la conversion.
Le message final indique à l’utilisateur le nom et l’emplacement de son fichier généré.
Document pour la Communauté Urbaine du Grand Nancy.
Page 26 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Vérification des droits du fichier généré. L’utilisateur qui a demandé la conversion reste seul maître de
son document généré. Tout acte malveillant est empêché.
Document pour la Communauté Urbaine du Grand Nancy.
Page 27 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
6. Annexes.
6.1. Explications sur la configuration utilisée.
6.1.1. Options de GhostScript.
-Id:\pdfconverter\gs\gs8.14\lib;d:\pdfconverter\gs\fonts
Indique le chemin d’accès à l’exécutable GhostScript et aux polices de caractères additionnelles. Cette
option ne serait plus nécessaire dans les dernières version de GhostScript mais on l’utilise ici par mesure de
sécurité.
-sDEVICE=pdfwrite
On spécifie que l’on souhaite utiliser le moteur « PDF » de GhostScript pour le traitement.
-dPDFSETTINGS=/prepress
Permet d’améliorer la qualité du document résultant.
-dNOOUTERSAVE
Option obligatoire de post-compatibilité avec les anciennes version de GhostScript.
-dCompatibilityLevel=1.4
Niveau de compatibilité des documents.
1.4 : Acrobat Reader 5.x
1.5 : Acrobat Reader 6.x
-dAutoRotatePages=/PageByPage
Gère la rotation de la « feuille » page par page.
-r300
Spécifie la résolution du document.
-dNOPAUSE
Évite certaines attentes clavier faites par GhostScript.
Ces attentes sont inutiles dans la mesure où GhostScript doit travailler en automatique.
-dSAFER
Cette option sert à améliorer la gestion de certains spoolers d’imprimante.
Document pour la Communauté Urbaine du Grand Nancy.
Page 28 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
6.1.2. Rôle du fichier batch appelant GhostScript.
Le déroulement du fichier batch « pdfconverter.bat » va être expliqué en utilisant un exemple, voici la situation
initiale :
Poste client : \\CU0576
Nom d’utilisateur : testeur
Nom du document envoyé par le logiciel : « Microsoft Word - Imprimante virtuelle PDF.doc »
Ces informations sont récupérées par RedMond dans des variables d’environnement avec d’autres qui donnent
des informations sur la configuration :
Nom de la variable
d’environnement
Description
Valeur dans l’exemple
%REDMON_USER%
Nom de l’utilisateur.
Testeur
%REDMON_DOCNAME%
Nom du document envoyé par le logiciel.
Microsoft Word - Imprimante virtuelle
PDF.doc
%REDMON_JOB%
Numéro de la tâche depuis le lancement
de RedMon.
12
%REDMON_PORT%
Port d’impression.
RPT1:
%REDMON_PRINTER%
Nom de l’imprimante.
Conversion PDF
%REDMON_MACHINE%
Chemin d’accès UNC de la machine.
\\CU0576
Génération d’une variable « %PDFNAME% » :
:: On génère un nom de fichier unique.
::
d:\pdfconverter\unixutils\echo -n "set PDFNAME=D:\\tmp\\" > d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "%REDMON_USER%". >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
echo.|time | d:\pdfconverter\unixutils\md5sum | d:\pdfconverter\unixutils\gawk "{print $1}" >>
d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
call d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
L’intérêt d’utiliser la commande « echo » d’Unix est de pouvoir utiliser l’option « -n » qui permet d’indiquer qu’on
ne souhaite pas de retour à la ligne après avoir envoyé l’information sur la sortie standard. Au sein du script, on
devra composer un nom de fichier unique et le nom de fichier final. La technique consiste à mettre « bout à bout »
les données puis à appeler la commande.
La première ligne va créer (ou écraser) (signe >) un fichier composé ainsi « NomUtilisateur.NumeroJob.bat ».
Dans notre exemple, cela donnera donc : « testeur.12.bat », on y écrit « set PDFNAME=D:\\tmp\\ ».
La seconde va ajouter (signe « >> » un contenu au fichier, ici « NomUtilisateur. ».
La troisième va générer une valeur numérique qui va dépendre de l’heure.
- « time » renvoie l’heure au centième de seconde près.
- « md5sum » va générer un code en fonction de l’information qu’on lui transmet.
- « gawk » ne va garder que la première partie du code envoyé par « md5sum » pour éviter toute incohérence
dans le nom du fichier.
Exemple simplifié :
-
« time » renvoie : « 16:12:30,28 »
« md5sum » va générer : « dsd4dq8454zd4dqd64dq <--* »
« gawk » va en retirer : « dsd4dq8454zd4dqd64dq »
Document pour la Communauté Urbaine du Grand Nancy.
Page 29 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Au final, « testeur.12.bat » contiendra : « set PDFNAME=D:\\tmp\testeur. dsd4dq8454zd4dqd64dq ».
« set » est une commande permettant de fixer des variables d’environnement et « call » permet d’appeler un
exécutable.
En appelant « testeur.12.bat », on obtient donc « %PDFNAME%=D:\\tmp\testeur.dsd4dq8454zd4dqd64dq ».
Conversion du document PostScript au format PDF :
:: On génère le PDF
::
D:\pdfconverter\gs\gs8.14\bin\gswin32c.exe -sOutputFile=%PDFNAME% %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12
On appelle la conversion, en précisant le nom du fichier de sortie via « -sOutputFile » où l’on retrouve le nom de
fichier généré auparavant. Les variables %1, %2... sont les arguments passés au script via la configuration du port
RedMon et le fichier « pdfwrite.rsp », voilà leur contenu :
%1
%2
%3
%4
%5
%6
%7
%8
%9
%10
%11
%12
save
pop
-f
-Id:\pdfconverter\gs\gs8.14\lib;d:\pdfconverter\gs\fonts
-sDEVICE=pdfwrite
-dPDFSETTINGS=/prepress
-dNOOUTERSAVE
-dCompatibilityLevel=1.4
-dAutoRotatePages=/PageByPage
-r300
-dNOPAUSE
-dSAFER
Le détail de ces options a été vu précédemment.
Génération de la variable « %NEWPDF% » :
:: On génère le nom final.
::
d:\pdfconverter\unixutils\echo -n "set NEWPDF=(%REDMON_USER%)-" > d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "PDF-" >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "%REDMON_JOB%-(" >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo -n "%REDMON_DOCNAME%" | d:\pdfconverter\unixutils\sed "s/http:\/\//http_/" |
d:\pdfconverter\unixutils\sed "s/[^-_a-zA-Z0-9\. ]/_/g" | d:\pdfconverter\unixutils\sed "s/ - */\)-\(/" |
d:\pdfconverter\unixutils\sed "s/ *$//" | d:\pdfconverter\unixutils\sed "s/ \+/_/g" >>
d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
d:\pdfconverter\unixutils\echo ").pdf" >> d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
call d:\tmp\%REDMON_USER%.%REDMON_JOB%.bat
C’est sans doute la partie la plus difficile à appréhender car elle demande d’avoir des connaissances en expressions
rationnelles (« regular expressions »). Regardons tout d’abord la forme globale que devrait avoir cette variable :
(%REDMON_USER%)-PDF-%REDMON_JOB%-(%REDMON_DOCNAME%).pdf
Nous allons prendre notre exemple pour voir comment le nom du document est traité pas à pas.
Pour comprendre comment les expressions rationnelles permettent de modeler le nom du document, voici
quelques explications sur la commande « sed ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 30 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
La commande « sed » (« stream editor ») :
Pour appliquer des expressions rationnelles, on utilise la commande « sed » (« stream editor »).
Détail d’une commande « sed » :
(Remarquez que chacune des partie de la commande est séparée par une barre oblique « / »).
sed
"s
On utilise le mode
« substitution ».
/
[^-_a-zA-Z0-9\. ]
/
On spécifie les
motifs à rechercher.
_
/
Caractère(s) de
remplacement.
g"
Mode « exclusion »
appliqué.
L’expression entre crochets indique que l’on recherche un motif.
Le signe « ^ » signifie que l’on doit trouver le motif « en début de chaîne ».
« - » et « _ » permettent de chercher les motifs correspondants.
« a-z » est un motif qui représente « toutes les lettres minuscules de l’alphabet ».
« A-Z » est son équivalent pour les majuscules.
« 0-9 » permet de détecter tout nombre.
« \. » est la recherche du point. Ce caractère est « échappé » car il a une signification particulière dans un
motif.
En mode « normal » (opposé ici au mode « exclusion »), toutes les chaînes correspondant au motif sont
remplacées par le(s) caractère(s) de remplacement. Ici, c’est le contraire, tout ce qui n’est pas trouvé dans le motif
est remplacé par le(s) caractère(s).
Cette commande sert donc à remplacer tous les caractères spéciaux qui ne doivent pas apparaître dans le nom
d’un fichier tels que « < > / \ : ‘’ ? * ». Les accents sont également concernés, la commande ne supportant pas ces
caractères.
Dans notre exemple, elle n’a donc pas d’influence, mais elle devient obligatoire lorsque l’on souhaite « imprimer »
(convertir) une page Web.
« http://forum.hardware.fr/forum2.php3?post=101&cat=13&config=hardwarefr.inc&page=613 »
sera remplacé par :
« http___forum.hardware.fr_forum2.php3_post_101_cat_13_config_hardwarefr.inc_page_613 »
Une expression rationnelle est dédiée à simplifier
légèrement cette écriture en « http_ ».
Voilà un exemple de traitement complet :
Expression rationnelle
appliquée
Avant traitement.
"s/http:\/\//http_/"
"s/[^-_a-zA-Z0-9\. ]/_/g"
"s/ - */\)-\(/"
"s/ *$//"
Explication du
traitement
Avant traitement.
Microsoft Word - Imprimante virtuelle PDF.doc
« http:// » → « http_ »
Microsoft Word - Imprimante virtuelle PDF.doc
Voir ci-dessus.
Microsoft Word - Imprimante virtuelle PDF.doc
« - » → « )-( »
Supprime les espaces en
fin de chaîne.
Microsoft Word)-(Imprimante virtuelle PDF.doc
Nom du document résultant
Microsoft Word)-(Imprimante virtuelle PDF.doc
Quelques caractères spéciaux expliqués :
« * » cherche « une ou plusieurs fois le motif ».
« $ » cherche « en fin de chaîne ».
Document pour la Communauté Urbaine du Grand Nancy.
Page 31 sur 32
MISE EN PLACE D’UNE IMPRIMANTE VIRTUELLE DESTINÉE À LA CONVERSION DE DOCUMENTS AU FORMAT PDF.
Nom de fichier final :
Dans notre exemple, le nom de fichier qu’on obtient au final sera :
(Testeur)-PDF-12-(Microsoft_Word)-(Imprimante_virtuelle_PDF.doc)
Application de droits au fichier :
:: On donne les droits à cet utilisateur uniquement pour le domaine concerné.
::
cacls d:\tmp\%NEWPDF% /E /G DOMAINCUGN\%REDMON_USER%:C
cacls d:\tmp\%NEWPDF% /E /R "Tout le monde"
« cacls » est une commande qui permet de fixer des droits à un fichier.
« /E » signifie « éditer », sinon, on écrase les paramètres de sécurité et une demande de confirmation est
requise.
« /G » permet d’indiquer l’utilisateur ou le groupe suivi des autorisations qu’on lui accorde.
« :C » représente l’autorisation « modifier ».
« /R » signifie « enlever » (« Remove ») un groupe ou un utilisateur.
6.2. Table de codes ASCII.
Document pour la Communauté Urbaine du Grand Nancy.
Page 32 sur 32