2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PDFファイルを圧縮したかった(メモ)

Posted at

こちらの機能の検証をしていたところ、Entra IDの制限で2MBまでのPDFしか利用できないことがわかり、利用していた利用規約PDFが2MBを超えていたため圧縮する必要があった。

VSCodeのMarkdown PDFを使用したものだったが、画像の圧縮オプション(markdown-pdf.quality)はあるもの、全体のファイルを圧縮するためのオプションが見当たらなかったので、別の方法で当たることにした。

早速ChatGPTに聞いてみた

早速ChatGPTに聞いてみたところ、以下の3つの方法を示唆された

  1. Ghostscriptを使用する
  2. pdftk
  3. pdfcompress

PDFKitは、ファイルの分割などはできるようだが圧縮機能は持たず、今回の用途には不向きと判断。
Ghostscriptとpdfcompressは好みが分かれると思うが、圧縮だけとはいえ今後も使う可能性があると判断しGhostscriptを使用した

試した結果

PCの環境を汚したくなかったので、Dockerを使う。

$ docker run --it --rm $(pwd):/app alpine:latest ash
/app # apk update
/app # apk add ghostscript
/app # gs --version
10.02.1

これで、Ghostscript自体はインストールできた。
aptなどのリポジトリにも含まれているらしく簡単に入手できるのはありがたい。

次に、コマンドを指定してファイルを変換する

s -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook  -dNOPAUSE -dQUIET
 -dBATCH -sOutputFile=output.pdf ./terms_of_service_ja-jp.pdf

この時、品質に影響するオプションは「PDFSETTINGS」

オプション値 品質
/screen 最も低い解像度と画質で、ファイルサイズを最も小さくします。
/ebook 良好な品質と中程度のファイルサイズを提供します。
/printer 高品質(プリント適用)で、より大きなファイルサイズになります。
/prepress 高品質で、画像を元の品質で保持し、ファイルサイズがさらに大きくなります。

最初、/ebookで試したのだが、埋め込んでいた画像がかなり荒くなってしまった。
そのため/printerにしたところまぁ見れるかなという画像になったのでこれで行こうと思う。

結果:

  • 4235628バイト -> 336930バイト
  • 3959783バイト -> 117805バイト
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?