J'ai un fichier pdf qui a été créé dans un format de brochure. Il est destiné à imprimer sur du papier A4 en orientation paysage; voici deux pages dans le pdf, qui devraient correspondre à quatre pages dans le livre actuel.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Les numéros entre parenthèses correspondent à l'ordre des pages individuelles.
Je sais qu'il y a toutes sortes de commandes (pdfbook, pdfnup, etc.) sur linux (qui a probablement été utilisé pour faire ce livret en premier lieu). Comment le «décompresser» - c'est-à-dire que j'aimerais faire un document pdf à partir de là où chaque page individuelle du produit final est une page individuelle du pdf, commandée de la manière habituelle.
Éditer
Grâce à Gilles, j'ai réussi à utiliser le code suivant:
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
second_half = []
for i in range(0,input.getNumPages()):
p = input.getPage(i)
q = copy.copy(p)
print >> sys.stderr, 'splitting page',i
print >> sys.stderr, '\tlowerLeft:',p.mediaBox.lowerLeft
print >> sys.stderr, '\tupperRight:',p.mediaBox.upperRight
p.mediaBox.upperRight = (ur[0], (bl[1]+ur[1])/2)
p.mediaBox.lowerLeft = bl
q.mediaBox.upperRight = ur
q.mediaBox.lowerLeft = (bl[0], (bl[1]+ur[1])/2)
if i % 2 == 0:
output.addPage(p)
qold = q
else:
output.addPage(q)
output.addPage(qold)
output.addPage(p)
output.write(sys.stdout)
command-line
pdf
pdftk
TSGM
la source
la source
Réponses:
Voici un petit script Python utilisant la bibliothèque PyPdf qui fait le travail. (Dérivé de
un2up
.) Enregistrez-le dans un script appeléunbook
, rendez-le exécutable (chmod +x unbook
) et exécutez-le en tant que filtre (unbook <book.pdf >1up.pdf
).J'ai testé ce script sur la sortie de
pdfbook --signature=N
. Pour une autre méthode, vous n'aurez peut-être pas besoin d'inverser toutes les autres pages d'entrée et l'ordre des pages peut être différent (cela dépend de l'orientation des pages paysage). La disposition de la page ne correspond pas à votre question; le 13,42 n'a pas de sens pour moi (dans un livre de 4 pages, 3 devrait être à côté de 2, pas à côté de 1).Ignorez tout avertissement de dépréciation; seuls les responsables PyPdf doivent s'en préoccuper.
la source
<
avant le fichier d'entrée. Si vous êtes vraiment absolument sûr d'avoir écrit la commande correctement, cela pourrait être un bogue dans la bibliothèque PyPdf (cela ne m'a pas encore échoué, mais cela pourrait arriver).python
été mon erreur: j'aurais dû mettre une ligne de shebang, a ajouté.