Je voudrais donc append un “pied de page” (une atsortingbution) au bas de chaque page d’un fichier pdf que je génère via postscript avec groff sous linux. Je convertis le fichier de ps en pdf moi-même, avec l’outil ps2pdf, j’ai donc access aux deux formats.
Ces deux messages ont été quelque peu utiles:
Comment append des numéros de page à Postscript / PDF
Comment puis-je créer un texte de superposition de programme sur un fichier postscript?
Je ne suis pas contre l’utilisation de la première méthode, mais je n’ai pas access à l’utilitaire pdflatex
mentionné dans le premier script, et je n’ai pas non plus la possibilité de l’installer sur la machine qui doit faire le travail.
Il semble que la deuxième méthode puisse fonctionner, mais j’ai installé la version 8.15 de ghostscript et je n’ai pas vu beaucoup des indicateurs répertoriés sur la page de manuel ( http://unix.browserdebug.com/man/gs/ ). Je pense avoir access au drapeau “-c” pour insérer du code PostScript, même s’il ne figure pas dans la liste. En tout cas, voici deux commandes que j’ai essayées sans succès:
gs -o output.pdf -sDEVICE = pdfwrite -g5030x5320 \ -c "/ Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (chaîne de test) show" \ -f entrée.ps
ça me donne ça:
Switch inconnu -o - en ignorant ESP Ghostscript 815.02 (2006-04-19) Copyright (C) 2004 artofcode LLC, Benicia, CA. Tous les droits sont réservés. Ce logiciel est fourni SANS GARANTIE: consultez le fichier PUBLIC pour plus de détails. ERREUR: / undefinedfilename dans (output.pdf) Pile d'opérande: Pile d'exécution: % interp_exit .runexec2 --nossortingngval-- --nossortingngval-- --nossortingngval-- 2% stoppé_push --nossortingngval-- --nossortingngval-- --nossortingngval-- false 1% stoppé_push Pile de dictionnaire: --dict: 1117/1686 (ro) (G) - --dict: 0/20 (G) - --dict: 102/200 (L) - Le mode d'allocation actuel est local Dernière erreur du système d'exploitation: 2 ESP Ghostscript 815.02: erreur irrécupérable, code de sortie 1
Donc, évidemment, le drapeau -o a un problème et j’ai donc fait quelques recherches et essayé cette syntaxe:
gs -sOUTPUTFILE = output.pdf -sDEVICE = pdfwrite -g5030x5320 \ -c "/ Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (chaîne de test) show" \ -f entrée.ps
qui génère ceci et me fait retourner 4 fois (il y a peut-être 4 pages dans input.ps)
ESP Ghostscript 815.02 (2006-04-19) Copyright (C) 2004 artofcode LLC, Benicia, CA. Tous les droits sont réservés. Ce logiciel est fourni SANS GARANTIE: consultez le fichier PUBLIC pour plus de détails. Impossible de trouver (ou ne peut pas ouvrir) le fichier de police /usr/share/ghostscript/8.15/Resource/Font/Helvetica-Italic. Impossible de trouver (ou ne peut pas ouvrir) le fichier de police Helvetica-Italic. Interrogation du système d'exploitation pour les fichiers de fonts ... Vous n'avez pas trouvé cette police sur le système! Substituant la police Helvetica-Oblique pour Helvetica-Italic. Chargement de la police NimbusSanL-ReguItal à partir de /usr/share/fonts/default/Type1/n019023l.pfb ... 3742416 2168114 2083056 759694 1 terminé. Chargement de la police NimbusRomNo9L-ReguItal à partir de /usr/share/fonts/default/Type1/n021023l.pfb ... 3781760 2362033 2365632 1015713 1 terminé. Chargement de la police NimbusRomNo9L-Medi à partir de /usr/share/fonts/default/Type1/n021004l.pfb ... 3865136 2547267 2365632 1029818 1 terminé. Chargement de la police NimbusRomNo9L-Regu à partir de /usr/share/fonts/default/Type1/n021003l.pfb ... 4089592 2759001 2365632 1032885 1 terminé. Utilisation de la police NimbusRomanNo9L-Regu pour NimbusRomNo9L-Regu. >> showpage, appuyez sur pour continuer <> showpage, appuyez sur pour continuer <> showpage, appuyez sur pour continuer <> showpage, appuyez sur pour continuer <<
Donc, il semble que ce serait assez simple d’utiliser gs
pour simplement insérer quelque chose dans un fichier ps, mais cela s’avère assez compliqué …
ESP Ghostscript est Oooo-vieux . Ne l’utilisez plus à moins que vous ne puissiez absolument pas l’éviter. C’était un fork du Ghostscript original utilisé par CUPS pendant un certain temps. (Et après quelques problèmes entre développeurs résolus, les versions plus récentes de CUPS utilisent maintenant à nouveau la GPL Ghostscript …)
Les versions les plus récentes de GPL Ghostscript sont disponibles ici: http://www.ghostscript.com/releases/
De plus, -o out.pdf
n’est qu’un raccourci pour -dBATCH -dNOPAUSE -sOutputFile=outpdf
. Donc, vous devriez essayer ceci. (La partie -dNOPAUSE
vous -dNOPAUSE
de bash
pour chaque avance de page ….).
Enfin, n’attendez pas la totalité de la documentation fournie par une page de man gs
tierce . Reportez-vous plutôt à la documentation originale de Ghostscript pour la version que vous utilisez, les parties les plus importantes étant:
Mise à jour: Ghostscript a été déplacé vers Git (au lieu de Subversion) pour leur référentiel de code source. Les liens suivants ont donc été modifiés à plusieurs resockets:
Dans votre fichier PostScript, vous pouvez utiliser un compteur de pages et redéfinir showpage pour l’afficher dans le pied de page. Voici un exemple de programme:
4 dict begin /showpage_org /showpage load def % you'll need this later! /page_num 0 def /page_str 3 ssortingng def % Page numbers -99 to 999 supported, error if > 3 char /showpage % with page number footer { gsave /Courier findfont 10 scalefont setfont % Set the font for the footer /page_num page_num 1 add def % increment page number counter 10 10 moveto (Page ) show page_num page_str cvs show % convert page number integer to a ssortingng and show it grestore showpage_org % use the original showpage } def %Page 1 /Courier findfont 22 scalefont setfont 100 500 moveto (Hello) show showpage %Page 2 100 500 moveto (World) show showpage end
L’emplacement le plus logique pour append des pieds de page se trouve dans la source groff
. La manière exacte de procéder dépendra bien sûr du package de macros que vous utilisez. Pour -ms
, vous pouvez faire:
.ds RF "Page \\n(PN
pour append le numéro de page comme pied de page droit. Pour -mm
, ça ressemble plus à:
.PF "'''Page \\\\nP'"
où les guillemets simples délimitent la partie “centre gauche” de la partie droite du pied de page.