Как разбить каждую страницу файла djvu?

В файле djvu у него две страницы книги на одной странице djvu. Я хотел бы разбить его так, чтобы одна страница книги на страницу djvu. Например, введите описание изображения здесь

Мне было интересно, можно ли это сделать с помощью какого-либо программного обеспечения, желательно утилит командной строки? Спасибо и приветствую!

PS: Это файл, который можно использовать для тестирования.

Следующее непроверено, но в принципе оно должно работать (я проверю его, если у меня будет больше времени).

Вы можете преобразовать файл djvu, например, в jpg следующим образом:

#!/bin/sh # djvu -> jpgs converter i=1 # number of pages (392) while [ $i -ne 392 ] do ddjvu -page=$i -format=pnm 1.djvu $i.pnm pnmtojpeg $i.pnm > $i.jpg rm -f $i.pnm echo "page $i done" i=`expr $i + 1` done 

(от http://caree.livejournal.com/74639.html )

Затем вы можете использовать scantailor для разделения страниц и создания нового вывода (состоящего из файлов tif).

Примените третий шаг djvubind к этой папке, и вы получите нужный файл djvu.

Вот мой полный рабочий сценарий. Ему нужна библиотека djvulibre-bin для ddjvu (декодирование в tiff-формат), cjb2 (потому что я не знаю, как напрямую преобразовать tiff в djvu), djvm (для вставки / удаления страниц в файле djvu) и библиотеки imagemagick для convert (для разбиения страницы и преобразования в мистический формат файла pbm). Все библиотеки доступны через apt-get .

Схема:

file.djvu –./ ddjvu -> bifold tiff –./ convert -> single page tiff –./ convert -> pbm –./ djvm -> out.djvu

Пример: djvusplit 3 10 file.djvu что означает split pages from 3 to 10 .

Полный код:

 #!/bin/bash echo Usage: djvusplit PAGEFROM PAGETO FILE.DJVU #make temp folder mkdir ./tmp cp "$3" ./tmp/ cd tmp for i in $(seq -w $2 -1 $1) # Descending do ddjvu -format=tiff -page=$i "$3" t$i.tiff convert -crop 2x1@ t$i.tiff t$i-%d.tiff convert t$i-0.tiff t$i-0.pbm convert t$i-1.tiff t$i-1.pbm cjb2 t$i-0.pbm t$i-0.djvu cjb2 t$i-1.pbm t$i-1.djvu djvm -it$i-0.djvu t$i-1.djvu 2 djvm -d $3 $i djvm -i $3 t$i-0.djvu $i rm ./t* done # total clean mv $3 ../out.djvu cd .. rm -r ./tmp 

К сожалению…

  1. Он работает медленно из-за генерации многих файлов tiff / pbm / djvu.
  2. Сплит-страница теряет текст OCR.

Я использую этот скрипт с некоторыми другими для поддержания моей электронной библиотеки. Они расположены здесь, на GitHub.

Существует не так много инструментов, которые могут напрямую работать с файлами DjVu, по сравнению с другими более распространенными форматами, такими как PDF или JPEG. С программами обработки изображений есть дополнительное препятствие, которое в большинстве случаев работает на одном изображении за раз, но файл DjVu содержит несколько страниц.

Одна из возможностей – перейти через pdf. С ddjvu из DjVuLibre , PDF un2up фильтра и pdf2djvu :

 ddjvu -format=pdf 2up.djvu 2up.pdf un2up <2up.pdf | pdf2djvu /dev/stdin >1up.djvu 

Возможно, вы сможете перекопать un2up для djvu, вдохновленного моей pdf-версией, используя python-djvulibre . Я не проверял, насколько сложно войти в API.

Взяв скрипт bot2417 как базу, вот моя собственная

 #!/bin/bash echo "################################################" echo Usage: djvusplit2 LASTPAGE FILE.DJVU echo "################################################" if [ ! -f $2 ]; then echo "file $2 not exists!\n" exit fi start=1 mkdir ./tmp for i in $(seq $start +1 $1) do j=$(($i*2-1)) k=$(($i*2)) # extract pages to tiff format ddjvu -format=pbm -page=$i $2 ./tmp/$i.tiff # split pages convert -crop 2x1@ ./tmp/$i.tiff ./tmp/$i-%d.tiff #delete extracted tiff #rm ./tmp/$i.tiff # convert tiff to djvu pages cjb2 ./tmp/$i-0.tiff ./tmp/$j.djvu cjb2 ./tmp/$i-1.tiff ./tmp/$k.djvu #delete splitted tiffs #rm ./tmp/$i-0.tiff #rm ./tmp/$i-1.tiff # create djvu file and add pages if [ $i -eq 1 ]; then djvm -c "(new) $2" ./tmp/$i.djvu echo "create new $2 OK" djvm -i "(new) $2" ./tmp/$(($i+1)).djvu echo "insert page $(($i+1)) OK" else djvm -i "(new) $2" ./tmp/$j.djvu echo "insert page $j OK" djvm -i "(new) $2" ./tmp/$k.djvu echo "insert page $k OK" fi #delete djvu pages #rm ./tmp/$j.djvu #rm ./tmp/$k.djvu done echo "\nfile (new) $2 created!!!" echo "\n" # cleanup temp dir rm -r ./tmp 

http://en.wikisource.org/wiki/Help:DjVu_files#Splitting_DjVu_files

Надеюсь, вы найдете здесь свой ответ.