Comment convertir un PDF avec 2 faces par page en 1 face par page?
Comment convertir un PDF avec 2 faces par page en 1 face par page?
Réponses:
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?
... 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.
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 >
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 >
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 >
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 >
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
.
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!
@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:
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:
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.
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:
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
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.
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
Krop (Python) et PDFscissors (Java) n'ont pas encore été mentionnés, vérifiez-les si vous avez des notes de cours fe pdfnup-ped que vous souhaitez inverser en un PDF de présentation approprié.