У меня есть файл PDF, который был сделан в формате буклета. Он предназначен для печати на бумаге формата А4 в альбомной ориентации; Вот две страницы в PDF, которые должны соответствовать четырем страницам в настоящей книге.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Числа в скобках соответствуют порядку отдельных страниц.
Я знаю, что в linux есть все виды команд (pdfbook, pdfnup и т. Д.) (Которые, вероятно, использовались для создания этой брошюры). Как мне это «снять», то есть я хотел бы сделать из этого документ в формате pdf, где каждая отдельная страница конечного продукта представляет собой отдельную страницу pdf, упорядоченную обычным способом.
редактировать
Благодаря Жилю, мне удалось использовать следующий код:
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
источник
источник
Ответы:
Вот небольшой скрипт Python, использующий библиотеку PyPdf, которая делает эту работу. (Производный от
un2up
.) Сохраните его в скрипте с именемunbook
, сделайте его исполняемым (chmod +x unbook
) и запустите его как фильтр (unbook <book.pdf >1up.pdf
).Я тестировал этот скрипт на выходе
pdfbook --signature=N
. Для другого метода вам может не понадобиться переворачивать каждую другую входную страницу, и порядок страниц может быть другим (это зависит от ориентации альбомных страниц). Расположение страницы не соответствует вашему вопросу; 13,42 не имеет смысла для меня (в книге на 4 страницы 3 должно быть рядом с 2, а не рядом с 1).Игнорировать любое предупреждение об устаревании; только сопровождающие PyPdf должны быть обеспокоены этим.
источник
<
перед входным файлом. Если вы действительно абсолютно уверены, что написали команду правильно, это может быть ошибка в библиотеке PyPdf (она еще не подвела меня, но это могло произойти).python
была моей ошибкой: я должен был поставить линию Шебанга, добавил.