Создание документов DJVU в Linux
- 05.01.10, 12:27
aptitude install djview djvulibre-bin netpbmПри сканировании следует именовать файлы подряд так, чтобы они сортировались в порядке нумерации страниц. То есть вот так:
./any2djvu-bwЭта команда - вызов скрипта оболочки, текст которого приведён ниже:
Красным в скрипте выделена строчка, где определяется, какой формат файлов будет преобразован в 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, требуется в текущем каталоге выполнить:#!/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
./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 для «очистки» сканов. Это существенно улучшает их пригодность для последующего компьютерного использования. Ссылки Пост является волным пересказом этой замечательной статьи, тексты скриптов оттуда же. Так же можно прочесть вот это и это. Интересная подборка материалов на русском есть тут.
Коментарі