Conversion de PDF 2 faces par page en 1 face par page

11

Comment convertir un PDF avec 2 faces par page en 1 face par page?

user13910
la source
C'est absolument fou! N'existe-t-il aucun moyen de modifier les paramètres de page d'un PDF pour qu'il soit recto au lieu de recto verso?
Nathan Fellman
@Nathan Fellman: Fou, oui. Mais les choses folles vous donnent parfois le plus de plaisir ;-)
Kurt Pfeifle
Copie possible de Comment puis-je diviser les pages d'un PDF au milieu?
Skippy le Grand Gourou
@SkippyleGrandGourou Je ne vois pas comment cette question est liée. Les questions n'essaient-elles pas de faire deux choses différentes avec les pages?
Ben N
@BenN: Les deux questions demandent comment "créer deux nouvelles pages à partir d'une seule page existante", pour citer l'autre. La réponse la plus votée est presque un copypasta.
Skippy le Grand Gourou du

Réponses:

23

OK, le problème a déjà été résolu avec l'aide d'Acrobat (version complète, pas Reader). Mais que faire si vous n'avez pas accès à Acrobat? Cela pourrait-il être fait avec Ghostscript et pdftk également?

Comment résoudre ce problème avec l'aide de Ghostscript ...

... et pour le plaisir, n'utilisons pas un fichier d'entrée avec des pages "double up", mais un fichier avec "triple". En fait, j'ai reçu un de ces PDF aujourd'hui par e-mail. C'était un dépliant, plié dans le schéma de Leporello . La taille de la feuille était A4 paysage (842 pt x 595 pt), et elle était pliée et disposée comme suit:

Front side to be printed, page 1 of PDF
+--------+--------+--------+   ^
|        |        |        |   |
|   5    |   6    |   1    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
         ^        ^
        fold     fold
         v        v
+--------+--------+--------+   ^
|        |        |        |   |
|   2    |   3    |   4    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->

Je veux créer 1 PDF de 6 pages, chacune ayant une taille inhabituelle de 280,67 pt x 595 pt.

Premier pas

Extrayons d'abord les sections de gauche de chacune des pages d'entrée:

gswin32c.exe ^
    -o left-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [0 0]>> setpagedevice" ^
    -f myflyer.pdf

Que faisaient ces paramètres?

  • -o ...............:Nomme le fichier de sortie. Utilise également implicitement -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 de 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 [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
+--------+  ^
|        |  |
|   5    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

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

Deuxième étape

Faisons maintenant la même chose pour les sections centrales:

gswin32c.exe ^
    -o center-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [280.67 0]>> setpagedevice" ^
    -f myflyer.pdf

Résultat:

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

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

Troisième étape

Enfin, les bonnes sections:

gswin32c.exe ^
    -o right-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [561.34 0]>> setpagedevice" ^
    -f myflyer.pdf

Résultat:

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

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

Dernière étape

Maintenant, nous combinons les pages en un seul fichier:

pdftk.exe ^
  A=right-sections.pdf ^
  B=center-sections.pdf ^
  C=left-sections.pdf ^
  cat A1 B2 C2 A2 B1 C1 ^
  output single-files-input.pdf
  verbose

Terminé. Voici le résultat souhaité. 6 pages différentes, de taille 280.67x595.

Résultat:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 
Kurt Pfeifle
la source
1
Merde, art génial ici!
Ivo Flipse
Cela a bien fonctionné pour moi, mais j'ai dû définir le PageOffset sur un nombre négatif afin d'obtenir les autres sections.
jonchang
Vous pouvez utiliser Python pour des fichiers PDF plus volumineux: f = open("order.dat","w") for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i)) f.close()cela créera un fichier order.dat avec "A1 B1 A2 B2 ... A63 B63". Vous pouvez ensuite le copier-coller dans pdftk.
Suuuehgi
4

Juste eu le même problème. Je suis tombé sur briss, un outil GUI java open source pour séparer et recadrer les pages pdf:

http://sourceforge.net/projects/briss/

Cela a très bien fonctionné pour moi, sous Linux, même si l'interface utilisateur n'est pas complètement triviale. Il a même fonctionné avec un pdf avec des pages de tailles différentes!

Matthias
la source
3

@peims, merci. Voici la version étape par étape de votre méthode. Je l'ai essayé sur un fichier que je voulais convertir pour mon Kindle DX, et cela fonctionne parfaitement:

  • Utilisez la version complète d'Acrobat v9 pour recadrer le côté gauche de la page et enregistrez-la sous "left.pdf":
    • Utilisez l'outil de recadrage pour marquer le côté gauche de la page.
    • Faites un clic droit et sélectionnez "Définir Cropbox".
    • Sélectionnez "Document..Cop Pages" et appliquez le recadrage à l'ensemble du document.
  • Répétez avec les pages de droite, enregistrez sous "right.pdf".
  • A ce stade, vous avez deux documents: "left.pdf" avec les pages de gauche, et "right.pdf" avec les pages de droite.

