Skip to content

Commit

Permalink
Use ghostscript to compress PDF output on RTD
Browse files Browse the repository at this point in the history
  • Loading branch information
abidingabi committed Oct 24, 2023
1 parent eef780c commit 1aa20c6
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ build:
python: "3.11"
apt_packages:
- graphviz
- ghostscript
jobs:
post_build: ./scripts/rtd-compress-pdf.sh

formats:
- pdf
Expand Down
24 changes: 24 additions & 0 deletions scripts/rtd-compress-pdf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env sh

# Compresses the PDF output using ghostscript on Read the Docs.

OUTPUT_FILENAME="gm0.pdf"
DPI=300
PDF_DIR="$READTHEDOCS_OUTPUT/pdf"

# Check if the PDF build is enabled based on if the PDF output directory exists
if [ -d "$PDF_DIR" ]; then
existing_pdf=$(ls "$PDF_DIR")

# actually compress the PDF
gs -sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/ebook \
-dNOPAUSE \
-dBATCH -dColorImageResolution="$DPI" \
-sOutputFile="$PDF_DIR/$OUTPUT_FILENAME" "$PDF_DIR/$existing_pdf"

# readthedocs expects only one PDF output in the directory
# see https://docs.readthedocs.io/en/stable/reference/environment-variables.html#envvar-READTHEDOCS_OUTPUT
rm "$PDF_DIR/$existing_pdf"
fi

0 comments on commit 1aa20c6

Please sign in to comment.