在 djvu 文件中,一个 djvu 页面中有两本书页。我想将其拆分,以便每个 djvu 页一页。例如,
我想知道这是否可以通过某些软件(最好是命令行实用程序)来完成?感谢致敬!
PS:这是一份文件可以用于测试。
答案1
以下未经测试,但原则上它应该有效(如果我有更多时间,我会测试它)。
例如,您可以将 djvu 文件转换为 jpg,如下所示:
#!/bin/sh
# djvu -> jpgs converter
i=1
# number of pages (392)
while [ $i -ne 392 ]
do
ddjvu -page=$i -format=pnm 1.djvu $i.pnm
pnmtojpeg $i.pnm > $i.jpg
rm -f $i.pnm
echo "page $i done"
i=`expr $i + 1`
done
(从http://caree.livejournal.com/74639.html)
然后你可以使用扫描裁缝分割页面并生成新的输出(由 tif 文件组成)。
第三步申请djvbind到该文件夹,您将获得所需的 djvu 文件。
答案2
这是我完整的工作脚本。它需要djvulibre-bin
库ddjvu
(解码为tiff格式),cjb2
(因为我不知道如何直接将tiff转换为djvu),djvm
(用于在djvu文件中插入/删除页面)工具和imagemagick
库convert
(用于分割页面并转换为神秘的) pbm 文件格式)工具。所有库都可以通过apt-get
.
方案:
file.djvu --./ddjvu--> 双折 tiff --./convert--> 单页 tiff --./convert--> pbm --./djvm--> out.djvu
示例:djvusplit 3 10 file.djvu
这意味着split pages from 3 to 10
.
完整代码:
#!/bin/bash
echo Usage: djvusplit PAGEFROM PAGETO FILE.DJVU
#make temp folder
mkdir ./tmp
cp "$3" ./tmp/
cd tmp
for i in $(seq -w $2 -1 $1) # Descending
do
ddjvu -format=tiff -page=$i "$3" t$i.tiff
convert -crop 2x1@ t$i.tiff t$i-%d.tiff
convert t$i-0.tiff t$i-0.pbm
convert t$i-1.tiff t$i-1.pbm
cjb2 t$i-0.pbm t$i-0.djvu
cjb2 t$i-1.pbm t$i-1.djvu
djvm -i t$i-0.djvu t$i-1.djvu 2
djvm -d $3 $i
djvm -i $3 t$i-0.djvu $i
rm ./t*
done
# total clean
mv $3 ../out.djvu
cd ..
rm -r ./tmp
很遗憾...
- 由于生成许多 tiff/pbm/djvu 文件,它的运行速度很慢。
- 拆分页面会丢失所有 OCR 文本。
我使用这个脚本和其他一些脚本来维护我的电子图书馆。他们找到了这里在 GitHub 上。
答案3
与 PDF 或 JPEG 等其他更常见的格式相比,没有那么多工具可以直接操作 DjVu 文件。对于图像处理程序来说,存在一个额外的障碍:大多数这些程序一次只能对单个图像进行操作,但 DjVu 文件包含多个页面。
一种可能性是通过 pdf 进行查看。与ddjvu
从自由DJ,PDFun2up
过滤器, 和pdf2djvu:
ddjvu -format=pdf 2up.djvu 2up.pdf
un2up <2up.pdf | pdf2djvu /dev/stdin >1up.djvu
受我的启发,你也许能够为 djvu 拼凑出一个 un2uppdf版本使用python-djvulibre。我还没有检查过该 API 有多难进入。