Ensuite, utilisez pdftk.exe (depuis http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) pour entrelacer les résultats dans un seul fichier. Copiez "pdftk.exe", "left.pdf" et "right.pdf" dans "D: \" et exécutez:

  • D:> pdftk D: \ left.pdf sortie en rafale% 05d_A.pdf
  • D:> pdftk D: \ right.pdf sortie en rafale% 05d_B.pdf
  • D:> pdftk * _?. Pdf sortie cat combinée.pdf

Remarque: si vous copiez les fichiers dans "C: \", cela ne fonctionnera pas sous Win 7 en raison des autorisations de sécurité. Si vous n'avez pas de D: \, créez un répertoire "C: \ x" pour terminer l'opération.

Ces résultats seraient normalement assez bons. Cependant, il existe deux autres étapes facultatives pour améliorer la sortie.

  • (étape finale facultative 1) À ce stade, le document est énorme (mon document a augmenté de 7 Mo à 80 Mo), vous pouvez donc réduire la taille du fichier en utilisant soit:
    • "Advanced..PDF Optimizer", ou:
    • "Advanced..Preflight" avec le paramètre "Compatible with Acrobat 5".
  • (étape finale facultative 2) Les pages sont toutes de tailles différentes. Répétez le recadrage sur toutes les pages pour que tout soit de taille uniforme.
Contango
la source
2

Vous pouvez dupliquer le document, puis rogner les pages de sorte que seuls les numéros de page pairs s'affichent dans un fichier et uniquement les numéros de page impairs dans l'autre. Ensuite, divisez les fichiers en pages simples et recombinez pour créer un document avec des côtés simples sur une page ...

Vous pouvez le faire en utilisant un certain nombre de méthodes, par exemple:

  1. Utilisez l' outil de recadrage d' Adobe Acrobat pour recadrer un côté de la double page et appliquez le recadrage à toutes les pages.
  2. Divisez les fichiers en pages individuelles à l'aide de la commande 'burst' dans pdftoolkit
  3. Renommez les fichiers séquentiellement à l'aide d'un outil de changement de nom de fichier (par exemple ReNamer )
  4. Recombinez les pages à l'aide de la commande «cat» dans pdftoolkit
pelms
la source
2

J'utilise le script suivant pour traiter les livres numérisés sur Mac et Linux. Cela peut nécessiter beaucoup de mémoire.

#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder". 
#
# The second step is to take each page of the PDF and split this into two two pages, 
# because each page of the scanned document actually contains two pages of the book.
#
#

FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf

echo "Making a temporary copy of the input file."

cp $1 $FILE

#
# Start cropping
#

echo "Cropping the PDF"

# The first regex removes all boxes but CropBox. The second regex renames the  CropBox as MediaBox

perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE

echo "Validating the PDF"

#Run PDFTK to ensure that the file is OK

cat $FILE | pdftk - output $FILE2

#
# Done cropping, start splitting the pages
#

echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"

convert -density 200  $FILE2 -crop 50%x0 +repage $FILE3

#
# Done spliting, copy the result in a new file
#


mv $FILE3 $1.pages.pdf
mronkko
la source
1

Merci pour une grande référence. J'étais dans un problème similaire mais je voulais partager ce qui a fonctionné pour moi.

J'avais un tabloïd pdf orienté paysage avec du texte orienté portrait uniquement sur le côté gauche. Un tabloïde à 2 poses manquant de contenu sur le côté droit de la page. Point de départ similaire, mais tabloïd est de 792 × 1224 (Portrait), 1124 x 792 (Paysage) et la définition de point pour le 1/2 tabloïd dont j'avais besoin était de 612 x 792 points.

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"

J'ai obtenu le contenu dont j'avais besoin en portrait 8,5 x 11, beaucoup plus lisible.

Charlie
la source
0

Ce que je comprends, c'est qu'un fichier PDF montrant deux pages (côte à côte sur une feuille) doit être converti en une page par feuille, ce qui donne deux feuilles de fichier PDF. En d'autres termes, s'il y a au total trente pages sur 15 feuilles, nous devons convertir le fichier PDF en un fichier PDF de trente feuilles affichant chacune une page. Si c'est le problème, j'ai utilisé Adobe Acrobat XI PRO "outil d'extraction de page" en spécifiant les numéros de page de 1 à 30

RN SONI
la source