Автор Тема: Консольный аналог DjVu Hyperlinks Editor  (Прочитано 2653 раз)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Я сделал консольную утилиту, выполняющую ту же работу, что и DjVu Hyperlinks Editor. Назвал её "contentm".

Скачать утилиту:

contentm

http://www.djvu-soft.narod.ru/soft/contentm.rar  (118 КБ)  (Исходники внутри)

Эта утилита принимает на входе DjVuXML-файл, созданный из ОДНОЙ DjVu-страницы с книжным оглавлением, и автоматически создаёт в копии этого DjVuXML-файла гиперссылочное оглавление. Поддерживается также сдвиг нумерации, и опциональный разделяющий символ (между номером страницы и его бессмысленным числовым префиксом).

Причины создания этой утилиты:

1. Попалась мне книга, где номер страницы имеет вид "1-1" - где первая единица - номер тома, и только вторая - номер страницы. DjVu Hyperlinks Editor не справился с таким оглавлением. Автор DjVu Hyperlinks Editor не ответил на просьбу о помощи. Вот и пришлось сделать свою аналогичную утилиту.

2. Побочный эффект: моя утилита написана на чистом С++ STL с использованием кроссплатформенной XML-библиотеки pugixml, и может скомилироваться на любой платформе.

3. Открытые исходники.

4. В дальнейшем можно будет прикрутить к утилите визуальный интерфейс.

Использование:

Вот как выглядел бы bat-файл, использующую эту утилиту:
djvutoxml --page 5 --without-anno file.djvu input.xml
contentm input.xml output.xml -s - -p 1
djvuxmlparser -o file.djvu output.xml
pause

У нас есть DjVu-файл "file.djvu". На его 5-ой странице начинается книжное оглавление. Вытаскиваем OCR-слой с 5-ой страницы в файл input.xml (гиперссылки не извлекаем).

При помощи contentm добавляем в input.xml гиперссылки со сдвигом нумерации на 1 страницу и с разделяющим символом "-". Получаем output.xml.

Вставляем output.xml обратно в исходный DjVu-файл "file.djvu". Получаем на его 5-ой странице готовое гиперссылочное оглавление.

Ту же самую процедуру необходимо проделать для ВСЕХ страниц DjVu-файла, содержащих гиперссылочное оглавление.

DjVu Hyperlinks Editor полезная программа, но немного глючная, и не очень удобная. С английской локализацией там не всё гладко (автор сказал, что совсем не знает английский язык). Да и исходники зачем-то закрыты.
« Последнее редактирование: 07 ёоЭм 2011, 16:42:33 от monday2000 »

uunreal666

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Консольный аналог DjVu Hyperlinks Editor
« Ответ #1 : 26 ЅЮпСам 2011, 02:18:55 »
Прога почему-то не создает гиперссылку на самую нижнюю строку на странице.
И можно ли сделать экспорт обработанного не только в xml, но и в dsed-файл для djvused?
Т.к. в некоторых случаях эти xml-аннотации не импортируются (размер файла растет, но аннотаций не видно и не экспортируются, и притом WinDjView начинает вылетать на таком файле), притом что djvused их импортирует нормально.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Консольный аналог DjVu Hyperlinks Editor
« Ответ #2 : 30 ЅЮпСам 2011, 09:11:21 »
uunreal666
Цитировать
Прога почему-то не создает гиперссылку на самую нижнюю строку на странице.
Это не удивительно, потому что вообще задача генерации гиперссылочного оглавления тяжело автоматизируется - слишком велико разнообразие случаев условия, и зачастую слишком малы "зацепки" в тексте, чтобы правильно определить - то ли это пункт оглавления, то ли просто параграф.

