Tengo un archivo pdf que se convirtió en un formato de folleto. Está destinado a imprimir en papel A4 en orientación horizontal; Aquí hay dos páginas en el pdf, que deben corresponder a cuatro páginas en el libro real.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Los números entre corchetes corresponden al orden de las páginas individuales.
Sé que hay todo tipo de comandos (pdfbook, pdfnup, etc.) en Linux (que probablemente se usó para hacer este folleto en primer lugar). ¿Cómo puedo 'deshacerlo'? Es decir, me gustaría hacer un documento en PDF a partir de esto, donde cada página individual del producto final es una página individual del pdf, ordenada de la manera habitual.
Editar
Gracias a Gilles, logré usar el siguiente código:
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
fuente
fuente
Respuestas:
Aquí hay un pequeño script de Python que usa la biblioteca PyPdf que hace el trabajo. (Derivado de
un2up
.) Guárdelo en un script llamadounbook
, hágalo ejecutable (chmod +x unbook
) y ejecútelo como filtro (unbook <book.pdf >1up.pdf
).Probé este script en la salida de
pdfbook --signature=N
. Para otro método, es posible que no necesite invertir todas las demás páginas de entrada, y el orden de las páginas puede ser diferente (depende de la orientación de las páginas horizontales). La disposición de la página no coincide con su pregunta; el 13,42 no tiene sentido para mí (en un libro de 4 páginas, 3 debería estar al lado del 2, no al lado del 1).Ignorar cualquier advertencia de desaprobación; solo los mantenedores de PyPdf deben preocuparse por esto.
fuente
<
antes del archivo de entrada. Si está realmente seguro de que escribió el comando correctamente, podría ser un error en la biblioteca PyPdf (todavía no me ha fallado, pero podría suceder).python
fue mi error: debería haber puesto una línea shebang, agregada.