コマンドラインでPDF関連の処理(一つにまとめる、サイズを圧縮する)

目次

  1. 背景
  2. 複数のPDFファイルをまとめる
    1. pdfunite
    2. GhostScript
  3. PDFのサイズ圧縮
  4. まとめ
  5. PR
  6. 関連記事

背景

こんにちは。 かりんとうマニア(@karintozuki)です。
PDF関連の処理をたまにするんですが、オンラインの知らないサービスにファイルをアップロード・ダウンロードするのはセキュリティ的に少し怖いですよね。

今回はコマンドラインから起動できてオフラインで使えるPDFコマンドを紹介します。

複数のPDFファイルをまとめる

pdfunite

複数のPDFファイルをまとめたいときはpdfuniteコマンドが使えます。

私のUbuntuには標準で入っていました。

使い方は以下の感じです。

1
2
pdfunite pdf_1.pdf pdf_2.pdf pdf_3.pdf output.pdf

結合したいファイルをいくつでもつなげることが可能です。

注意 引数の最後に出力ファイルの名前を指定するのを忘れないでください。
以下のようなコマンドを実行すると引数の最後のファイル(pdf_3.pdf)が上書きされてしまいます。

1
2
pdfunite pdf_1.pdf pdf_2.pdf pdf_3.pdf // pdf_3.pdfが上書きされる

GhostScript

GhostScriptはPostScriptというPDFを操作するためのスクリプト言語の実行環境です。
スクリプトとはいっていますが、普通にCLIコマンドとして考えて大丈夫です。
インストールしてもいいですし、私はDockerから使うのが簡単でいいと思っています。

ファイルの結合は以下のコマンドです。(gsコマンドがインストールされている際はDockerの部分を省いてください。)

1
2
3
4
5
6
docker run --rm -v "$(pwd):/app" --workdir /app minidocks/ghostscript gs \
-dNOPAUSE \
-sDEVICE=pdfwrite \
-sOUTPUTFILE=combine.pdf \
-dBATCH pdf_1.pdf pdf_2.pdf

PDFのサイズ圧縮

PDFのサイズ圧縮にもGhostScriptが便利です。

以下をコピペして使ってください。

1
2
3
4
5
6
7
8
9
docker run --rm -v "$(pwd):/app" --workdir /app minidocks/ghostscript gs \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dNOPAUSE \
-dBATCH \
-sOutputFile=test_compressed.pdf \
-dPDFSETTINGS=/ebook \
/app/test.pdf

まとめ

GhostScriptの存在を知らなかったのですが、意外とコマンドラインでできることって多いんですね。
また何か他の使いみちを見つけたら追記していこうと思います。

それじゃ今日はこの辺で。

PR

あなたの会社はあなたの技術を評価してくれていますか?
技術力を高めようと頑張っているのに、
技術が評価されないような会社にいたらそれは良い環境なのでしょうか?
エンジニアとして技術を高めたいのなら環境を選ぶことも大事です。

レバテックキャリア
エンジニアとして働いていて実務経験があるなら、
求人数の充実具合からレバテックキャリアがおすすめです。
IT転職ではデファクト・スタンダードですね。
▼レバテック キャリア 登録はこちら▼


Tech Clips
Tech Clipsは年収500万以上&自社サービスを持った会社に特化した求人サイトです。
首都圏限定になってはしまいますが、
収入を増やしたい、自社サービスを持った企業への転職をしたい人におすすめです。

▼Tech Clips 登録はこちら▼


関連記事

こちらの記事もおすすめです。
一番イケてる(主観です)ターミナル、GhosttyをUbuntuで使う方法です。

GhosttyをUbuntuで使う - ビルドの仕方とビルドがめんどい人向けの方法