У меня есть отсканированный файл PDF, который отсканировал две страницы на одной виртуальной странице (страница в файле PDF).
Разрешение с хорошим качеством. Проблема в том, что мне приходится увеличивать изображение при чтении и перетаскивать слева направо.
Есть некоторые команды ( convert
, pdftk
, ...) или скрипт , который может преобразовать этот файл в формате PDF с нормальными страниц (одна страница из книги = одной страницы в PDF - файл)?
pdfnup
помощьюpdfjam
набора.Ответы:
Вот небольшой скрипт Python, использующий библиотеку PyPdf, которая делает работу аккуратно. Сохраните его в скрипте с именем
un2up
(или как хотите), сделайте его исполняемым (chmod +x un2up
) и запустите его как фильтр (un2up <2up.pdf >1up.pdf
).Игнорировать любые предупреждения об устаревании; только сопровождающие PyPdf должны быть обеспокоены этим.
Если входные данные ориентированы необычным образом, вам может понадобиться использовать разные координаты при усечении страниц. См. Почему мой код неправильно разделяет каждую страницу в отсканированном PDF?
На всякий случай, если это полезно, вот мой предыдущий ответ, в котором используется комбинация двух инструментов плюс некоторое ручное вмешательство:
Оба инструмента необходимы, потому что, насколько я могу судить, pdfpages не может применить два разных преобразования к одной и той же странице в одном потоке. В вызове
pdftk
замените 42 числом страниц во входном документе (2up.pdf
).Если у вас нет pdfjam 2.0, достаточно установить PDFLaTeX с пакетом pdfpages (в Ubuntu: вам нужны texlive-latex-рекомендуемые и, возможно, (в Ubuntu: texlive-fonts-рекомендуемые ), и использовать следующий драйвер файл
driver.tex
:Затем выполните следующие команды, заменив 42 на количество страниц во входном файле (который должен быть вызван
2up.pdf
):источник
pdfjam
команду.q.mediaBox.lowerRight = (w, h/2)
Просто дополнение, так как у меня были проблемы со скриптом Python (и несколькими другими решениями): для меня это
mutool
работало отлично. Это простое и небольшое дополнение поставляется с элегантнымmupdf
читателем. Так что вы можете попробовать:Для горизонтальных расколов заменить
y
наx
. И вы можете, конечно, объединить два для более сложных решений.Действительно рад, что нашел это (после нескольких лет ежедневного использования mupdf :)
mutool
поставляется с mupdf начиная с версии 1.4: http://www.mupdf.com/newsУстановка
mupdf
иmutool
из источника:Или перейдите на страницу загрузок, чтобы найти более новую версию.
источник
mutool
был сделан для этого. Кроме того, остерегайтесь-y
, я думаю, что в большинстве случаев вы хотите-x
.Imagemagick может сделать это за один шаг:
источник
-density 400
параметр, он будет еще лучше.Команда ImageMagick Convert может помочь вам обрезать ваш файл в 2 части. Смотрите http://www.imagemagick.org/Usage/crop/
Если бы я был тобой, я бы написал (shell) скрипт, подобный этому:
Для каждой страницы обрежьте первую половину и поместите ее в файл с именем $ {PageNumber} A
Обрежьте вторую половину и поместите ее в файл с именем $ {PageNumber} B.
Вы получаете 1A.pdf, 1B.pdf, 2A.pdf, 2B.pdf и т. Д.
источник
Основанный на ответе от Жиля и как найти число страниц PDF, которое я написал
Так что я могу бежать
где 50 для корректировки поля и 1,2 для масштаба.
источник
Вот вариант кода PyPDF, размещенного Жилем. Эта функция будет работать независимо от ориентации страницы:
источник
Лучшим решением был mutool, см. Выше:
раскол:
но тогда вам нужно повернуть страницы влево:
источник
Основываясь на ответе Бенджамина из AskUbuntu, я бы порекомендовал использовать инструмент с графическим интерфейсом gscan2pdf .
Импортируйте файл сканирования PDF в gscan2pdf. Обратите внимание, что PDF-файлы без изображений могут не работать. Сканирование в порядке, так что вам не о чем беспокоиться.
Это может занять некоторое время в зависимости от размера документа. Подождите, пока он загрузится.
Нажмите Ctrl + A, чтобы выбрать все страницы, а затем поверните (Ctrl + Shift + C) их, если это необходимо.
Перейти в Инструменты >> Очистить . Выберите Layout как double и # output pages = 2 .
Нажмите OK и дождитесь окончания работы.
Сохраните файл PDF. Готово.
источник
Морас решение не работает для меня. Основной проблемой был расчет х5 и х6. Здесь необходимо учитывать смещение, т. Е. Если lowerLeft не равен (0,0)
Итак, вот еще один вариант с дополнительной адаптацией для использования PyPDF2 и python 3:
источник