第4話

[Mac]PDFファイルをコマンドで分割・連結する方法

こんにちは!Takuya.B(@TB_IQ)です。

先日、業務で大容量のPDFファイルをページごとに分割して欲しいという依頼がありました。

数ページに分割する程度であれば、印刷のプレビューでページ範囲を指定してPDF出力で済みますが、例えば、数十ページのファイルを1ページずつ分割する場合などは骨が折れます。

そこで便利なのが pdfseparate コマンド。PDFファイルを1ページずつ分割してくれます。

また、逆に複数のPDFを1枚に連結する pdfunite コマンドというものもあります。

本日はPDFを分割・連結するためのpdfseparate、pdfuniteコマンドの使い方をご紹介します!

スポンサーリンク

popplerをインストールする

pdfseparate , pdfunite コマンドを使用するためには、 poppler をインストールする必要があります。インストールにはHomebrewを使用します。

$ brew install poppler

たったのこれだけです!

Homebrewのインストールがまだの方は以下の記事を参考にインストールしてください。

pdfseparate コマンドの使い方

書式

$ pdfseparate <オプション> <元ファイル名> <出力ファイル名>

基本の使い方

# 例①
$ pdfseparate hoge.pdf page-%d.pdf

# 出力ファイル名: page-1.pdf, page-2.pdf, ...

# 例②
$ pdfseparate hoge.pdf out%d.pdf

# 出力ファイル名: out1.pdf, out2.pdf, ...

出力ファイル名には必ず %d を含める必要があります(含めないとエラーになります)。この %d には元ファイルのページ番号が出力されます。

範囲を選択して分割する方法

分割したい範囲を選択することもできます。範囲を選択するには -f オプションと -l オプションを使用します。

以下、範囲を指定して分割したい場合の例です。

# 2ページ目から4ページ目まで1ページずつPDFを分割する
$ pdfseparate -f 2 -l 4 hoge.pdf page-%d.pdf

# 出力ファイル名: page-2.pdf, page-3.pdf, page-4.pdf

出力する数字を0埋めする場合

出力ファイル名に含まれるページ番号の数字は0埋めすることが可能です。

ページ番号を出力する %d を次のように変更することで任意の数で0埋めすることができます。

# 例1
$ pdfseparate hoge.pdf page-%02d.pdf

# 出力ファイル名: page-01.pdf, page-02.pdf, ...

# 例2
$ pdfseparate hoge.pdf page-%03d.pdf

# 出力ファイル名: page-001.pdf, page-002.pdf, ...

スポンサーリンク

pdfunite コマンドの使い方

書式

$ pdfunite <元ファイル名1> <元ファイル名前2> ... <元ファイル名n> <保存ファイル名>

PDFを連結する方法

PDFを連結するには pdfunite コマンドを使います。

pdfunite のあとに連結したい順番でファイル名を入力し、最後に出力ファイル名を入力するだけです。

$ pdfunite hoge.pdf fuga.pdf piyo.pdf output.pdf

連番をまとめて結合したい場合

連結したいファイルの数が膨大になってくると、前項の方法だと面倒です。

そこで、連結したいファイル名が連番の場合などは、それらをまとめて連結することもできます。

# pdfunite page-1.pdf page-2.pdf page-3.pdf output.pdf

# 連番の場合は次のようにすると楽
$ pdfunite page-[1-3].pdf out.pdf

スポンサーリンク

あとがき

今日はコマンドでPDFを分割・連結する方法としてpdfseparate, pdfuniteコマンドについてご紹介しました。

pdfseparate は1ページずつしかファイルを分割できないっぽいので、例えば2ページずつファイルを分割などはできません。

そこでパイプを使ったり、シェルスクリプトで出来ないかと試してみましたが上手いことできず。。

pdfseparate, pdfunite コマンドを用いて、見かけ上複数ページずつ分割する方法が分かったら、また皆様にご紹介できればと思います!

というわけで、次回もよしなに!