Aqui está um pequeno script Python usando a biblioteca PyPdf que faz o trabalho. (Derivado de un2up
.) Salve em um script chamado unbook
, torne-o executável ( chmod +x unbook
) e execute-o como um filtro ( unbook <book.pdf >1up.pdf
).
Eu testei esse script na saída de pdfbook --signature=N
. Para outro método, talvez você não precise reverter todas as outras páginas de entrada, e a ordem das páginas pode ser diferente (depende da orientação das páginas de paisagem). A disposição da página não corresponde à sua pergunta; o 13,42 não faz sentido para mim (em um livro de 4 páginas, 3 deve estar ao lado de 2, não próximo de 1).
#!/usr/bin/env python
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)
(w, h) = p.mediaBox.upperRight
p.mediaBox.upperRight = (w/2, h)
q.mediaBox.upperLeft = (w/2, h)
if i % 2 == 0:
p.rotateClockwise(180)
q.rotateClockwise(180)
output.addPage(p)
second_half.append(q)
else:
output.addPage(p)
second_half.append(q)
second_half.reverse()
for q in second_half: output.addPage(q)
output.write(sys.stdout)
Ignore qualquer aviso de descontinuação; apenas os mantenedores do PyPdf precisam se preocupar com isso.