42 votes

Comment puis-je diviser les pages d'un PDF en deux?

Est-ce que quelqu'un sait d'un bon moyen de diviser les pages d'un pdf en deux nouvelles pages?

Pour être clair, je ne suis pas en train de diviser des pages déjà existantes d'un pdf; je suis en train de créer deux nouvelles pages à partir d'une seule page existante.

41voto

Kurt Pfeifle Points 11465

Vous pouvez résoudre cela avec l'aide de Ghostscript. pdftk seul ne peut pas le faire (pour ce que je sais). Je vais vous donner les étapes en ligne de commande pour le faire manuellement. Il sera facile de scripter ceci comme une procédure, également avec différents paramètres pour les tailles de page et les numéros de page. Mais vous avez dit que vous pouvez le faire vous-même ;-)

Comment résoudre cela avec l'aide de Ghostscript...

...et pour le plaisir, je l'ai récemment fait non avec un fichier d'entrée comportant des pages "en double", mais avec des pages "en triple". Vous pouvez lire la réponse pour ce cas dans cette autre réponse.

Votre cas est encore plus simple. Vous semblez avoir quelque chose de similaire à ceci :

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            plier
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

Vous voulez créer 1 PDF avec 4 pages, chacune ayant une taille de 421 pt x 595 pt.

Première étape

Commençons par extraire les sections de gauche de chacune des pages d'entrée :

gs \
    -o left-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<> setpagedevice" \
    -f double-page-input.pdf

Que font ces paramètres ?

Tout d'abord, sachez que dans un PDF 1 pouce == 72 points. Ensuite, le reste est :

  • -o ...............: Nomme le fichier de sortie. Utilise implicitement également -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : nous voulons le format PDF en sortie.
  • -g................: définit la taille des médias de sortie en pixels. La résolution par défaut de pdfwrite est de 720 dpi. Donc multiplier par 10 pour obtenir une correspondance pour PageOffset.
  • -c "..............: demande à Ghostscript de traiter l'extrait de code PostScript donné juste avant le fichier d'entrée principal (qui doit suivre avec -f).
  • < définit le décalage de l'image de la page sur le support. (Bien sûr, pour les pages de gauche, le décalage par `[0 0]` n'a pas vraiment d'effet.) * `-f ...............:` traite ce fichier d'entrée.

``Quel résultat a donné la dernière commande ?

Celui-ci :

Fichier de sortie : left-sections.pdf, page 1
+------------+  ^
|            |  |
|     1      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Fichier de sortie : left-sections.pdf, page 2
+------------+  ^
|            |  |
|     3      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Deuxième étape

Ensuite, les sections de droite :

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<> setpagedevice" \
    -f double-page-input.pdf

Résultat :

Fichier de sortie : right-sections.pdf, page 1
+------------+  ^
|            |  |
|     2      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Fichier de sortie : right-sections.pdf, page 2
+------------+  ^
|            |  |
|     4      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Dernière étape

Maintenant nous combinons les pages en un seul fichier. Nous pourrions le faire avec Ghostscript également, mais nous utiliserons pdftk à la place, car c'est plus rapide pour ce travail :

pdftk \
  A=right-sections.pdf \
  B=left-sections.pdf \
  shuffle A B \
  output single-pages-output.pdf
  verbose

Fait. Voici le résultat souhaité. 4 pages différentes, de taille 421x595 pt.

Résultat :

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->``

27voto

Brian Frost Points 6544

Essayez BRISS.

texte alternatif

Cela vous permet de diviser chaque page en autant de sous-pages que vous le souhaitez en définissant des régions avec une interface graphique. Il regroupe toutes les pages similaires en groupes pour vous, afin que vous puissiez définir des régions pour ce groupe une fois.

C'est multiplateforme, gratuit et open source.

15voto

Peque Points 901

Merci à @marttt et leur réponse dans Unix & Linux.

Vous pouvez utiliser mutool (qui fait partie de mupdf) :

mutool poster -x 2 input.pdf output.pdf

Vous pouvez également utiliser -y si vous voulez effectuer une division verticale.

0voto

Lawrence McAlpin Points 1726

Pour compléter la réponse de @Kurt (puisque je n'ai pas assez de points de réputation pour commenter), assurez-vous tout d'abord que les dimensions que vous utilisez ne sont pas basées sur les dimensions de la boîte de recadrage si elles sont différentes des dimensions de la boîte de média. La taille de sortie est basée sur les dimensions de la boîte de média, mais le décalage semble utiliser les dimensions de la boîte de recadrage.

Pour une page en accordéon ayant une boîte de média de 20.0833 x 13.833 et une boîte de recadrage de 19.25 x 13.0 qui était la même que la boîte d'habillage dans mon document, pour diviser en deux pages sur Ubuntu, pour le côté gauche :

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<> setpagedevice" -f gatefold.pdf

Le côté droit :

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<> setpagedevice" -f gatefold.pdf

Ensuite, les assembler avec pdftk left.pdf right.pdf output final.pdf.

Une alternative serait de définir la boîte de recadrage de la même manière que la boîte de média ; alors le décalage serait de -723. Mais ensuite, la boîte de recadrage devrait être réinitialisée en boîte d'habillage pour que les pages soient uniformes. Sinon, définissez la média en recadrage.

0voto

eMPee584 Points 149

Krop (Python) & PDFscissors (Java) n'ont pas encore été mentionnés, consultez-les si vous avez par exemple des notes de cours pdfnup que vous voulez inverser en un PDF de présentation correct.

http://arminstraub.com/software/krop

https://sites.google.com/site/pdfscissors/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X