2019/06/17

PDF解像度変更と一部のページ除去 gsコマンド(GhostScript)

表題の操作をスキャン後のファイルに自動処理で行いたい。

不要なページの削除方法
◆pdftkコマンドを使う

今回はスキャナの為の台紙である一枚目を取り除きたいので、
$ pdftk origin.pdf cat 2-end output modify.pdf
となる。

2枚目だけを取り除きたい場合は、
$ pdftk origin.pdf cat 1 3-end output modify.pdf
オプションの詳細


解像度の変更
◆gsコマンドを使う

オプションが非常に長いが、中途半端に記載すると
処理に時間がかかったので、ファイルサイズ軽減に係るところは全部表記した。

$ gs -q -sOutputFile="/home/user0463/out.pdf" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dQUIET -dCompatibilityLevel=1.4 -sColorConversionStrategy=GRAY -dProcessColorModel=/DeviceGray -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=72 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=72 -dColorImageDownsampleType=/Bicubic -dColorImageResolution=72 -dEmbedAllFonts=false -dSubsetFonts=false -dPDFSETTINGS=/printer /home/user0463/moto.pdf

解説
-q 実行時にメッセージを出力しない。
-sOutputFile="出力先ファイル記述"
-sDEVICE=pdfwrite pdf以外の設定  gs -hで確認できる。
-dNOPAUSE ページごとに処理に一時停止をさせない。(これを書かないと遅くなる)
-dBATCH 一連処理させる。
-dSAFER deletefileとrenamefileオペレータを無効
-dQUIET 標準出力への情報を表示しない。
-dCompatibilityLevel=1.4 1.3~1.6まで定義可
-sColorConversionStrategy=GRAY GRAY,CMYK,RGBを指定
-dProcessColorModel=/DeviceGray  DeviceGray,DeviceCMYK,DeviceRGBを指定
-dGrayImageDownsampleType=/Bicubic /Subsample, /Average, /Bicubicを指定
-dGrayImageResolution=72 解像度を指定 dpiを指定デフォルト72
-dMonoImageDownsampleType=/Bicubic /Subsample, /Average, /Bicubicを指定
-dMonoImageResolution=72 解像度を指定 dpiを指定デフォルト72
-dColorImageDownsampleType=/Bicubic /Subsample, /Average, /Bicubicを指定
-dColorImageResolution=72 解像度を指定 dpiを指定デフォルト72
-dEmbedAllFonts=false フォントを埋め込むか? true,falseを指定
-dSubsetFonts=false 標準フォントを埋め込むか? true,falseを指定
-dPDFSETTINGS=/printer  /screen, /ebook, /printer, /prepress, /defaultを指定 



PDFSETTINGS は 低解像度← screen,ebook,printer,prepress →高解像度
defaultは元データを参照するようである。


あとは、シェルスクリプトに記載して、cron や inotifywait
で 自動処理させれば良い。
gsコマンドは端折って記載するより全部書いたほうが早いと云うのが面白い。