Imposition de PDF (pdfpages)

Le paquet pdfpages (par Andreas Matthias) insère directement dans le document en cours de composition des pages provenant d’un PDF *existant*. Ajouter une couverture ou un formulaire signé, assembler plusieurs PDF en une seule thèse, disposer des diapositives en 2×2 pour un polycopié — tout cela sans les débordements de marges que provoque souvent un simple \includegraphics. Tout tourne autour d’une seule commande : \includepdf[⟨options⟩]{file.pdf}.

Utilisation de base

Chargez \usepackage{pdfpages} dans le préambule, puis appelez \includepdf dans le corps du document. Le plus petit exemple est ci-dessous ; il insère toutes les pages de cover.pdf, chacune agrandie ou réduite pour remplir la feuille sans marge autour. Le nom de fichier passé en argument ne doit pas contenir d’espaces.

document.tex
\documentclass{article}
\usepackage{pdfpages}
\begin{document}

% 本文…
\includepdf[pages=-]{cover.pdf}
% …続きの本文

\end{document}

En interne, \includepdf appelle \includegraphics du paquet graphicx ; toute option que pdfpages n’interprète pas lui-même (trim, clip, scale, etc., voir plus bas) est donc transmise telle quelle à \includegraphics. Par défaut, chaque page est redimensionnée automatiquement pour tenir sur la feuille.

Le manuel officiel (v0.6g) liste comme moteurs pris en charge pdfTeX, VTeX, XeTeX, LuaTeX et pTeX ; le paquet fonctionne donc avec pdfLaTeX, LuaLaTeX, XeLaTeX et (up)pLaTeX. Il suppose toutefois un moteur qui écrit directement du PDF : dans une chaîne qui produit du DVI, le PDF ne peut pas être importé et pdfpages insère des pages blanches à la place. La configuration pLaTeX + dvipdfmx courante pour le japonais doit donc sélectionner correctement le pilote dvipdfmx (section suivante).

Choisir les pages à insérer (pages)

L’option la plus importante est pages. Elle prend une liste séparée par des virgules qui indique les pages à insérer et leur ordre. Sa valeur par défaut est pages=1 (la première page seulement) ; il faut donc la définir dès que vous voulez davantage de pages.

ÉcritureEffetPages insérées
pages=-Toutes les pages, dans l’ordreToutes les pages du PDF inséré
pages={1,3,5}Seulement les pages listéesPages 1, 3 et 5
pages={2-8}Un intervallePages 2 à 8
pages={3,{},15}Une page blanche avec {}Page 3, une page blanche, puis page 15
pages=last-1Ordre inverseDe la dernière page à la première (last = dernière page)
pages={1-3,5,{},7}CombinerUn intervalle, des pages isolées et une page blanche

Un intervalle s’écrit ⟨m⟩-⟨n⟩. Omettre m signifie la première page ; omettre n signifie la dernière. Ainsi pages=- se lit « de la première à la dernière », donc toutes les pages. La dernière page peut aussi être désignée par le mot-clé last (uniquement dans un intervalle). Une page blanche est simplement un {} vide — pratique pour glisser une feuille blanche entre une couverture et le corps.

latex
% 表紙の次に白ページ、そのあと本文 1–20 ページ
\includepdf[pages={1,{},2-21}]{thesis-cover.pdf}

% 全ページを逆順で
\includepdf[pages=last-1]{scan.pdf}

Les principales options

Toutes les options utilisent la forme ⟨key⟩=⟨value⟩ et se placent, séparées par des virgules, entre les crochets de \includepdf. Pour les options booléennes (comme frame), omettre la valeur signifie « vrai ». Les plus utilisées sont :

OptionEffet (par défaut)À utiliser pour
nupPlacer plusieurs pages sur une feuille (n-up). nup=2x2 = 2 en largeur × 2 en hauteur. Par défaut 1x1Polycopiés, impression réduite
frameTracer un cadre autour de chaque page (par défaut false)Afficher le bord de chaque page
deltaÉcart entre les pages juxtaposées. delta=⟨x⟩ ⟨y⟩ (par défaut 0 0)Espacer les pages en n-up
landscapeTourner la feuille de 90° en paysage (par défaut false)PDF larges, livrets
scaleFacteur d’échelle ; transmis à graphicx (à utiliser avec noautoscale)Fixer la taille soi-même
fitpaperAdapter le papier de sortie à la taille du PDF inséré (par défaut false)Conserver le format d’origine
offsetDécaler la position de la page. offset=⟨x⟩ ⟨y⟩ (par défaut 0 0)Ajuster pour la reliure
pagecommandCode exécuté sur chaque page insérée (par défaut \thispagestyle{empty})Ajouter numéros de page / en-têtes
link / linknameFaire des pages insérées une cible de lien / en changer le nom (par défaut false)Rendre les pages cliquables

