Как удалить фоновый слой из файла DjVu

1460
Jon

Я скачал несколько файлов из интернет-архива. Они приходят в разных форматах файлов, и большую часть времени я использую PDF. Однако иногда сканы сохраняются в цвете, а не в черно-белом. Это затрудняет (или делает невозможным) чтение на специальном устройстве для чтения электронных книг. В этом случае я скачал файлы DjVu, так как на ПК вы можете выбрать, какой слой (цвет, чёрный, передний план, фон) вы хотели бы видеть.

Выбор черно-белого дает отличные результаты. Тем не менее, электронная книга не имеет этой опции.

Вопрос в том, как удалить или извлечь слой из файла DjVu и сохранить только этот слой?

До сих пор я пробовал следующие два подхода:

  1. Выберите черно-белое в программе просмотра DjVu на ПК и распечатайте в файл PostScript. Затем следует ps2pdfконверсия. Это работает, но генерирует довольно большой файл PDF. Конечно, я могу снова загрузить его в any2DjVu, но для каждого файла это просто большая ручная работа.

  2. Я попробовал функцию общей аннотации и сказал "mode bw". Это работает на ПК по желанию, но игнорируется на устройстве для чтения электронных книг, так как другие слои все еще присутствуют.

1

3 ответа на вопрос

1
Vi.
  1. Unbundle файл DjVu: djvuextract g.djvu BG44=g.c44;djvuextract t.djvu Sjbz=t.cjb2
  2. Связать это снова: djvumake q.djvu INFO=1662,1840 BGbz=\#white Sjbz=t.cjb2 FGbz=\#black

(команды являются специальными, я не проверял их)

Спасибо, что указали мне в правильном направлении. Это выглядит многообещающе, но я получаю ошибку. Я прочитаю справочные страницы для команд, которые вы предоставили, и посмотрю, что я сделал неправильно. Jon 13 лет назад 0
0
billyjmc

Программа, которую вы хотите, это djvups. Как и предполагает его название, он будет конвертировать из DjVu в PostScript с бонусом, позволяющим вам выбрать, какие слои сохранить (все, передний план, фон или маску переднего плана). Попробуй это:

djvups -mode=foreground -gray input.djvu output.ps

или просто вывести маску переднего плана:

djvups -mode=black input.djvu output.ps

После этого преобразования ps2pdf должен получить то, что вы хотите.

0
Helmut Grohne

There is a method, that does not involve inflating the file. I'll assume a single page file for simplicity. Maybe the method can be adapted to multiple pages as well. First list the chunks in your file using djvudump. A typical output will look like this:

FORM:DJVU [72422] INFO [10] DjVu 2443x3471, v24, 300 dpi, gamma=2.2 Sjbz [47781] JB2 bilevel data FG44 [3393] IW4 data #1, 100 slices, v1.2 (color), 408x579 BG44 [2611] IW4 data #1, 74 slices, v1.2 (color), 815x1157 BG44 [3307] IW4 data #2, 10 slices BG44 [1208] IW4 data #3, 6 slices BG44 [8543] IW4 data #4, 7 slices 

You can then extract the non-background chunks.

djvuextract input.djvu Sjbz=tmp1 djvuextract input.djvu FG44=tmp2 

When you create a new file without giving any background, it will default to being white. The numbers passed to INFO are the dimensions and the DPI from the djvudump output.

djvumake output.djvu INFO=2443,3471,300 Sjbz=tmp1 FG44=tmp2 

Some scripting is likely needed to make this useful in practice.

Похожие вопросы