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

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