Автор Тема: Создание оглавления в djvu  (Прочитано 53898 раз)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #30 : 19 ПЭТРам 2010, 19:36:09 »
Vadik789
Цитировать
Урраааа!!!!!
К сожалению, я, кажется, поторопился. :(

Оказалось всё не так. И в файл εγлχщος.djvu я сейчас ничего не могу вставить - как я раньше вставил и вставил ли - не пойму.

Посмотрел внимательно Ваш пример - test_encodings. Ну ничего я не пойму: Ваш батник не запускается. Но, будучи перемещён в мою папку с примерами - запускается! :o Но делает не то, что в нём прописано - а какую-то, что ли, последнюю успешно выполненную операцию.

Короче, глючит cmd.exe по-чёрному. :( Вытворяет чёрт знает что. Можно попытаться запускать djvused программно через UTF-16 - т.е. не через батники.

Глючат, в общем, батники с Юникодом по-чёрному - совсем на них нельзя положиться. :o Что делать - пока не знаю.

Это глюки с историей cmd.exe - см. http://www.wasm.ru/forum/viewtopic.php?pid=283765

Может, существует какой-то альтернативный командный интерпретатор - корректно работающий с Юникодом (ну, кроме своей самописной программы)?

Вот "подозрительная" информация:

http://old.windowsfaq.ru/winnt/621.html

http://forum.shelek.ru/index.php/topic,2208.0.html

http://www.winpedia.ru/content/view/736/52/

http://anvarichn.livejournal.com/43752.html
« Последнее редактирование: 19 ПЭТРам 2010, 20:02:36 от monday2000 »

Vadik789

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
    • E-mail
Re: Создание оглавления в djvu
« Ответ #31 : 20 ПЭТРам 2010, 02:07:08 »
Самый лучший выход - это обходиться вообще без djvused. Поначалу я так и планировал сделать. Я почитал спецификацию djvu, и оказалось, что структура формата довольно проста и прозрачна (в отличие, скажем, от pdf): нужно лишь вставить блок, отвечающий за оглавление (или, скажем, OCR-слой, в случае программы DjVuOCR), причем выровнять его по четной границе в файле, перед этим сдвинув вправо все остальные блоки, отвечающие за страницы. И подредактировать самый первый блок, указав в нем новые смещения всех блоков-страниц в файле. Ну и также в заголовке файла прописать новый размер всего файла.

Проблема лишь в одном: все блоки с текстовой информацией типа оглавления, аннотаций, OCR-слоя сжимаются архиватором bzz. Нужно из исходников DjVuLibre вычленить кусок кода этого архиватора. Я начал было разбираться, но обнаружил, что там все модули сильно взаимосвязаны между собой, и чтоб вычленить этот код, нужно потратить, наверно, столько же времени, как на написание всей программы. Может быть, попросить Леона, чтоб он вычленил этот кусок кода, этого архиватора, и оформил в виде полностью независимой программы или функции? Или же самому как-то попробовать разобраться с этим.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #32 : 20 ПЭТРам 2010, 09:09:23 »
Vadik789
Цитировать
Самый лучший выход - это обходиться вообще без djvused.
Попробуйте. Посмотрите вот это: http://www.djvu.org/files/DjVuVersion.zip - может подойдёт.
Цитировать
Может быть, попросить Леона, чтоб он вычленил этот кусок кода, этого архиватора, и оформил в виде полностью независимой программы или функции?
Уже есть: http://djvu.sourceforge.net/doc/man/bzz.html

Vadik789

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
    • E-mail
Re: Создание оглавления в djvu
« Ответ #33 : 20 ПЭТРам 2010, 09:42:30 »
Уже есть: http://djvu.sourceforge.net/doc/man/bzz.html
Я это видел. Эта программа "dll-зависимая".  :) Т. е. не работает без остальных длл-лек. А нужно выделить именно кусок кода, отвечающий за архивирование. Посмотрю, что в вашем архиве.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #34 : 20 ПЭТРам 2010, 10:07:15 »
Vadik789
Цитировать
Эта программа "dll-зависимая".
Ну возьмите независимую версию тут:
https://sourceforge.net/projects/djvu/files/DjVuLibre_Windows/3.5.17/ Там есть и исходники под винду, есть и готовые экзешники.
Цитировать
Посмотрю, что в вашем архиве.
Одна из крайне немногочисленных не-DjVuLibre программ, умеющая (ограниченно) работать с DjVu. Модифицируя её, можно достигать некоторых своих задач (на её базе). Я вот уже сделал на её базе программку для подсчёта страниц в DjVu: http://www.djvu-soft.narod.ru/soft/djvucount.rar .
« Последнее редактирование: 20 ПЭТРам 2010, 10:10:17 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #35 : 20 ПЭТРам 2010, 16:46:19 »
Vadik789
Цитировать
Самый лучший выход - это обходиться вообще без djvused.
Но я всё-таки посоветовал бы Вам на первое время оставаться в рамках djvused - ограничившись возможностями английского и русского ввода в DOS-кодировке.

Просто, если Вы сейчас начнёте что-то делать "без djvused" - Вы рискуете увязнуть в этом на долгое время, и огрести уйму лишних глюков (что надолго отсрочит появление новой версии Вашей программы).

Это уже потом, сделав всё на базе djvused, Вы могли бы не спеша делать экспериментальный вариант "без djvused".

Vadik789

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
    • E-mail
Re: Создание оглавления в djvu
« Ответ #36 : 20 ПЭТРам 2010, 17:31:57 »
Просто, если Вы сейчас начнёте что-то делать "без djvused" - Вы рискуете увязнуть в этом на долгое время, и огрести уйму лишних глюков (что надолго отсрочит появление новой версии Вашей программы).
Разумеется. Пусть пока так остается.

Vadik789

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
    • E-mail
Re: Создание оглавления в djvu
« Ответ #37 : 20 ПЭТРам 2010, 17:57:29 »
Разумеется. Пусть пока так остается.
Да и в дальнейшем, пусть, наверно, так и остается, не стоит заново изобретать велосипед и тратить время впустую. Еще и куча ошибок возникнет, как вы сказали.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #38 : 21 ПЭТРам 2010, 16:53:04 »
Vadik789
Насчёт Юникода: я посмотрел - такие программы, как DjVu Hyperlinks Editor, DjVuOCR, DjVu Reader 2.0.0.26, Doc Express Editor 5, Doc Express Editor 6 Win98 оказались не способны открыть файл εγлχщος.djvu.

Но зато программы DjView 4.5, WinDjView 1.0.3 и Doc Express Editor 6 NT без проблем открыли этот файл и также без проблем с ним работали.

Значит, скорее всего, DjVuLibre-утилиты понимают Юникод. Я тут попробовал начать делать демо-утилитку для вызова djvused через Юникод - но в самом cpp-файле имя файла в Юникоде отображается вопросиками :), так что тут надо, видимо, то ли компилятор поновей, чем MS VC++ 6.0, то ли какой-то режим включить особенный.

