- Unbundle файл DjVu:
djvuextract g.djvu BG44=g.c44
;djvuextract t.djvu Sjbz=t.cjb2
- Связать это снова:
djvumake q.djvu INFO=1662,1840 BGbz=\#white Sjbz=t.cjb2 FGbz=\#black
(команды являются специальными, я не проверял их)
Я скачал несколько файлов из интернет-архива. Они приходят в разных форматах файлов, и большую часть времени я использую PDF. Однако иногда сканы сохраняются в цвете, а не в черно-белом. Это затрудняет (или делает невозможным) чтение на специальном устройстве для чтения электронных книг. В этом случае я скачал файлы DjVu, так как на ПК вы можете выбрать, какой слой (цвет, чёрный, передний план, фон) вы хотели бы видеть.
Выбор черно-белого дает отличные результаты. Тем не менее, электронная книга не имеет этой опции.
Вопрос в том, как удалить или извлечь слой из файла DjVu и сохранить только этот слой?
До сих пор я пробовал следующие два подхода:
Выберите черно-белое в программе просмотра DjVu на ПК и распечатайте в файл PostScript. Затем следует ps2pdf
конверсия. Это работает, но генерирует довольно большой файл PDF. Конечно, я могу снова загрузить его в any2DjVu, но для каждого файла это просто большая ручная работа.
Я попробовал функцию общей аннотации и сказал "mode bw". Это работает на ПК по желанию, но игнорируется на устройстве для чтения электронных книг, так как другие слои все еще присутствуют.
djvuextract g.djvu BG44=g.c44
;djvuextract t.djvu Sjbz=t.cjb2
djvumake q.djvu INFO=1662,1840 BGbz=\#white Sjbz=t.cjb2 FGbz=\#black
(команды являются специальными, я не проверял их)
Программа, которую вы хотите, это djvups. Как и предполагает его название, он будет конвертировать из DjVu в PostScript с бонусом, позволяющим вам выбрать, какие слои сохранить (все, передний план, фон или маску переднего плана). Попробуй это:
djvups -mode=foreground -gray input.djvu output.ps
или просто вывести маску переднего плана:
djvups -mode=black input.djvu output.ps
После этого преобразования ps2pdf должен получить то, что вы хотите.
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.