Notebook

これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。

HTML ファイル生成日時: 2025/08/19 19:16:06.895 (台灣標準時)

PDF ファイルを圧縮する方法

作成した PDF ファイルのファイルサイズが大きい場合、 Ghostscript を使って 圧縮された PDF ファイルを生成することができると知ったでござる。以下のよ うにすればよいようでござる。


% gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 -dPDFSETTINGS=/default -dNOPAUSE -dBATCH -sOutputFile=compressed.pdf original.pdf

"-dPDFSETTINGS" オプションの値を変更すると、生成される圧縮済み のファイルの大きさを変えることができるそうでござる。以下の選択肢があるよ うでござる。

生成されるファイルの大きさは、 /default, /prepress, /printer, /ebook, /screen の順に小さくなっていくようでござる。 /screen だと最も小さくなる ようでござる。

fig_202508/www_gs_00.png

以下が、 66 MB 程度の PDF ファイルを ghostscript を使って圧縮してみた結 果でござる。


% ls -l compressed_* original.pdf
-rw-r--r--  1 daisuke  taiwan  25477117 Aug 15 14:59 compressed_default.pdf
-rw-r--r--  1 daisuke  taiwan   2029683 Aug 15 14:58 compressed_ebook.pdf
-rw-r--r--  1 daisuke  taiwan  11654080 Aug 15 14:59 compressed_prepress.pdf
-rw-r--r--  1 daisuke  taiwan   8513495 Aug 15 14:59 compressed_printer.pdf
-rw-r--r--  1 daisuke  taiwan    960015 Aug 15 14:58 compressed_screen.pdf
-rw-r--r--  1 daisuke  taiwan  69486966 Aug 15 14:21 original.pdf

以下のようなプログラムを作ってみたでござる。


#!/usr/pkg/bin/python3.13

#
# Time-stamp: <2025/08/15 15:53:03 (UT+08:00) daisuke>
#

# importing argparse module
import argparse

# importing subprocess module
import subprocess

# initialising a parser
parser = argparse.ArgumentParser (description='compress PDF files')

# choices
choices_compatibility = [ '1.3', '1.4', '1.7', '2.0' ]
choices_preset        = [ '/default', '/ebook', '/prepress', \
                          '/printer', '/screen' ]

# adding arguments
parser.add_argument ('-c', '--compatibility', choices=choices_compatibility, \
                     default='1.7', \
                     help='compatibility level (default: 1.7)')
parser.add_argument ('-g', '--ghostscript', default='/usr/pkg/bin/gs', \
                     help='location of gs command (default: /usr/pkg/bin/gs)')
parser.add_argument ('-m', '--moreoptions', default='-dNOPAUSE -dBATCH', \
                     help='other gs options (default: -dNOPAUSE -dBATCH)')
parser.add_argument ('-o', '--output', default='out.pdf', \
                     help='output PDF file')
parser.add_argument ('-q', '--quality', choices=choices_preset, \
                     default='/prepress', \
                     help='compression level (default: /prepress)')
parser.add_argument ('-v', '--verbose', action='store_true', \
                     help='verbosity level (default: False)')
parser.add_argument ('file', nargs=1, help='input PDF file')

# parsing arguments
args = parser.parse_args ()

# input parameters
compatibility_level = args.compatibility
quality_preset      = args.quality
command_ghostscript = args.ghostscript
options_more        = args.moreoptions
verbosity           = args.verbose
file_input          = args.file[0]
file_output         = args.output

# compression command
command_compression = f'{command_ghostscript}' \
    + f' -sDEVICE=pdfwrite {options_more}' \
    + f' -dCompatibilityLevel={compatibility_level}' \
    + f' -dPDFSETTINGS={quality_preset}' \
    + f' -sOutputFile={file_output}' \
    + f' {file_input}'

# printing command to be executed
if (verbosity):
    print (f'#')
    print (f'# command to be executed:')
    print (f'#  {command_compression}')
    print (f'#')

# executing a command to compress a PDF file
subprocess.run (command_compression, shell=True)

参考文献



Frequently accessed files

  1. Misc___Taiwan/20240207_00.html
  2. Misc___Taiwan/20240819_00.html
  3. Computer___Network/20240130_00.html
  4. Computer___NetBSD/20230119_00.html
  5. Computer___TeX/20231107_00.html
  6. Computer___Network/20230516_00.html
  7. Computer___Network/20241214_00.html
  8. Misc___Taiwan/20240903_01.html
  9. Computer___NetBSD/20250301_01.html
  10. Computer___Network/20230726_00.html
  11. Computer___NetBSD/20240805_03.html
  12. Computer___TeX/20230726_01.html
  13. Computer___Python/20250330_00.html
  14. Misc___Japan/20240610_00.html
  15. Misc___Taiwan/20250728_01.html
  16. Computer___WWW/20230522_02.html
  17. Computer___Hardware/20240820_00.html
  18. Computer___TeX/20240414_00.html
  19. Food___Taiwan/20230609_06.html
  20. Computer___FreeBSD/20220621_0.html
  21. Computer___TeX/20240414_01.html
  22. Computer___TeX/20240411_00.html
  23. Computer___Python/20240101_00.html
  24. Computer___NetBSD/20250307_00.html
  25. Computer___NetBSD/20250409_00.html
  26. Computer___NetBSD/20241102_00.html
  27. Food___Taiwan/20230608_04.html
  28. Computer___NetBSD/20240810_00.html
  29. Computer___TeX/20240410_00.html
  30. Food___Taiwan/20230711_15.html


HTML file generated by Kinoshita Daisuke.