Eu tenho um arquivo pdf que foi criado em um formato de livreto. Destina-se a imprimir em papel A4 na orientação paisagem; Aqui estão duas páginas em pdf, que devem corresponder a quatro páginas no livro atual.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Os números entre colchetes correspondem à ordem das páginas individuais.
Eu sei que existem todos os tipos de comandos (pdfbook, pdfnup etc.) no linux (que provavelmente foi usado para criar este livreto em primeiro lugar). Como 'desmarco' - ou seja, eu gostaria de fazer um documento em PDF a partir deste, onde cada página individual do produto final é uma página individual do pdf, ordenada da maneira usual.
Editar
Graças a Gilles, consegui usar o seguinte 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
fonte
fonte
Respostas:
Aqui está um pequeno script Python usando a biblioteca PyPdf que faz o trabalho. (Derivado de
un2up
.) Salve-o em um script chamadounbook
, 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, pode não ser necessário reverter todas as outras páginas de entrada e a ordem das páginas pode ser diferente (depende da orientação das páginas em 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 próximo a 2, não próximo a 1).Ignore qualquer aviso de descontinuação; somente os mantenedores do PyPdf precisam se preocupar com isso.
fonte
<
antes do arquivo de entrada. Se você realmente tem certeza absoluta de que escreveu o comando corretamente, pode ser um bug na biblioteca PyPdf (ainda não falhou comigo, mas pode acontecer).python
foi meu erro: eu deveria ter colocado uma linha shebang, acrescentou.