PDFの分割(抽出)と結合

OS:Linux(Debian)

poppler-utilsを使う方法

インストール

$ sudo apt install poppler-utils

分割
sample.pdfの2ページ目から4ページ目を抽出して、
それぞれを、2.pdf, 3.pdf, 4.pdfとして保存する。

$ pdfseparate -f 2 -l 4 sample.pdf %d.pdf

2ページ目から最後のページを抽出したい場合は、
「-l」オプションを省略すればいい。

$ pdfseparate -f 2 sample.pdf %d.pdf

保存するファイル名の数字の部分を2桁にしたい場合は
「%02d」とする。

$ pdfseparate -f 2 sample.pdf %02d.pdf

結合
2.pdf, 3.pdf, 4.pdfの3つのファイルを結合して、
out.pdfとして保存する。

$ pdfunite 2.pdf 3.pdf 4.pdf out.pdf

あるファイルで実行したら、下記のエラーが出力されて、結合に失敗した。

Unimplemented Feature: Could not merge encrypted files ('2.pdf')

qpdfというツールで暗号化の解除を行ったら成功した。
PDFの暗号化というものが何なのかはよく分からない。

qpdfのインストールと実行
その後、分割と結合

$ sudo apt install qpdf
$ qpdf --decrypt sample.pdf dec.pdf
$ pdfseparate -f 2 -l 4 dec.pdf %d.pdf
$ pdfunite 2.pdf 3.pdf 4.pdf out.pdf

cpdfを使う方法

インストール
下記のページから「cpdf」の実行ファイルをダウンロードする。
cpdf-binaries/cpdf at master · coherentgraphics/cpdf-binaries · GitHub
ダウンロードしたcpdfに実行権限を付与する。

$ chmod u+x cpdf

sample.pdfの2ページ目から4ページ目を抽出して、out.pdfとして保存する。

$ ./cpdf sample.pdf 2-4 -o out.pdf

実行したら、下記のエラーが出た。

You must supply -recrypt here, or provide the owner password.

下記のように「-recrypt」というオプションをつけたら、成功した。
意味は分からない。

./cpdf sample.pdf 2-4 -recrypt -o out.pdf

飛び飛びのページを抽出することもできる。
1ページ、3ページ、5ページを抽出する。

$ ./cpdf sample.pdf 1,3,5 -o out.pdf

分割
sample.pdfの各ページをそれぞれ別のファイルに保存する。
1ページ目→out01.pdf
2ページ目→out02.pdf

$ ./cpdf -split sample.pdf -o out%%.pdf

下記のエラーが出た。

User password cannot give permission for this operation

qpdfで暗号化の解除をしてから実行したら成功した。

$ qpdf --decrypt sample.pdf dec.pdf
$ ./cpdf -split sample.pdf -o out%%.pdf

結合
out01.pdf, out02.pdf, out03.pdfの3ファイルを結合して、
out.pdfとして保存する。

$ ./cpdf -merge out01.pdf out02.pdf out03.pdf -o out.pdf