nup (imposition n-up) dispose plusieurs pages logiques sur une seule feuille. La syntaxe est nup=⟨across⟩x⟨down⟩. Par défaut, les pages se remplissent ligne par ligne ; ajoutez column pour un ordre par colonnes, et columnstrict pour conserver strictement cet ordre même sur la dernière feuille. Associez-le à delta pour espacer les pages et à frame pour les encadrer. Notez que landscape ne tourne que la feuille (pour tourner les pages elles-mêmes, utilisez angle=90).

pagecommand désigne le code LaTeX à exécuter sur chaque page insérée. La valeur par défaut est pagecommand={\thispagestyle{empty}} (pas de numéros de page, etc.). En le remplaçant par pagecommand={\thispagestyle{plain}}, les numéros de page de votre document apparaissent aussi sur le PDF importé. C’est aussi le point d’entrée pour superposer en-têtes, pieds de page ou filigrane.

Vous pouvez aussi utiliser trim et clip de \includegraphics (toute option que pdfpages ne reconnaît pas est transmise à celui-ci). C’est pratique pour rogner les en-têtes et pieds de page des pages importées. Par exemple : \includepdf[pages=-, trim=0 2cm 0 2cm, clip]{paper.pdf}.

Exemples pratiques

Créer un polycopié — disposer un PDF de diapositives à raison de quatre pages (2×2) par feuille, encadrer chaque page et laisser un espace entre elles.

latex
\includepdf[pages=-, nup=2x2, frame, delta=5mm 5mm]{slides.pdf}

Assembler plusieurs PDF — pour regrouper des fichiers séparés en un seul document, utilisez \includepdfmerge. Son argument est une liste « filename, page-spec, filename, page-spec, … ». La page-spec utilise la même syntaxe que pages ; si vous l’omettez, seule la première page du fichier est insérée.

latex
% a.pdf の 1–2 ページと b.pdf の 3 ページ目をこの順に
\includepdfmerge{a.pdf, 1-2, b.pdf, 3}

% 学位論文を別々の章 PDF から組み立てる
\includepdfmerge{frontmatter.pdf, -, chap1.pdf, -, chap2.pdf, -}

\includepdfmerge accepte les mêmes options que \includepdf (en utilisant la page-spec ci-dessus à la place de pages). Pour éviter de répéter les mêmes options, définissez des valeurs par défaut une fois avec \includepdfset{⟨options⟩} ; les options données sur un \includepdf individuel les remplacent.

Imposer un livret — un livret piqué à cheval exige de réordonner les pages selon l’ordre de pliage. pdfpages fournit l’option signature : donnez-lui un multiple de 4 et il réorganise les pages en cahiers (signatures), en les plaçant automatiquement avec nup=2x1. Un simple pages=-, nup=1x2, landscape met deux pages côte à côte, mais ne les réordonne *pas* pour le pliage. Pour une imposition de livret complète, vous pouvez aussi utiliser le paquet booklet.

latex
% 縦長の文書を 8 ページ折丁の冊子に
\includepdf[pages=-, signature=8, landscape]{booklet-doc.pdf}

Notes sur le japonais et les pilotes

La prise en charge de la famille pTeX (pLaTeX / upLaTeX) est arrivée avec pdfpages v0.5a. Ces moteurs écrivent du DVI puis le convertissent en PDF avec dvipdfmx, donc l’importation du PDF relève de dvipdfmx. Tant que le pilote graphique est choisi correctement, \includepdf fonctionne tel quel. Si les pages sortent blanches, revoyez le réglage du pilote (passer dvipdfmx comme option de classe/globale, ou écrire explicitement \usepackage[dvipdfmx]{graphicx}).

Un comportement à retenir : seul le contenu (l’apparence) de chaque page est copié ; les liens et annotations du PDF source sont perdus. Pour conserver les liens, il faut un auxiliaire comme le paquet pax. De plus, si vous définissez une couleur de fond avec \pagecolor, le premier \pagecolor doit venir avant \usepackage{pdfpages}.