Давайте пример, я попробую под него подстроить прогу.
Цитировать
И можно ли сделать экспорт обработанного не только в xml, но и в dsed-файл для djvused?
По идее можно, но мне это не интересно, по крайней мере пока. Мне кажется, что XML более удобен и популярен, нежели чем формат dsed-файлов (Lisp)
Цитировать
Т.к. в некоторых случаях эти xml-аннотации не импортируются (размер файла растет, но аннотаций не видно и не экспортируются, и притом WinDjView начинает вылетать на таком файле)
Это, скорее всего, значит, что djvuxml имеет какой-то глюк - который нужно найти и устранить. В таких случаях присылайте мне образец проблемного файла - буду с ним разбираться.

ivt

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
    • E-mail
Re: Консольный аналог DjVu Hyperlinks Editor
« Ответ #3 : 06 °ЯаХЫм 2015, 20:11:55 »
Цитировать
Прога почему-то не создает гиперссылку на самую нижнюю строку на странице.
Показал исходники знакомому программисту, объяснил суть задачи. Он сказал что проблема здесь (файл contentm.cpp):
for (int j=0; j<lines.size()-1; j++)нужно заменить на
for (int j=0; j<lines.size(); j++)или
for (int j=0; j<=lines.size()-1; j++)Суть думаю понятна: в исходном варианте последняя линия просто не попадала в цикл обработки. Исправление же расширяют границы цикла чтобы он охватывал все линии  (от 0 до lines.size()-1 включительно).
Пробовал собрать с исправлениями  в QtCreatore, собралось, работает вроде правильно (проверял на этих файлах).

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

Cromosnub

  • Новичок
  • *
  • Сообщений: 2
    • ICQ клиент - 173117175
    • MSN клиент - amphoviti1989@yandex.ru
    • Просмотр профиля
    • E-mail
Консольный аналог DjVu Hyperlinks Editor
« Ответ #4 : 23 ґХЪРСам 2015, 15:07:22 »
Вы абсолютно правы. В этом что-то есть и это отличная идея. Готов Вас поддержать.

MurielPoli

  • Новичок
  • *
  • Сообщений: 2
    • ICQ клиент - 276314158
    • MSN клиент - ilagps@gmail.com
    • Просмотр профиля
    • E-mail
Консольный аналог DjVu Hyperlinks Editor
« Ответ #5 : 14 ПЭТРам 2016, 11:33:22 »
Anyone know where I could still find the trial version of DjVu Editor Pro 4.0? 

I need to convert DjVu to PDF sorry , and doing it page by page when I have 97 documents, some with a few hundred pages is really out of the question.

Thanks,
Dan

Pamelafads

  • Новичок
  • *
  • Сообщений: 1
    • ICQ клиент - 355174734
    • MSN клиент - wehgro@gmail.com
    • Просмотр профиля
    • E-mail
Консольный аналог DjVu Hyperlinks Editor
« Ответ #6 : 18 ПЭТРам 2016, 22:05:18 »
You could also try printing from the djvu viewer through a pdf printer driver such as pdfCreator.

The file size is large, the text is a pdf graphic, but it can be done and not one page at a time.

KennethKt

  • Новичок
  • *
  • Сообщений: 2
    • ICQ клиент - 353584251
    • MSN клиент - woembk@gmail.com
    • Просмотр профиля
    • E-mail
Консольный аналог DjVu Hyperlinks Editor
« Ответ #7 : 31 ПЭТРам 2016, 19:39:51 »
I was wondering if there are some GUI editors for editing bookmarks of djvu files?

For example, link a current bookmark item to a specific page such as the current page.

My OS is Ubuntu, but Windows applications are also nice to know.

Thanks and regards

skameykin22

  • Новичок
  • *
  • Сообщений: 1
    • ICQ клиент - 982256
    • MSN клиент - nik.skameykin@inbox.ru
    • Просмотр профиля
    • продажа  полусфер бетонных
Re: Консольный аналог DjVu Hyperlinks Editor
« Ответ #8 : 20 ґХЪРСам 2016, 11:04:13 »
А что, интересное предложение.