如何删除DjVu文件的背景层

如何删除DjVu文件的背景层

我从 Internet Archive 下载了一些文件。它们有不同的文件格式,大多数时候我使用 PDF。但是,有时扫描件保存为彩色而不是黑白。这使得在专用电子书阅读器上阅读变得困难(或不可能)。在这种情况下,我下载了 DjVu 文件,因为在 PC 上您可以选择要查看的图层(彩色、黑白、前景、背景)。

选择黑白可以获得出色的效果。但是,电子书阅读器没有此选项。

问题是,如何从 DjVu 文件中删除或提取某一层并仅保存这一层?

到目前为止,我尝试了以下两种方法:

  1. 在 PC 上的 DjVu 查看器中选择黑白,然后打印到 PostScript 文件。然后进行转换ps2pdf。这可行,但会生成相当大的 PDF 文件。当然,我可以再次将其上传到 any2DjVu,但每个文件似乎都需要大量手动操作。

  2. 我尝试了共享注释功能,并输入了“模式 bw”。此功能在 PC 上按预期运行,但在电子书阅读器上被忽略,因为其他层仍然存在。

答案1

  1. 解绑djvu文件:djvuextract g.djvu BG44=g.c44djvuextract t.djvu Sjbz=t.cjb2
  2. 再次捆绑:djvumake q.djvu INFO=1662,1840 BGbz=\#white Sjbz=t.cjb2 FGbz=\#black

(命令是临时的,我还没有验证它们)

答案2

您需要的程序是 djvups。正如其名称所示,它将从 DjVu 转换为 PostScript,并允许您选择要保留哪些图层(全部、前景、背景或前景蒙版)。试试这个:

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

或者,仅输出前景蒙版:

djvups -mode=black input.djvu output.ps

经过这次转换,ps2pdf 应该可以得到你想要的结果。

答案3

有一种方法,不涉及扩充文件。为了简单起见,我假设只有一个页面文件。也许该方法也可以适用于多个页面。首先使用列出文件中的块djvudump。典型的输出将如下所示:

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

然后您可以提取非背景块。

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

当您创建新文件时未指定任何背景,它将默认为白色。传递给的数字INFO是输出的尺寸和 DPI djvudump

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

可能需要一些脚本才能使其在实践中发挥作用。

答案4

您还可以使用閱讀来自 DjVuLibre。

例如,

ddjvu -mode=black -format=pdf input.djvu ouput.pdf

相关内容