Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : Imprimer du PDF avec Ghostscript 8
(Article écrit par Jean-Yves Auger - avril 2004)
|
|
Avec Ghostscript 6.50, APDF décodait très mal les PDF et leur impression fonctionnait rarement. Mais cela
a changé avec la version 8 de Ghostscript qui sait décoder les PDF (plus d'exception) et les imprime (c'est rapide en plus).
Attention tout de même car Ghostscript 8 vient avec son lot de surprises : il n'y a pas d'installation (tout se fait à la main),
il n'y a aucune explication claire (comme d'habitude) ce qui engendrera des heures de réglages.
L'installation
Allez sur le site www.whoosh777.pwp.blueyonder.co.uk
et prenez les archives du programme (gs813release020fpu.lha ou gs813release020nofpu.lha selon si vous avez ou non une FPU),
les bibliothèques (gs813lib.lha), les polices de caractères (gs813fonts.lha), les ressources (gs813resource.lha) et la documentation
(gs813doc.lha - facultative).
Créez ensuite un répertoire (GS813) et décompressez-y toutes les archives. Faites enfin des assignations comme suit :
assign GS813: "HD1:gs813"
assign GS8Data: "HD1:gs813/lib"
assign GS8Fonts: "HD1:gs813/fonts"
assign GS813Resource: "HD1:gs813/resource"
Note : HD1: est un exemple ici, adaptez le nom en fonction de votre configuration.
Redémarrez et c'est tout.
L'impression
Créez un fichier PDF puis tapez la ligne suivante sous un CLI :
set print 1
set window 0
stack 200000
GS813:bin/gs -sDEVICE=tp8 -g2480x3366 -r300 -dFirstPage=001 -dLastPage=999 -dBATCH -dNOPAUSE -q nom_du_fichier_PDF
|
Les chiffres 2480 et 3366 expriment la taille d'une page A4 en 300 DPI (bonne qualité d'impression) sur une imprimante HP Lj 5L,
si vous voulez ajuster selon votre imprimante voici la base du calcul :
Largeur : 21 cm / 2,54 pouces x 300 DPI = 2480.
Longueur : 28,5 cm / 2,54 pouces x 300 DPI = 3366 (c'est un peu moins haut qu'une page A4 à cause du type d'imprimante :
HP LJ 5L avec 1,6 cm de marge obligatoire en haut).
Pour augmenter la qualité, changer le 300 par 600.
Une fois la ligne de commande entrée, vous aurez, après quelques secondes, l'impression de toutes les pages.
La visualisation
La ligne de commande change :
set print 0
set window 1
stack 200000
GS813:bin/gs -sDEVICE=whoosh24 -r72 -dFirstPage=001 -dLastPage=999 -dBATCH -dNOPAUSE -q et le nom du fichier PDF
|
Toutes ces manipulations sont contournables par un programme avec GUI en ARexx : GS8Gui,
mais il faudra tout de même Ghostscript 8.x (logique), MUI (indispendable) et RxMui (utile pour plein de raisons, surtout
celle de ne plus taper une commande à la main ou presque).
Tout ceci est en ARexx, vous n'aurez pas de mal à transposer la ligne de commande pour imprimer depuis DOpus,
Final Writer, PageStream ou tous les programmes ARexx en fait.
Voici un exemple RXMui (PDFPrint.rexx) pour imprimer depuis un gestionnaire de fichier (DOpus, Filemaster, etc.),
il suffit de taper à la main ou via un programme : "rxs PDFPrint + nom du fichier PDF".
/********************************************/
/* $VER: PDF printer via Ghostscript 8, version 1.0
- www.Pixel-Art.fr.st */
parse arg global.source
l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
if AddLibrary("rxmui.library")~=0 then exit
call CreateApp
call HandleApp
/* never reached */
/******************************************/
HandleApp: procedure expose global.
ctrl_c=2**12
do forever
call NewHandle("app","h",ctrl_c)
if and(h.signals,ctrl_c)>0 then exit
select
when h.event="QUIT" then exit
otherwise interpret h.event
end
end
/* never reached */
/******************************************/
CreateApp: procedure expose global.
app.Title="PopaslExample"
app.Base="usb"
app.SubWindow="win"
win.ID="MAIN"
win.Title="PDF Printer"
win.Contents="MGROUP"
mgroup.0="ctrlg"
ctrlg.class="group"
ctrlg.frame="group"
ctrlg.Columns=1
mgroup.0="popf"
popf.class="group"
popf.0=Button("texte","Cliquez ici pour lancer l'impression")
res=NewObj("APPLICATION","APP")
call set("win","open",1)
call Notify("win","CloseRequest",1,"app","ReturnID","quit")
call Notify("texte","pressed","0","app","return","call PDF()")
return
/******************************************/
PDF: procedure expose global.
call set("texte","contents","En cours...")
Open(fiche,"T:Tmp",'Write')
WriteLN(fiche,"SET print 1")
WriteLN(fiche,"SET window 0")
WriteLN(fiche,"stack 200000")
WriteLN(fiche,"GS813:bin/gs -sDEVICE=tp8 -g2480x3366 -r300
-dFirstPage=001 -dLastPage=999 -dBATCH -dNOPAUSE -q "||global.source)
Close(fiche)
address command 'Execute T:Tmp'
call set("texte","contents","Impression en cours")
exit
return
/******************************************/
|
|