未曾生我谁是我

发布于     更新于
Linux 下处理分割与合并 PDF

来时糊涂去时迷,空在人间走这回, 未曾生我谁是我?生我之时我是谁? 长大成人方是我,合眼朦胧又是谁? 不如不来又不去,来时欢喜去时悲。

Linux 下处理分割与合并 PDF;

有这样的需求,从 Z-lib 上下载的日文原版 PDF 书籍,想要翻译成中文来阅读。首先有一些翻译网站支持文档翻译的功能,但使用过程中发现可用的不多:

  • 谷歌翻译:不支持扫描版PDF;
  • DeepL:翻译出错,上限 5M;
  • 有道:仅支持中英;
  • 必应:不支持文档;
  • 火山:不支持文档;
  • 彩云:出错;
  • 腾讯:不支持文档;
  • 搜狗:目前可用,上限 10M;

因为是比较大的文件,所以思路是 pdf分割——上传到网站——翻译——下载——pdf合并。一开始找了几个 pdf 网站,发现不太好用,搜到可以用命令行解决。

分割 PDF

安装 pdftk

sudo apt install pdftk

首先设置好要分割的页数,比如每 20 页一个 pdf 文件:有 160 多页,所以分割成 9 个文件:

Array.from({length:9}).map((x,i)=>`pdftk 超技巧人物作画.pdf cat ${(i+1)*20-19}-${(i+1)*20} output out-${i}.pdf`).join('\n') 

用控制台生产要运行的命令,因为不到 180 页,直接 161-180 会报错。所以手动将最后一条命令改成 161-end

pdftk 超技巧人物作画.pdf cat 1-20 output out-0.pdf
pdftk 超技巧人物作画.pdf cat 21-40 output out-1.pdf
pdftk 超技巧人物作画.pdf cat 41-60 output out-2.pdf
pdftk 超技巧人物作画.pdf cat 61-80 output out-3.pdf
pdftk 超技巧人物作画.pdf cat 81-100 output out-4.pdf
pdftk 超技巧人物作画.pdf cat 101-120 output out-5.pdf
pdftk 超技巧人物作画.pdf cat 121-140 output out-6.pdf
pdftk 超技巧人物作画.pdf cat 141-160 output out-7.pdf
pdftk 超技巧人物作画.pdf cat 161-end output out-8.pdf

合并 PDF

上传和下载好之后,安装 poppler 合并 PDF:

sudo apt-get install libpoppler-dev

运行 pdfunite

pdfunite *.pdf out.pdf

或者将 *.pdf 换成按转顺序排列的文件名称:

pdfunite 'out-0.pdf' 'out-1.pdf' 'out-2.pdf' 'out-3.pdf' 'out-4.pdf' 'out-5.pdf' 'out-6.pdf' 'out-7.pdf' 'out-8.pdf' 合并.pdf

即可完成合并的操作。

其他

除了合并之外,poppler 还可以分割,但并没有安装想要的方式来分割:

pdfseparate -f 1 -l 12 背景作画.pdf output-page%d.pdf

-f 后面跟上起始(first)页数,-l 后面跟上结束(last)页数,最后会将范围内的文件分离成多个 PDF文件。


遇见特殊的字符,可以考虑批量重命名,重命名时需要使用正则转义:

sudo apt install rename

示例:将 p(z-lib.org) 重命名成 p

rename 's/p\(z\-lib\.org\)/p/' *

示例:将结尾的 .0 重命名成 .jpg

rename 's|\.0$|.jpg|' *

如果不小心将开头变成 . 文件就会被隐藏,需要循环将 . 去掉

for i in .*;
    do mv "$i" `echo "$i" | sed 's/^\.//g'`;
done

遇到 epub 文档,需要先转换为 pdf:

sudo apt install calibre
ebook-convert  '/home/x/作画添削教室.epub'  '/home/x/作画添削教室.pdf'  --enable-heuristics