LINUX.ORG.RU

pdf to djvu

 , ,


2

2

имеется такой скрипт из инета:

#!/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=300

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 -r 300 -aa no $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
но возникает ошибка на этой строке: for PBM in $PDF*.pbm; do
так как создаются файлы в виде «001.pdf-001.pbm»
а этот скрипт понимает это как «001.pdf*.pbm»
помогите поправить скрипт.

А зачем ты делаешь вложенный цикл? и вообще это можно сделать все в одном мне кажется.

spock74
()
Ответ на: комментарий от spock74

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

alexmar
() автор топика
Ответ на: комментарий от anonymous

пробовал, и при перекодировании происходит потеря качества картинки, поэтому то и нашел данный скрипт, который вроде как позволяет перекодировать без потери качества.

alexmar
() автор топика
 pdf2djvu creates DjVu files from PDF files. It's able to extract:
  - graphics,
  - text layer,
  - hyperlinks,
  - document outline (bookmarks),
  - metadata (including XMP metadata).

Homepage: http://jwilk.net/software/pdf2djvu
futurama ★★★★★
()
Ответ на: комментарий от futurama

пробовал, происходит потеря качества, менял параметры и все равно картинка становится нечеткой.

alexmar
() автор топика
Ответ на: комментарий от alexmar

нашел данный скрипт, который вроде как позволяет перекодировать без потери качества.

Достоевского не читаль, но осуждаешь? Скрипт не работает, но он лучше?

По теме. Скрипт, вроде, должен работать. Скорее всего, неправильно запускаешь. Показывай выхлоп.

Есть подозрение, что этот скрипт может перепутать страницы (если работает)

anonymous
()
Ответ на: комментарий от alexmar

Ты что-то делал не так

   Resolution, page size
       -d, --dpi=resolution
           Specifies the desired resolution to resolution dots per inch. The default is
           300 dpi. The allowed range is: 72 ≤ resolution ≤ 6000.

проверенно лично 3 года назад

$ grep pdf2djvu .bash_history
pdf2djvu -d 300 scan1-10Jun2016.pdf -o DJVU/scan1-10Jun2016.djvu

подозреваю что заявленные в ман 300dpi по-умолчанию не соотв. действительности и нужно указывать дополнительно

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 2)
Ответ на: комментарий от futurama

могу выложить пример конвертации pdf2djvu с 300дпи, если не верите

alexmar
() автор топика
Ответ на: комментарий от alexmar

лучше или нет еще не знаю )

И твой скрипт и pdf2djvu используют одну и ту же библиотеку poppler: скрипт - через утилиту pdftoppm, pdf2djvu напрямую.
В лучшем случае у скрипта результат будет такой же, как у pdf2dju.

В скрипте:

for PBM in $PDF*.pbm; do

В списке файлов:

001.pdf-1.ppm

Думаю, сам догадаешься, что исправить. Ошибка, скорее всего, специально сделана автором скрипта для (против) таких, как ты.

И, да, скрипт может перепутать страницы из-за неопределенной сортировки имен файлов страниц 001.pdf-[номер].ppm

anonymous
()
Ответ на: комментарий от anonymous

Думаю, сам догадаешься, что исправить. Ошибка, скорее всего, специально сделана автором скрипта для (против) таких, как ты.

Я пробовал и так и сяк, у меня не получилось, поэтому и написал сюда, тем кому не трудно помочь поправить.
Не думаю, что специально такой скрипт выложили, зачем выкладывать нечто кривое? ежели не хочешь не выкладывай вовсе.

И, да, скрипт может перепутать страницы из-за неопределенной сортировки имен файлов страниц 001.pdf-[номер].ppm

как, если номера идут подряд?

alexmar
() автор топика
Ответ на: комментарий от anonymous

с выводом немного напортачил, так как скрипт как раз измененный был, вот такой вывод будет, но итог все равно тот же..

http://paste.ubuntu.com/p/t8qCxcWT3M/

alexmar
() автор топика
Ответ на: комментарий от alexmar

зачем выкладывать нечто кривое?

Вполне возможно, у кого-то эта утилита работала по другому и создавала файлы с такими именами(расширениями). Есть такой мем «УМВР - у меня все работает».

Художника может обидеть каждый. Потому что кривое оно для тебя, а для «художника», создавшего это нечто, - это шедевр.

Почему пишут однострочники, удаляющие всё содержимое файловой системы?
Почему запускают эти однострочники?
Почему существуют те, кто пишет, и те, кто запускают эти однострочники?

как, если номера идут подряд?

Какой правильный порядок 1, 2, 10, 20? Или 1, 10, 2, 20?

anonymous
()
Ответ на: комментарий от anonymous

Какой правильный порядок 1, 2, 10, 20? Или 1, 10, 2, 20?

сейчас проверил, там цифры идут 01, 02,… 10, 11,…
нумерация при таком порядке не должна сбиваться.

alexmar
() автор топика

Разобрался с этим скриптом ), пользуйтесь!
в нем оказывается были перепутаны расширения и утилиты
теперь все отлично конвертирует в djvu, но что интересно, при просмотре djvu нет сглаживания при увеличении, а при просмотре pdf есть, что с этим делать пока не знаю.

#!/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=300

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 -r 300 -aa no $PDF $PDF
 for PPM in $PDF*.ppm; do
  echo $PPM
  c44 -dpi $DPI $PPM $PPM.djvu
  rm -f $PPM
 done
done

djvm -c $OUTFILE $MASK*.ppm.djvu
alexmar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.