Mam plik pdf w formacie broszury. Jest przeznaczony do drukowania na papierze A4 w orientacji poziomej; oto dwie strony w pdf, które powinny odpowiadać czterem stronom w książce.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Liczby w nawiasach odpowiadają kolejności poszczególnych stron.
Wiem, że na Linuksie są różnego rodzaju polecenia (pdfbook, pdfnup itp.) (Które prawdopodobnie zostały użyte do stworzenia tej broszury). Jak to „cofnąć rezerwację” --- to znaczy, chcę z tego zrobić dokument pdf, w którym każda strona końcowego produktu jest indywidualną stroną pdf, uporządkowaną w zwykły sposób.
Edytować
Dzięki Gillesowi udało mi się użyć następującego kodu:
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
źródło
źródło
Odpowiedzi:
Oto mały skrypt Pythona korzystający z biblioteki PyPdf, która wykonuje tę pracę. (Pochodzi z
un2up
.) Zapisz go w skrypcie o nazwieunbook
, wykonaj go (chmod +x unbook
) i uruchom jako filter (unbook <book.pdf >1up.pdf
).Testowałem ten skrypt na wyjściu
pdfbook --signature=N
. W przypadku innej metody może nie być konieczne odwracanie każdej innej strony wejściowej, a kolejność stron może być inna (zależy to od orientacji stron poziomych). Rozmieszczenie stron nie pasuje do twojego pytania; 13,42 nie ma dla mnie sensu (w 4-stronicowej książce 3 powinno znajdować się obok 2, a nie 1).Zignoruj wszelkie ostrzeżenia o wycofaniu; tylko opiekunowie PyPdf muszą się tym zajmować.
źródło
<
przed plikiem wejściowym. Jeśli naprawdę jesteś absolutnie pewien, że poprawnie napisałeś polecenie, może to być błąd w bibliotece PyPdf (jeszcze mnie to nie zawiodło, ale może się zdarzyć).python
było moim błędem: powinienem dodać linię shebang, dodał.