Скрипт был проверен с выводом из программы ScanTailor Advanced, но, вероятно, будет работать и с любым другим набором бинарных и смешанных страниц.
Просто скачайте Makefile
и поместите его рядом с директорией out/
,
содержащей вывод из ScanTailor:
$ cd ~/MyLibrary/MyNewBook
$ ls
out/ MyNewBook.ScanTailor
$ wget https://github.com/pavrorov/makedjvu/blob/main/Makefile
Также можно склонировать репозиторий и затем скопировать из него
Makefile
в директорию книги:
$ git clone https://github.com/pavrorov/makedjvu.git
$ cd makedjvu
$ cp Makefile ~/MyLibrary/MyNewBook
$ cd ~/MyLibrary/MyNewBook
Для работы скрипт нуждается в следующем ПО:
- GNU Coreutils (https://www.gnu.org/software/coreutils/coreutils.html).
- GNU Make (https://www.gnu.org/software/make/).
- ImageMagick (https://imagemagick.org/index.php).
- Utils from the DjVuLibre project (http://djvu.sourceforge.net/).
При этом предполагается, что в системе доступны следующие команды:
make
, tr
, cat
, sed
, identify
, convert
, cjb2
, c44
,
djvumake
, djvuextract
, djvm
.
Для того, чтобы собрать книгу в DjVu просто скомандуйте:
make
Однако перед тем, как запускать процесс стоит ознакомиться с тем, как
и что будет сделано. Для этого есть команда make info
:
$ make info
Book name: MyNewBook.djvu
Mixed pages: out/00-front.tif out/page-0002_1L.tif out/zz-back.tif
Cover pages: out/00-front.tif out/zz-back.tif
C44 options: (default)
CJB2 options: -lossy -clean
Mask threshold: 1%
Cover dpi: 100
Workdir: djvudir
Прежде всего она выведет имя файла будущей книги. Имя файла получается
из имени директории, в которой располагается Makefile
. Однако
обратите внимание на то, что все пробелы в имени файла будут заменены
на _
. Это связано с особенностями работы make
.
Следом идут списки смешанных (mixed) страниц (т. е. с иллюстрациями) и обложек (cover pages). За переднюю и заднюю обложки принимаются первая и последняя страницы вывода, если они были записаны в смешанном режиме. Бинарные обложки обрабатываются в как и любые другие страницы.
После списков особых страниц команда выводит параметры
обработки. Справку по параметрам утилиты c44
см. в странице
руководства c44(1)
, а для справки по команде cjb2
обратитесь,
пожалуйста, к cjb2(1)
. Параметр "mask threshold" — это пороговое
значение белого, которое будет используется для разделения смешанного
вывода на передний и задний план.
Пожалуйста обратите внимание на то, что текущая версия Makefile
не
поддерживает режим "раздельного вывода" программы ScanTailore для
смешанных страниц. Для разделения таких страниц на передний и задний
план скрипт вместо этого использует пороговый фильтр. При этом
значение порога по умолчанию равное 1% кажется вполне разумным, так
как известно, что ScanTailor всегда дотягивает передний план смешанных
страниц до полностью чёрного.
Следующий параметр, на который нужно обратить внимание, — это чёткость обложек (cover DPI). Тогда как все другие (включая и смешанные) страницы книги обрабатываются как есть, чёткость изображений обложек по умолчанию уменьшается. Почему? Потому что с моей точки зрения не совсем хорошо (а вернее, совсем не хорошо), когда размер файла книги получается в 3-5 раз больше того, каким он мог бы быть, только из-за наличия обложек.
Последняя строчка указывает имя рабочей директории для записи промежуточных файлов.
Значения по умолчанию всех перечисленных и некоторых других параметров могут быть изменены передачей аргументов командной строки. К примеру, используйте команду:
make CJB2_OPTS="-losslevel 0"
для того, чтобы при упаковке изображений TIFF в DjVu не вносилось никаких изменений.
Другой пример: обработка директории со страницами отличной от
out/
, с файлами в формате PNG:
make PAGESUF=.png PAGEDIR=pngdir
Указанная команда будет искать PNG-файлы страниц в директории pngdir/
.
Полный список поддерживаемых опций:
Опция | Комментарий | Значение по умолчанию |
---|---|---|
PAGEDIR |
Директория со страницами. | out |
PAGESUF |
Суффикс файлов страниц (включая точку). | .tif |
C44 |
Имя (путь) команды c44 . |
c44 |
CJB2 |
Имя (путь) команды cjb2 . |
cjb2 |
CONVERT |
Имя (путь) команды convert . |
convert |
IDENTIFY |
Имя (путь) команды identify . |
identify |
DJVUMAKE |
Имя (путь) команды djvumake . |
djvumake |
DJVUEXTRACT |
Имя (путь) команды djvuextract . |
djvuextract |
DJVM |
Имя (путь) команды djvm . |
djvm |
C44_OPTS |
Опции c44 . |
(без опций) |
CJB2_OPTS |
Опции cjb2 . |
-lossy -clean |
THRESHOLD |
Пороговое значение белого для разделения смешанных страниц. | 1% |
COVER_DPI |
DPI для уменьшения чёткости обложек. | 100 |
NAME |
Имя файла книги (без суффикса) | На основе имени |
текущей директории, с пробелами заменёнными на_ . |
||
FILENAME |
Имя файла книги. | NAME + .djvu |
WORKDIR |
Имя директории для записи промежуточных файлов. | djvudir |
makedjvu
— сборка книги в DjVu из набора страниц.
(C) 2021 Павел Авроров.
Данная программа является свободным программным обеспечением. Вы вправе распространять ее и/или модифицировать в соответствии с условиями версии 2 либо по вашему выбору с условиями более поздней версии Стандартной Общественной Лицензии GNU, опубликованной Free Software Foundation.
Мы распространяем данную программу в надежде на то, что она будет вам полезной, однако НЕ ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ, в том числе ГАРАНТИИ ТОВАРНОГО СОСТОЯНИЯ ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ. Для получения более подробной информации ознакомьтесь со Стандартной Общественной Лицензией GNU.
Вместе с данной программой вы должны были получить экземпляр Стандартной Общественной Лицензии GNU. Если вы его не получили, обратитесь к https://www.gnu.org/licenses/.