Популярні приколи

відео

хочу сюди!
 

Марта

48 років, козоріг, познайомиться з хлопцем у віці 50-60 років

Создание документов DJVU в Linux

  • 05.01.10, 12:27
Почему DJVU? Потому, что есть множество отсканированных книг, и есть потребность их компактно хранить и работать с ними. Для этой задачи орлы из AT&T Labs разработали специальные алгоритмы сжатия, которые легли в основу формата DJVU. Такие электронные книги занимают меньше места, чем, скажем, в PDF, PS или других форматах, и быстрее отображаются при просмотре. Что потребуется для создания DJVU файлов из изображений Для того, чтобы сконвертировать много изображений в DJVU нужно установить следующие пакеты:
aptitude install djview djvulibre-bin netpbm
При сканировании следует именовать файлы подряд так, чтобы они сортировались в порядке нумерации страниц. То есть вот так:
000.jpg, 001.jpg, 002.jpg, ..., 012.jpg
а не так:
0.jpg, 1.jpg, 2.jpg, ..., 12.jpg
потому как 12.jpg появится перед 2.jpg - так что при сканировании нужно об этом подумать. Файлы изображений помещаются в отдельный каталог, после чего переходим в этот каталог и даём команду:
./any2djvu-bw
Эта команда - вызов скрипта оболочки, текст которого приведён ниже:

#!/bin/bash # # any2djvu-bw # if [ -z `which anytopnm` -o -z `which ppmtopgm` -o -z `which pgmtopbm`\ -o -z `which cjb2` ]; then usage echo "Error: anytopnm, ppmtopgm, pgmtopbm and cjb2 are needed" echo exit 1 fi shopt -s extglob # DEFMASK="*.jpg" DEFMASK="*.png" DPI=300 # uncomment the following line to compile a bundled DjVu document OUTFILE="#0-bw.djvu" function usage() { echo echo "usage:" echo echo "$0 [\"REGEXP\"]" echo " converts single pages with the default mask $DEFMASK (or REGEXP if provided)" echo " in the current directory to single-page black and white djvu documents" # uncomment the following line to compile a bundled DjVu document echo " and bundles them as a djvu file $OUTFILE" echo } if [ -n "$1" ]; then MASK=$1 else MASK=$DEFMASK fi for i in $MASK; do if [ ! -e $i ]; then usage echo "Error: current directory must contain files with the mask $MASK" echo exit 1 fi if [ ! -e $i.djvu ]; then echo "$i" anytopnm $i | ppmtopgm | pgmtopbm -value 0.499 > $i.pbm # in netpbm >= 10.23 the above line can be replaced with the following: # anytopnm $i | ppmtopgm | pamditherbw -value 0.499 > $.pbm cjb2 -dpi $DPI $i.pbm $i.djvu rm -f $i.pbm fi done # uncomment the following line to compile a bundled DjVu document djvm -c $OUTFILE $MASK.djvu

Красным в скрипте выделена строчка, где определяется, какой формат файлов будет преобразован в DJVU. В данном примере это png. Итак, в результате работы скрипта появятся промежуточные файлы djvu и файл #0-bw.djvu - это и есть конечный файл, содержащий в себе все страницы. Переименовываем его в то, что более приятно глазу, и готово. После этого можно открыть полученный файл при помощи djview или evince.
Так же перевести документы в формат DJVU можно и другими утилитами. any2djvu Это веб-сервис, находящийся тут. Он позволяет перевести отсканированные изображения непосредственно в файл DJVU. Удобно для тех, у кого широкий и дешёвый интернет-канал. Так же можно воспользоваться кодом, предложенным комментатором с OpenNet: #!/usr/bin/perl -w my $i = 0; my @cmds = qw[ djvm -c output.djvu ]; foreach ( <*.*> ) { if (/(.*)\.jpg$/ ){ print "$_\n"; # system("c44", '-crcbfull', $1.'.jpg', $1.'.djvu'); system("cpaldjvu", $1.'.jpg', $1.'.djvu'); $i++; push @cmds, $1.'.djvu'; } elsif (/(.*)\.tif$/ ) { print "$_\n"; # установить 300 dpi в tiff'e #system("tiffset", '-s 296 2', $1.'tiff'); #system("tiffset", '-s 282 300.0', $1.'tiff'); #system("tiffset", '-s 283 300.0', $1.'tiff'); # или # system("cjb2", '-dpi', '300', '-losslevel', '100', $1.'.tiff', $1.'.djvu'); system("cjb2", $1.'.tif', $1.'.djvu'); $i++; push @cmds, $1.'.djvu'; } } print "$i files renamed\n"; system(@cmds); print "\n$cmds[2] created"; Конвертируем PDF-документ в DJVU Сконвертированные документы DJVU из PDF, как правило, имеют меньший размер и гораздо быстрее просматриваются, что особенно актуально для портативных устройств. Для того, чтобы сконвертировать файл PDF в DjVu, требуется в текущем каталоге выполнить:
./pdfs2djvu
Это тоже скрипт на баше, код которого такой:
#!/bin/bash # # pdfs2djvu # if [ -z `which pdftoppm` -o -z `which cjb2` -o -z `which djvm` ]; then echo echo "Error: pdftoppm, cjb2 and djvm are needed" echo exit 1 fi shopt -s extglob OUTFILE="#0.djvu" DEFMASK="*.pdf" DPI=600 if [ -n "$1" ]; then MASK=$1 else MASK=$DEFMASK fi for PDF in $MASK; do if [ ! -e $PDF ]; then echo echo "Error: current directory must contain files with the mask $MASK" echo exit 1 fi echo $PDF pdftoppm -mono -r 600 -aa yes $PDF $PDF for PBM in $PDF*.pbm; do echo $PBM cjb2 -dpi $DPI $PBM $PBM.djvu rm -f $PBM done done djvm -c $OUTFILE $MASK*.pbm.djvu
Выполнение скрипта приведёт к тому, что все файлы PDF в текущей директории будут сконвертированы в DJVU. Аналогом является программа от Гугл под названием dpf2djvu. Единственное условие: скрипт не переваривает кириллические названия с пробелами. Так что желательно временно переименовать файл так, чтобы он содержал только латинские символы и желательно без пробелов. Ещё можно попробовать программу
gscan2pdf, которая позволяет сканировать изображения в форматы PDF и DJVU. Так же вам может пригодиться программа unpaper для «очистки» сканов. Это существенно улучшает их пригодность для последующего компьютерного использования. Ссылки Пост является волным пересказом этой замечательной статьи, тексты скриптов оттуда же. Так же можно прочесть вот это и это. Интересная подборка материалов на русском есть тут.
            
0

Коментарі