是否有一种工具可以将保存为单个 PDF 的书籍拆分为每章一个 PDF?

rre*_*aud 5 pdf software-recommendation

我有几本书是 PDF 格式的,我想将它们按章节拆分,以便在手机上阅读。是否有任何工具(或工具序列)可以让我轻松地将本书按章节拆分为不同的 PDF 文件?

Jan*_*ary 7

这很难自动完成,因为PDF 文件中没有标准的章节标签。但是,如果您不介意一些手动工作,请记下每章的页面,并使用pdftk选择页面并将其保存为新的pdf文件。例如,如果第 2 章是第 23-45 页,请执行

pdftk A=input.pdf cat A23-45 output chapter_2.pdf
Run Code Online (Sandbox Code Playgroud)

您需要先安装pdftk:

sudo apt-get install pdftk
Run Code Online (Sandbox Code Playgroud)

您也可以直接使用 ghostscript(预装):

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=23 -dLastPage=45 -sOutputFile=chapter_2.pdf input.pdf
Run Code Online (Sandbox Code Playgroud)

这很容易转换半自动运行的脚本。首先,创建一个输入文件;在每一行上,放置所需的输出 pdf 文件标题、起始页、结束页——就像这样:

chapter1 1 23
chapter2 24 56
Run Code Online (Sandbox Code Playgroud)

使用文本编辑器将其保存到文件pdfchaps.in.

现在,创建一个脚本——将以下内容保存到一个名为 的文件中pdfchaps.sh

#!/bin/bash

function pdfextr() { 
  echo "Chapter $2"
  pdftk A=$1 cat A$3-$4 output $2.pdf 
}

chapters=$1
pdffile=$2

echo "Splitting pdf file $pdffile by chapters from $chapters"
cat $chapters | while read line ; do  pdfextr $pdffile $line ; done
Run Code Online (Sandbox Code Playgroud)

使脚本可执行:

chmod a+x pdfchaps.sh
Run Code Online (Sandbox Code Playgroud)

并运行它:

pdfchaps chaps.in mybook.pdf
Run Code Online (Sandbox Code Playgroud)