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