web-dev-qa-db-fra.com

Comment puis-je fractionner une page PDF au milieu?

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

Pour être clair, je n'essaie pas de séparer des pages déjà existantes d'un pdf; J'essaie de créer deux nouvelles pages à partir d'une seule page existante.

37
YGA

Essayez BRISS .

alt text

Il 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, ce qui vous permet de définir les régions de ce groupe une fois.

Il est multi-plateforme, gratuit et open-source.

26
frabjous

Vous pouvez résoudre ce problème avec l'aide de Ghostscript. pdftk seul ne peut pas faire cela (à ma connaissance). Je vais vous donner les étapes à suivre en ligne de commande pour le faire manuellement. Il sera facile de créer un script pour cette procédure, avec également différents paramètres pour les tailles et les numéros de page. Mais vous avez dit que vous pouvez le faire vous-même ;-)

Comment résoudre ce problème 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 "double-up", mais un fichier avec "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
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

Vous voulez créer 1 PDF de 4 pages, chacune de la taille de 421 points x 595 points.

Premier pas

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

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

Qu'ont fait ces paramètres?

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

  • -o ...............: Nomme le fichier de sortie. Implicitement, utilise également -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : nous voulons PDF comme format de sortie.
  • -g................: définit la taille du support de sortie en pixels. La résolution par défaut de pdfwrite est 720 dpi. Par conséquent, multipliez 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).
  • <</PageOffset ....: définit le décalage de l'image de la page sur le support. (Bien entendu, le décalage de [0 0] n'a aucun effet réel pour les pages de gauche.)
  • -f ...............: traite ce fichier d'entrée.

Quel résultat la dernière commande a-t-elle atteint?

Celui-là:

Output file: left-sections.pdf, page 1
+------------+  ^
|            |  |
|     1      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: left-sections.pdf, page 2
+------------+  ^
|            |  |
|     3      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Deuxième étape

Ensuite, les bonnes sections:

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [-421 0]>> setpagedevice" \
    -f double-page-input.pdf

Résultat:

Output file: right-sections.pdf, page 1
+------------+  ^
|            |  |
|     2      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: right-sections.pdf, page 2
+------------+  ^
|            |  |
|     4      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Dernière étape

Maintenant, nous combinons les pages dans un fichier. Nous pourrions faire cela avec ghostscript également, mais nous utiliserons plutôt pdftk, 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

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

Résultat:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
36
Kurt Pfeifle

Merci à @marttt et à leur réponse sous Unix et 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 souhaitez effectuer un fractionnement vertical.

9
Peque

Pour développer la réponse de @ Kurt (étant donné que je n'ai pas assez de points de réputation à commenter), assurez-vous d'abord que les dimensions que vous utilisez ne sont pas basées sur les dimensions de la zone de recadrage, si elles sont différentes de celles de la zone de support. La taille de sortie est basée sur les dimensions de la zone de support, mais le décalage semble utiliser les dimensions de la zone de rognage.

Pour une page gatefold comportant une zone de stockage de 20,0833 x 13,833 et une zone de rognage de 19,25 x 13,0 identique à la zone de rognage de mon document, séparez-la en deux pages sur Ubuntu, pour le côté gauche:

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

Le côté droit:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

Et puis cousu avec pdftk left.pdf right.pdf output final.pdf.

Une alternative serait de définir la zone de recadrage de la même manière que la zone de support; alors le décalage serait -723. Mais il faudrait alors réinitialiser le recadrage pour que les pages soient transparentes. Sinon, définissez le support à rogner.

0
motorbaby