コマンドラインでPDFファイルのサイズを小さくする方法

コマンドラインでPDFファイルのサイズを小さくする方法

この質問に対する回答は他のスレッドから来たことがわかりましたが、どのソリューションも私には役に立ちませんでした。数百万のカラーポイント(マンハッタンプロット)を含む4つのプロットを含むPDFファイルがあります。 PDFファイルが大きすぎて(〜100 MB)、コンピュータで正しく開くことができません。私はgs次のコマンドを試しました

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -q -o output.pdf manhattan_plots_long.pdf

しかし、うまくいかないようです。 「色空間をsRGBに変換できません。ポリシーをLeaveColorUnchangedに戻します」というエラーメッセージが表示されます。

このエラーを解決するための他のコードを見つけることができますが、新しいPDFファイルのサイズは同じです!

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \
  -dAutoRotatePages=/None -dUseCIEColor -sOutputFile=output.pdf input.pdf

私は何が間違っているのか分かりません。私の問題に対する解決策はありますか?

答え1

-r1502番目のコマンドに追加してみてください。

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH \ -dAutoRotatePages=/None -dUseCIEColor -r150 -sOutputFile=output.pdf input.pdf

150 未満の数値を使用して画像 DPI を下げることができます。

もう一つの便利なオプションは-dCompressFonts=true

答え2

ファイルが見えないため、高品質の印刷のための非常に詳細な文書(例:大きなポスター)があると推測できます。これらのグラフィックは、Ghostscriptが保存したいベクトルグラフィックである可能性が高いです。 @Academiphileの提案に従って、ドキュメントの個々のページを画面外で十分に低い解像度のラスターイメージとしてレンダリングします。

ghostscript -dNOPAUSE -dBATCH -sDEVICE=tiffgray -sOutputFile=output.tif input.pdf

その結果、複数のページで構成されるtifは大きくなりますが、選択したビューアを使用して画像を表示することができます。ファイルに対して他の操作(編集と印刷 - プリンターの作業者が怒りや神経衰弱する可能性がある)を実行しようとしないでください。

答え3

コマンドを実行する前に、コマンドを修正したり(パディングなど)、パラメータでエイリアスを使用できる一種のエイリアスを生成するソリューションを探している間に、このスレッドが見つかりました。私は同様の解決策を探している他の人に役立つと思う関数を作成しました。これらの種類の関数を.bashrcファイルに直接挿入できます。

## Function to compress PDF
compress-high() {
    # compress pdf $2 into $1 using minimizing size
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$1 $2
}

この特定の例はghostscriptpdf圧縮のためのものです。 $ 1は圧縮されたpdfの名前を表す最初のパラメータ、$は圧縮する入力pdfの名前を表す2番目のパラメータです。これは他の用途に簡単に適用できます。

関連情報