昨日、知り合いから前に作ったPDFファイル形式のリーフレットの元ファイルを至急送ってくれと連絡があった。画像満載のリーフレットなのでサイズ27MBと、かなりでかい。メールで送るのは多分無理だし、郵送も時間がかかるので無理。圧縮してサイズを小さくして送るしかないか・・・。

で、LinuxでPDFファイルを圧縮する方法は大きく2つ。
コマンドで圧縮する方法と、GUIアプリを使って圧縮する方法。手軽なのはコマンドで圧縮する方法だけど、頻繁に使いたいならGUIアプリをインストールしてしまう方法が良いかも。だって、コマンドを忘れてしまったり、タイプするのが面倒だったりするからね。
ヘタレユーザーですから・・・。(・ω・)

早速やってみます。まず、コマンド操作法から。


スクリーンショット_2018-11-13_10-55-26





ここでは、pdf2psコマンドと、ps2pdfコマンドを使います。読んで字のごとく、2をtoに置き換えれば意味が解ると思いますが、PDFファイルをPostScriptに替えるコマンドとPostScriptをPDFに替えるコマンドです。ちょっとややこしいですけど、PDFファイル形式のファイルをPostScript言語形式に変換して、PostScript言語形式に変換したファイルをもう一度サイズを指定したPDFファイル形式にしてサイズを小さくするようです。パラメーターは5種類なのかな? sw.pdfという27MBのファイルを圧縮してみます。

homeフォルダに圧縮したいファイルをセットします(最初、深い階層にあって、なおかつ日本語も入り乱れている状態だったのですが、直で変換しようとしてエラーになってしまいました。時間もないのでコピーしてhomeに置いてファイル名を簡単なアルファベットに換えて作業をしました。問題を一つ一つ解決して行くのも良いですが、(・ω・)なので楽な方を選びました。その手順で説明しています)。

pdf2ps sw.pdf sw.ps

変換が終わるまで暫く待ちます。
変換が終わって無事にpsファイルが出力されたら、次にebookクオリティに逆変換です。

ps2pdf -dPDFSETTINGS=/ebook sw.ps file-optimized.pdf

ファイルが無事に作成されました。元のファイルサイズは27MB、出力したpsファイルが214MB、ebookサイズに再変換したpdfファイルは993kBでした。


スクリーンショット_2018-11-13_11-19-11












変換サイズの圧縮効率はファイル内容によっても変わりますが、多くの方が比較してくれているのでそれらも参考にしてみてください。また、圧縮率が高ければ良いというものでもなくて、画像が多いファイルなどでは圧縮が高いと見るに耐えられない仕上がりになったりするので、バランスの良いパラメーターを探す手間が必要になります。

元ファイル 100 %
default   7.13694325677215707200 %
screen 16.52681375246765040300 %
ebook  17.36285336133249056200 %
printer      8.28013058380125790700 %
prepress  9.46679333189828380300 %


~50MB paper pdfファイルを圧縮した人の報告

#!/bin/sh
file=paper
odir=compressed
declare -a pdfsettings=("screen" "ebook" "prepress" "printer" "default")
args="-sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH"
for mode in "${pdfsettings[@]}"
do
    # output file
   ofile=$odir/$file.$mode.pdf
   # compress with ghostscript
   gs $args -dPDFSETTINGS=/$mode -sOutputFile=$ofile $file.pdf
   # print size of the compressed file
   du -h $ofile
done

# output
912K screen
1.2M ebook
3.4M prepress
2.6M printer
9.9M default

などなど、webでは様々な結果報告を探すことが出来ます。



さて、次です。GUIアプリで行きます。Densifyというアプリです。これもバックエンドにGhostscriptですね。まずはインストールから。このアプリを使うには、Python2、python-gi、Ghostscriptが必要です。
Ubuntu パッケージ:https://packages.ubuntu.com/


python-gi、ghostscriptのインストール

sudo apt install python-gi ghostscript

Densifyのサイトから最新のプログラムを入手します。書庫ファイル(多分、 .tar.gzファイル)になっているので解凍してhomeに置いてください。このファイルを /optに移します。プログラムのバージョンが0.2.0(現在)の場合です。

sudo mv Densify-0.*.0 /opt/Densify

メニュー表示させます。メニューに表示させるためのショートカット(リンク)を作成するだけですね。

sudo mkdir -p /usr/local/share/applications/
sudo cp /opt/Densify/densify.desktop /usr/local/share/applications/

これで、アプリケーションメニューから起動できるようになりました。


スクリーンショット_2018-11-13_10-30-25















それでは、圧縮してみます。


スクリーンショット_2018-11-13_12-12-20
































ファイルのパスがどこでも簡単に指定できます。コマンドではエラーを叩いた深い階層、なおかつ日本語混じりのファイルも一発変換できました。指定ミスやタイプミスのエラーから解放されます。これは楽ですね。(・∀・)


スクリーンショット_2018-11-13_12-14-10







変換後のファイルサイズは1.1MBになりました。コマンドの時よりも少し大きいです。



スクリーンショット_2018-11-13_12-15-13












それでも何も考えずにできるので、コマンド操作よりも好きです。私の場合は・・・ (・ω・) 。





「コマンドで良いや」と考え直してリムーブ(アンインストール)したい場合は

sudo rm -r /opt/Densify
sudo rm /usr/local/share/applications/densify.desktop

これでremoveできます。