Skip to content

Instantly share code, notes, and snippets.

@ilovefreesw
Created December 30, 2021 12:53
Show Gist options
  • Save ilovefreesw/7eab3ebcb6f4cd69cf275f9a21c7eb48 to your computer and use it in GitHub Desktop.
Save ilovefreesw/7eab3ebcb6f4cd69cf275f9a21c7eb48 to your computer and use it in GitHub Desktop.
A Python script to batch compress PDF files on Windows, MAC, and Linux. Make sure gs and Python are in PATH before running this script.
from __future__ import print_function
import os
import subprocess
root = "."
try:
os.mkdir('compressed')
except FileExistsError:
pass
for file in os.listdir(root):
if file.endswith(".pdf"):
filename = os.path.join(root, file)
arg1= '-sOutputFile=' + './compressed/' + file
print ("compressing:", file )
p = subprocess.Popen(['gs', '-sDEVICE=pdfwrite', '-dCompatibilityLevel=1.4', '-dPDFSETTINGS=/screen', '-dNOPAUSE', '-dBATCH', '-dQUIET', str(arg1), filename], stdout=subprocess.PIPE).wait()
@ilovefreesw
Copy link
Author

@Suleman-Elahi
Copy link

General command: gswin64 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=Output.pdf Input.pdf

@ilovefreesw
Copy link
Author

gswin64 -q -dNOPAUSE -dBATCH -dSAFER -dOverPrint=/simulate -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None -dColorImageDownsampleType=/Bicubic -dColorImageResolution=150 -dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=150 -dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=150 -sOutputFile="output.pdf" "input.pdf"

@ilovefreesw
Copy link
Author

gswin64c -sDEVICE=pdfwrite -o output.pdf -dCompatibilityLevel='1.4' -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH input.pdf

@ilovefreesw
Copy link
Author

On Linux or macOS, change gswin64c to just gs

@ilovefreesw
Copy link
Author

With Image Compression: gs -q -dNOPAUSE -dBATCH -dSAFER -dOverPrint=/simulate -sDEVICE=pdfwrite -dPDFSETTINGS=/screen -dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None -dDownsampleColorImages=true -dColorImageResolution=72 -dGrayImageResolution=72 -dMonoImageResolution=72 -dCompressFonts=true -dCompatibilityLevel=1.4 -sOutputFile="output.pdf" Input .pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment