Нет проблемы быстро сканировать документы с любым количеством страниц, если под рукой есть сканер с устройством автоматической подачи. Однако часто МФУ имеют дуплексную двустороннюю печать и сканер, который умеет сканировать только с одной стороны, но имеет устройство автоматической подачи документов.
При этом сканирование больших двухсторонних документов выглядит проблемой, которая поедает большое количество времени.
![Инструкция, которую надо сканировать и она частично распечатана с двух сторон Инструкция, которую надо сканировать и она частично распечатана с двух сторон](https://habrastorage.org/getpro/habr/upload_files/427/607/ccb/427607ccb80bb534db495cf854d4bed3.jpg)
Ведь если документ состоит всего из нескольких страниц, то нет необходимости связываться с командной строкой, потому что можно вручную склеить сканы в любой программе, которая работает с PDF, просто переставив местами страницы или даже вручную перевернув их на сканере.
Но что если документ А4 формата имеет несколько десятков или даже сотен страниц как на фотографии?
TL;DR
Решение: используйте консольную программу PDFtk:
pdftk
A="Лицевая сторона.pdf"
B="Оборотная сторона.pdf"
shuffle A1-end Bend-1
output "Готовый скан.pdf"
Сосканируйте лицевые и оборотные стороны в два отдельных файла
Расшейте документ перед сканированием и убедитесь что не осталось скрепок, скрепляющих листы.
Неважно насколько толстый по объему документ — при сканировании пачки можно разбить все страницы на небольшие группы и добавлять содержимое в один файл — во многих программах сканирования это делает кнопкой добавить
.
![Сканирование лицевых сторон Сканирование лицевых сторон](https://habrastorage.org/getpro/habr/upload_files/e0c/df8/af1/e0cdf8af174de9da42f593bdba44116c.jpg)
После того как сканирование лицевых сторон завершено вы получите многостраничный файл с условным названием Лицевая сторона.pdf
.
Дальше переворачиваем все страницы чтобы оборотная сторона стала лицевой. При этом некоторые оборотные страницы могут быть пустые — ничего разбирать или убирать не надо.
Сканируем через автоподатчик все страницы, которые теперь оказались в обратном порядке, в том числе и пустые.
![Сканирование оборотных сторон Сканирование оборотных сторон](https://habrastorage.org/getpro/habr/upload_files/079/01a/844/07901a844a1ace74c5f7021a12f213e3.jpg)
После того как сканирование оборотных сторон завершено вы получите ещё один многостраничный файл, но уже с другим условным названием — Оборотная сторона.pdf
.
При этом страницы в нём будут идти в обратном порядке: от самой последней к самой первой.
Магия программы PDFtk
PDFtk (сокращение от PDF Toolkit) — это инструмент командной строки для работы с PDF‑файлами. Он позволяет пользователям объединять несколько PDF‑файлов в один документ, разбивать PDF‑документ на несколько меньших документов, поворачивать страницы, добавлять водяные знаки, прикреплять файлы к PDF‑файлам и многое другое.
PDFtk доступен для Windows, macOS и Linux и может использоваться вместе с другими инструментами командной строки или сценариями для автоматизации задач, связанных с PDF. PDFtk также можно использовать в качестве библиотеки для таких языков программирования, как Python и Ruby.
PDFtk больше не поддерживается, но его функциональность по‑прежнему полезна. Альтернативы PDFtk включают, среди прочего, QPDF, PyPDF2 и pdftk‑java.
Как установить программу PDFtk
Процесс установки PDFtk зависит от вашей операционной системы. Вот шаги для установки PDFtk в Windows, macOS и Linux:
Windows:
Загрузите установщик PDFtk с веб-сайта PDFtk: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Дважды щелкните загруженный файл, чтобы запустить программу установки.
Следуйте инструкциям программы установки, чтобы завершить процесс установки.
После завершения установки откройте командную строку и введите
pdftk
, чтобы убедиться, что инструмент успешно установлен.
macOS:
-
Установите Homebrew (если он еще не установлен), введя в Терминале следующую команду:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
После установки Homebrew введите в Терминале следующую команду, чтобы установить PDFtk:
brew install pdftk
После завершения установки введите
pdftk
в Терминале, чтобы убедиться, что инструмент успешно установлен.
Linux:
-
Откройте Терминал и введите следующую команду для установки PDFtk:
sudo apt-get install pdftk
-
После завершения установки введите
pdftk
в Терминале, чтобы убедиться, что инструмент успешно установлен.Примечание. Приведенные выше инструкции предназначены для установки PDFtk в дистрибутиве Linux на основе Ubuntu. Процесс установки может отличаться для других дистрибутивов Linux.
Склеиваем два сканированных файла в один
Теперь в одной папке находятся два файла:
Лицевая сторона.pdf
— в котором прямой порядок страниц.Оборотная сторона.pdf
— где обратный порядок страниц: от самой последней к самой первой.
Вызываем в терминале команду:
pdftk A="Лицевая сторона.pdf" B="Оборотная сторона.pdf" shuffle A1-end Bend-1 output "Готовый скан.pdf"
![pdftk под Windows pdftk под Windows](https://habrastorage.org/getpro/habr/upload_files/c02/074/09b/c0207409b0fcde8f7e5d7ac525395dd6.png)
pdftk
под WindowsЕсли всё прошло успешно, то программа не выдаёт никакой информации об ошибках.
Проверяйте папку, где появился файл Готовый скан.pdf.
![Готовый скан на 162 страницы Готовый скан на 162 страницы](https://habrastorage.org/getpro/habr/upload_files/089/3a8/338/0893a833848cec6a5b9fb72c52b51995.png)
На этом миссия выполнена — после склейки получается обычный скан с нормальным порядком страниц. Дополнительно, пустые страницы можно удалить отдельно.
Что в итоге
Если к вас нет двухстороннего сканера, то работа с PDFtk через командную строку полностью решает проблему двустороннего сканирования независимо от того Linux, Windows или macOS вы используете.
Автор: Михаил Шардин,
15 марта 2023 г.
Комментарии (31)
ts347
00.00.0000 00:00+10Задумался, а нет ли в моей любимой программе PDF24 такой функции. Посмотрел — конечно, есть. Модуль "Объединить PDF", метод — "Сопоставить".
Всем настоятельно рекомендую эту бесплатную и невероятно мощную программу. Всё, что мне до сих пор приходило в голову делать с PDF — она может.
Dakar
00.00.0000 00:00+2Поддерживаю. Очень удобная программа. Еще бы нумерацию страниц могла проставлять - было б вообще супер. Ради простановки страниц однажды я и познакомился с PDFtk, если память не измееяет.
ts347
00.00.0000 00:00+1В текущей версии умеет.
У них некоторое время назад произошло мощное обновление, в результате которого количество функций выросло раза в три.
empenoso Автор
00.00.0000 00:00Adobe Acrobat DC и PDF-Xchange почему-то такого функционала не имеют ????♂️
IDDQDesnik
00.00.0000 00:00+1В качестве альтернативы так же есть бесплатный опенсорсный PDFSAM Basic.
Javian
00.00.0000 00:00+1off А чем можно "ремонтировать" PDF? Для файлов, которые "Файл поврежден и не может быть восстановлен."
aborouhin
00.00.0000 00:00+1Я использую PDF X-Change, но она платная :(
При открытии битого файла сразу предлагает сохранить исправленную копию. Рутинное действие для квитанций об отправке электронного заказного письма Почтой России, которые всегда скачиваются с их сайта битыми (не знаю, что они там напортачили).
tkl
00.00.0000 00:00+2можно попробовать cpdf или ghostscript
https://www.coherentpdf.com/cpdfmanual/cpdfmanualch1.html#x5-350001.13
когда-то давно помогло починить побитые какой-то питоновской либой файлы
valeriyvan
00.00.0000 00:00На macOS невозможно установить при помощи brew:
brew install pdftk Running `brew update --auto-update`... ==> Auto-updated Homebrew! Updated 4 taps (homebrew/bundle, homebrew/services, homebrew/core, and homebrew/cask). ==> New Formulae aztfy ==> New Casks irpf2021 irpf2022 keyfinder scansion Warning: Calling plist_options is deprecated! Use service.require_root instead. Please report this issue to the appveyor/brew tap (not Homebrew/brew or Homebrew/homebrew-core), or even better, submit a PR to fix it: /opt/homebrew/Library/Taps/appveyor/homebrew-brew/Formula/appveyor-server.rb:33 You have 39 outdated formulae and 3 outdated casks installed. You can upgrade them with brew upgrade or list them with brew outdated. Warning: No available formula with the name "pdftk". Did you mean pdftoipe? ==> Searching for similarly named formulae and casks... ==> Formulae pdftk-java pdftoipe To install pdftk-java, run: brew install pdftk-java
empenoso Автор
00.00.0000 00:00К сожалению лично у меня нет macOS - может быть кто-то из пользователей подскажет.
aborouhin
00.00.0000 00:00+1Способ хороший, но для большинства пользователей, сканирующих документы, что-то запустить из командной строки - недостижимые высоты мастерства :) (работаю с юристами)
Благо, сканирование в 90% случаев предполагает и OCR сразу, а FineReader так делать тоже умеет из коробки.
empenoso Автор
00.00.0000 00:00Думаю, что согласен на счёт недостижимых высот мастерства :) правда это печально.
У меня например для этих больших документов OCR не предполагался - там всякие сертификаты в основном.aborouhin
00.00.0000 00:00+1Ну в FineReader можно, в принципе, и без OCR это сделать, раз уж он ради OCR куплен и установлен. Но у OCR, даже если не текстовый слой сам особо не нужен, ещё плюс в том, что листы автоматически поворачивает в зависимости от содержимого (когда в середине документа листов на 300 три широких таблички по 10 листов каждая в альбомной ориентации - бесит). Хотя для простых случаев, согласен, из командной строки мне самому было бы проще.
vassabi
00.00.0000 00:00+2эх! а я писал скрипт на питоне
from PyPDF2 import PdfFileWriter, PdfFileReader
from PIL import Image### и там далее:
### читаем из pdf страницы как картинки,
### делаем что угодно с картинками,
### сохраняем картинки как страницы в pdf
falconandy
00.00.0000 00:00+1Для манипуляций с PDF есть еще такая утилита pdfcpu. Написана на Go, может использоваться как библиотека из своих go-программ.
imageman
00.00.0000 00:00+1Есть еще вариант. Сканируем все (пусть даже) в pdf. Из pdf делаем одностраничные pdf (в Акробате extract pages). Получаем набор pdf, который нужно правильно переименовать. Для этого в Total Commander (или любой другой программе для переименования) вызываем Multi-rename tool. И делаем шаблон с [C] в одном случае start - 1; step - 2, а в другом start - 2; step - 2 (digits - 4). Т.е. любым доступным способом делаем так, что бы при сортировке по алфавиту номера страниц были правильные. После этого объединяем получившиеся pdf в один (можно через Акробат).
empenoso Автор
00.00.0000 00:00Но мой вариант кажется проще :)
imageman
00.00.0000 00:00PDFtk "инструмент командной строки" - эти три слова многих современных специалистов (не говоря уже о пользователях) вгоняют в скуку и депрессию :-) Поэтому альтернативный вариант кому-то может оказаться проще - нужно всего-то разбить документы постранично, правильно переименовать файлы и собрать обратно все файлы в один документ.
sevmax
Спасибо! Сканирую редко, но этот подход реально может сэкономить время!
empenoso Автор
Да, пришлось разбираться и мне тоже было очень странно почему такие гиганты как тот же акробат не умеют постранично объединять два файла.