[gull] pdfnup en a3

Félix Hauri felix at f-hauri.ch
Mon Nov 30 16:18:53 CET 2009


Bon, ça y est...

On Thu, Nov 26, 2009 at 12:18:41PM +0100, François wrote:
> Bonjour,
>
> J'ai un document composées de pages A4 dont je veux faire un livret A3.
> Mais pdfnup ne semble pas reconnaitre ce format :
> <<
> pdfnup --nup 2x1 --pages "4,1,2,3" --paper a3paper --outfile imp.pdf in.pdf
> >>
> me donne un document en letter....
>
> J'ai chercher un peu sur le net, mais rien trouvé.
> La page man de pdfnup indique qu'il faut une taille de papier "latex",  
Intéressant: pdfnup est un wrapper qui utilise LaTeX pour le job...
(je ne connaissais pas, utilise depuis 10 ans psutils:
  http://www.f-hauri.ch/ImpressionSousLinux/#5.3 
 et n'ai pas d'imprimante a3 ;-)

> mais je ne suis pas un spécialiste de ce programme. Il y a-t-il un  
> extension latex à installer pour utiliser le A3,
Oui, mais je vais éviter de toucher à pdfnup que je ne connais pas...

> ou pdfnup ne reconnait-il pas le A3.
En fait pdfnup utilise ``article.cls'' qui ne connait pas a3 et plus.
Par contre il utilise /var/tmp pour travailler et... LaTeX utilise
le repertoire courant prioritairement pour charger ses classes.
Il n'y a donc qu'à placer un ``article.cls'' modifié dans /var/tmp
avant de lancer pdfnup...

J'ai créé un mini wrapper à qui récupère le article.cls pour
le copier dans /var/tmp et le patcher avant de lancer pdfnup.

Cela fontionne avec un fichier de 136pages (VzLinuxReference)
sans problème, pour moi:

D'abord, mon wrapper:

---- pdfnup_a3_wrapper.sh ----
#!/bin/bash

locate /usr/share/*texmf*/article.cls |
    xargs cp -vt /var/tmp/

patch -p 0 <<end-of-patch
--- /var/tmp/article.cls
+++ /var/tmp/article.cls
@@ -60,6 +60,9 @@
 \newif\if at titlepage
 \@titlepagefalse
 \if at compatibility\else
+\DeclareOption{a3paper}
+   {\setlength\paperheight {420mm}%
+    \setlength\paperwidth  {297mm}}
 \DeclareOption{a4paper}
    {\setlength\paperheight {297mm}%
     \setlength\paperwidth  {210mm}}
end-of-patch

pdfnup $@

rm /var/tmp/article.cls

---- pdfnup_a3_wrapper.sh ----

Et voici comment j'ai transformé mon pdf de 136 pages en 34 feuilles A3:
(A noter que, par hasard, mon nombre de pages est divisible par 4...
 Je ne garanti pas l'effet de cette astuce sur un autre fichier;)

$ pages=$(
  pdfinfo VzLinuxReference.pdf |
      awk '/Pages:/ {tot=$2;
                     fle=int(tot/4.0);
                     if (fle*4<tot) {fle++};
                     for (i=0;i<fle;i++) {
                         printf "%d,%d,%d,%d,",tot-i*2,i*2+1,i*2+2,tot-i*2-1
                     }}' | sed s/,$//
     )
$ ./pdfnup_a3_wrapper.sh --paper a3paper --orient landscape --nup 2x1 \
    --pages "$pages" --outfile VzLinuxReference-2.pdf VzLinuxReference.pdf 


$ pdfinfo VzLinuxReference-2.pdf 
Creator:        TeX
Producer:       pdfTeX-1.40.3
CreationDate:   Mon Nov 30 16:01:59 2009
ModDate:        Mon Nov 30 16:01:59 2009
Tagged:         no
Pages:          68
Encrypted:      no
Page size:      1190.55 x 841.89 pts
File size:      699507 bytes
Optimized:      no
PDF version:    1.4


-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list