Comment puis-je fractionner les pages d'un PDF au milieu?

38

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'essaye 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.

YGA
la source
Pourquoi veux-tu faire cela? obtenir des pages plus petites?
Akira
Eh bien, MS Office n'est pas un logiciel gratuit, mais si vous utilisez MS Office 2007, vous pouvez simplement enregistrer des documents au format PDF et les utiliser à votre guise ...
Owen, le
Voir aussi stackoverflow.com/q/13345593/321973
Tobias Kienzler
Duplication possible de Convert PDF 2 pages par page à 1 page par page
fix1234

Réponses:

26

Essayez BRISS .

texte alternatif

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.

C'est multi-plateforme, gratuit et open-source.

frabjous
la source
Il semble que cela augmente la taille du fichier (multiplié par "le nombre de pages de sortie par page d'entrée"), car il utilise le contenu de la page d'origine et une boîte de recadrage pour chaque page recadrée. Si vous avez besoin d'une petite taille de fichier, vous pouvez imprimer le fichier de sortie au format PS, puis le convertir au format PDF, mais vous risquez en cas de perte de qualité (en raison, par exemple, des polices bitmap).
tanius
37

Vous pouvez résoudre ce problème avec l'aide de Ghostscript. pdftkseul 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 pas avec un fichier d’entrée comportant des pages "double-up", mais avec un "triple-up". Vous pouvez lire la réponse à 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 souhaitez 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 qu’en PDF 1 pouce == 72 points . Ensuite, le reste est:

  • -o ...............:Nom du 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 -f).
  • <</PageOffset ....: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 de [0 0]n'a aucun effet réel.)
  • -f ...............: traiter 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 le faire avec ghostscript également, mais nous l'utilisons à la pdftkplace, 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 -->
Kurt Pfeifle
la source
3
Joli! Vous devriez vraiment utiliser ceci dans chaque réponse si vous voulez continuer à obtenir des votes gratuits gratuitement!
Ivo Flipse
2
La deuxième étape ne fonctionnait pour moi quand j'ai utilisé un décalage négatif: "<</PageOffset [-421 0]>> setpagedevice". Je suppose que cela dépend de l'orientation du fichier d'origine. Excellente réponse néanmoins. :)
moraes
1
Pour moi, la deuxième étape a également fonctionné avec le signe moins
Rafareino
9

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

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

mutool poster -x 2 input.pdf output.pdf

Vous pouvez également utiliser -ysi vous souhaitez effectuer une division verticale.

Peque
la source
C'est une solution simple, merci. Malheureusement, il n’ya aucun moyen de changer le contenu de la page pour ajuster les marges - utilisez pour cela la méthode décrite par Kurt Pfeifle.
Ján Lalinský
0

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 les 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.

motocyclette
la source
Notez qu'après avoir divisé les pages avec ces options de commande, les boîtes de média ne changent pas. Seule la culture change. Si vous divisez une page en plusieurs pages, les nouvelles pages conservent les dimensions de la boîte de support de l'ancienne page. Besoin de modifier les dimensions de la boîte de média. Bien que je ne sache pas comment configurer la boîte de média pour rogner sans inclure de chiffres dans la commande.
motorbaby
Oops. Je veux dire que les nouvelles pages conservent les dimensions de la zone de recadrage de l'ancienne page.
motorbaby
Trouvé un bug avec Acrobat PDFs. Visuellement, les dimensions de cropBox sont visibles dans les zones de page définies dans Acrobat. Mais les dimensions de cropBox après avoir utilisé Ghostscript pour diviser le gatefold ont conservé les anciennes dimensions de page à un autre niveau. Ceci pourrait être vu dans les informations de contrôle en amont dans Acrobat. Après avoir ajusté temporairement le rognage dans Acrobat situé à droite de la page de gauche à un nombre arbitraire, puis remis à 0, les autres dimensions de la zone (fond perdu, illustration et découpage) ont également été ajustées. Cela a résolu le problème suivant: les données de cropBox affichaient toujours les anciennes dimensions de la page. La bonne page était un peu différente.
motorbaby