С другой стороны - раз уж DjVuOCR не умеет работать с Юникодом, и эта проблема никогда не поднималась, то, поскольку DjVuOCR довольно популярная и частоиспользуемая программа, проблема вызова djvused через Юникод, видимо, не слишком актуальна.
« Последнее редактирование: 21 ПЭТРам 2010, 16:55:51 от monday2000 »

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Создание оглавления в djvu
« Ответ #39 : 23 ПЭТРам 2010, 07:16:49 »
Отлаживаю работу программу Djvu Bookmarker в Windows NT 6.X. Для этого создаю dsed-файл в AppData:
C:\Documents and Settings\Andrey\Application Data\Djvu Bookmarker\bookmark.dsed
Посоветуйте, пожалуйста, как теперь мне указать данный путь в команде вставки djvused (сам djvused.exe расположен в Program Files). К примеру, не работает такая комбинация:
djvused.exe "C:\book.djvu" -s -e "set-outline "C:\Documents and Settings\Andrey\Application Data\Djvu Bookmarker\bookmark.dsed""

Хотя если создавать bookmark.dsed в одной папке с djvused.exe, команда
djvused.exe "C:\book.djvu" -s -e "set-outline bookmark.dsed"
отрабатывает нормально...
« Последнее редактирование: 02 ДХТаРЫм 2010, 00:12:38 от 57an »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #40 : 25 ПЭТРам 2010, 09:32:09 »
57an
Разумеется, там же двойные кавычки. Попробуйте так:
Цитировать
djvused.exe "C:\book.djvu" -s -e "set-outline C:\Documents and Settings\Andrey\Application Data\Djvu Bookmarker\bookmark.dsed".
Кстати - расширение "dsed" вовсе не обязательно. Можно использовать, к примеру, "txt".

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Создание оглавления в djvu
« Ответ #41 : 25 ПЭТРам 2010, 17:00:05 »
Еще разок почитал man djvused'a :
Each outline entry is represented by a list with the following form: (title url ... )
The string title is the title of the outline entry. The destination string url can be an arbitrary URL or can be composed of the hash character ("#") followed by either the component file identifier or the page number corresponding to the outline entry. The remaining expressions describe subentries of this outline entry.
Меня интересует этот самый remaining expressions - получается что я могу здесь прописать что угодно - от первоначального номера в бумажной книге, до положения ссылки на странице?

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Создание оглавления в djvu
« Ответ #42 : 25 ПЭТРам 2010, 17:20:35 »
57an
Цитировать
Разумеется, там же двойные кавычки.
То есть, я хотел сказать: "там же двойные двойные кавычки".
Цитировать
Меня интересует этот самый remaining expressions - получается что я могу здесь прописать что угодно - от первоначального номера в бумажной книге, до положения ссылки на странице?
Точно не знаю, но думаю, что нет. Попробуйте поэкспериментровать: сделайте в DjVu-файле какое-нибудь супернавороченное дерево-оглавение (посредством Document Express Editor 6.0) и экспортируйте его в "dsed" (т.е. txt) - через print-outline. И просто посмотрите, что там.

Но, думаю в http://djvu.sourceforge.net/doc/man/djvused.html#lbAW подразумевается, что "remaining expressions" - это те же списки вида (title url ... ) - и ничто не иное.
Цитировать
до положения ссылки на странице
Это не понял. Какое такое "положение ссылки на странице"? Если имеется в виду положение на странице назначения точки, куда попадают, кликая на узел дерева-оглавления, содержащий url - так это всегда верх страницы, Вы же вроде об этом знаете.

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Создание оглавления в djvu
« Ответ #43 : 25 ПЭТРам 2010, 17:38:18 »
Похоже, вы правы. remaining expressions - это всего лишь вложения подуровней... Холостой выстрел.

Vadik789

  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
    • E-mail
Re: Создание оглавления в djvu
« Ответ #44 : 25 ПЭТРам 2010, 18:56:04 »
Если имеется в виду положение на странице назначения точки, куда попадают, кликая на узел дерева-оглавления, содержащий url - так это всегда верх страницы, Вы же вроде об этом знаете.
Так что в конечном итоге думает Леон по поводу такой возможности - чтоб узел в оглавлении указывал на произвольное место в странице? Из форума DjVuLibre я так и не понял, за он или против.