J'ai un tas de fichiers PDF qui contiennent deux "vraies" pages sur une seule page PDF; Je voudrais les couper en deux et mettre chaque moitié sur une page séparée. J'ai essentiellement besoin de quelque chose qui fasse exactement le contraire de pdfnup
(ou psnup
). Comment cet exploit peut-il être réalisé?
La plate-forme est Linux, open source préféré; comme j'ai beaucoup de choses à faire, quelque chose qui peut être scripté (par opposition à une interface graphique) serait bien, alors je peux juste en donner une liste et la faire disparaître.
Un script préexistant n'est pas la seule option non plus; S'il existe un exemple de code permettant de manipuler les PDF de manière similaire avec une bibliothèque tierce, je peux probablement le pirater pour qu'il fasse ce que je veux.
la source
Réponses:
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 pas avec un fichier d’entrée comportant des pages "double-up", mais avec un "triple-up". Vous pouvez lire la réponse à cette affaire ici .
Votre cas est encore plus simple. Vous semblez avoir quelque chose de similaire à ceci:
Vous souhaitez créer un fichier PDF de 4 pages de 421 points x 595 points.
Premier pas
Commençons par extraire les sections de gauche de chacune des pages d'entrée:
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à:
Deuxième étape
Ensuite, les bonnes sections:
Notez le décalage négatif puisque nous décalons la page vers la gauche tout en maintenant la zone de visualisation immobile.
Résultat:
Dernière étape
Maintenant, nous combinons les pages dans un fichier. Nous pourrions le faire avec ghostscript également, mais nous l'utilisons à la
pdftk
place, car c'est plus rapide pour ce travail:Terminé. Voici le résultat souhaité. 4 pages différentes, taille 421x595 pt.
Résultat:
la source
421
->-421
). ;-)Il existe un outil pdfposter qui permet de créer des PDF comportant plusieurs pages pour une page d’entrée (mosaïque ou hachage des pages). Il est similaire à l'outil
poster
, qui fait la même chose pour les fichiers PostScript.la source
Ainsi, après beaucoup plus de recherches (il semblerait que "PDF pages coupées" soit une bien meilleure recherche), j'ai trouvé un petit script appelé "
unpnup
qui utiliseposter
, conversion PDF / PS", etpdftk
de faire exactement ce dont j'ai besoin. C'est un peu long, mais c'est de loin supérieur aux autres méthodes que j'ai trouvées (comme utiliser imagemagick) car elles ne pixellisent pas les pages avant de les cracher.Juste au cas où mobileread s’éloigne pour une raison quelconque, le cœur du script (distribué sous licence GPLv2 ou ultérieure par Harald Hackenberg
<hackenberggmx.at>
) est le suivant:la source
PDF => EPS => PDF
voie risquée et va dePDF => PDF => PDF
manière plus sûre .J'ai trouvé que la réponse de Kurt Pfeifle était très utile dans une situation similaire. J'ai pensé que je pourrais partager ma modification de la solution avec d'autres ...
Moi aussi j'avais un PDF numérisé qui avait 2 pages sur chaque feuille. Il s’agissait d’une numérisation au format 11 x 8,5 pouces d’un livret piqué à la sellette, agrafé lors de la numérisation initiale. PDF page 2 = pages 2 et 3, etc. Cela se lit bien à l'écran, mais vous ne pouvez pas l'imprimer et l'agrafer pour faire d'autres copies du livret.
J'avais besoin de pouvoir imprimer ceci sur un copieur recto verso; c'est-à-dire le transformer de nouveau en PDF "imposé", prêt à être imprimé. Donc, en utilisant la solution de Kurt, j’ai fait ceci (ahem) "une ligne" pour le reconvertir en demi-pages, dans le bon ordre des pages à nouveau. Cela fonctionnera pour n'importe quelle hauteur et largeur, et aussi pour n'importe quel nombre de pages. Dans mon cas, j'avais un livret de 40 pages (20 pages numérisées au format PDF.)
Il vous suffit de modifier les premiers paramètres de cette commande pour spécifier HEIGHT and WIDTH et ORIG_FILE_PATH. Le reste de la commande calcule les différentes tailles et appelle deux fois gs, puis pdftk. Il comptera même les pages de votre numérisation et produira ensuite la spécification de tri correcte (pour le scénario que j'ai donné).
Il en résulte des progrès sur ce qu'il fait, qui ressemblera à ceci:
Ensuite, pour obtenir l’imposition de page dont vous avez besoin pour un livret imprimé, il vous suffit "d’imprimer" commander.pdf sur un format de page personnalisé du format souhaité (dans mon exemple, 5,5 x 8,5), en l’envoyant à un "établissement de livret". "outil (dans mon cas, j’ai utilisé Create Booklet for Mac de Christoph Vogelbusch à l’ adresse http://download.cnet.com/Create-Booklet/3000-2088_4-86349.html ).
Le fichier PDF résultant retrouvera désormais le format de page d'origine de 11 x 8,5 avec 2 pages par feuille, mais la commande sera telle que vous pourrez l'imprimer recto verso, sur reliure à bord court et le tour est joué! vous aurez un imprimé que vous pourrez photocopier et plier et assembler, reproduisant le livret original sans jamais démonter (ni même voir) l'original.
J'espère que cela aide quelqu'un!
-c
la source
Basé sur la réponse de piptas ci-dessus:
Sur les fenêtres, pour fractionner des PDF de format lettre avec une seule image de couverture au début, les opérations suivantes ont fonctionné très bien pour moi (notez l'utilisation de [-612 0] dans la deuxième étape, une valeur positive générant des pages vierges car elle poussait dans le mauvais sens. .)
gswin32c -o left-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Notez l'utilisation
-dFirstPage=2
qui indique à gs de commencer le traitement à la page 2.gswin32c -o right-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [-612 0]>> setpagedevice" -f input.pdf
Cela crée right-sections.pdf de la même manière. Et maintenant, l'image de couverture:
gswin32c -o cover.pdf -sDEVICE=pdfwrite -dLastPage=1 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Ensuite, comme je ne voulais pas fusionner avec pdftk en utilisant la saisie de page manuelle, j'ai divisé les sections gauche et droite en fichiers PDF distincts dans un nouveau répertoire.
Ensuite, je joins les fichiers PDF de ce répertoire par ordre alphabétique (et heureusement, cela signifie qu'ils sont triés dans le bon ordre!) Et je répète également le résultat dans ghostscript pour corriger le message "Avertissement: numéro de génération sur une plage de 0..65535, en supposant 0. " erreurs produites par pdftk que ghostscript a appelé "itext-paulo-155 (itextpdf.sf.net-lawagie.com)" - il est également arrivé de réduire de moitié la taille du fichier dans mon utilisation. Avec un original de 4,5 Mo, le résultat de pdftk était de 6,7 Mo et le retraitement de gswin32c l'a réduit à 3,2 Mo.
Et nous avons fini! N'hésitez pas à supprimer le dossier input_file, cover.pdf, input_temp.pdf, right_sections.pdf et left_sections.pdf. ;-)
la source
si vous avez juste besoin de sortir les fichiers PDF de gauche dans un seul document et les fichiers PDF de droite, dans un seul document, le script suivant, basé sur la réponse de Kurt Pfeifle, fera l'affaire (fonctionne pour toute hauteur et largeur):
puis lancez-le comme ceci:
la source