PDFs

Compress a PDF for Print Without Losing 300 PPI

By the Smol team10 min read

To compress a PDF for printing, remove only the pixels the page cannot show. A press needs about 300 PPI at final size, so an image placed at 1,700 PPI is carrying far more data than the paper will resolve.

Strip it back to exactly 300 and the savings are enormous without costing a thing. Our twelve-page test layout went from 34,826,340 bytes to 552,962 bytes, a 98.4% reduction, with every image still at a full 300 PPI and every font still embedded.

Almost every guide to this subject will get you a file that looks fine on a laptop and prints like a fax. The difference is that screen-oriented tools cap pixels while a printer needs a resolution held at a physical size, and those two things come apart badly on large pages.

What does a printer actually need from a PDF?

Four things, and only one of them is about file size. The authoritative numbers are not a matter of opinion: Adobe ships them as plain-text preset files that Distiller and the Creative Cloud applications read, and you can open them.

ls "/Library/Application Support/Adobe/Adobe PDF/Settings/"
# High Quality Print.joboptions   Press Quality.joboptions
# Smallest File Size.joboptions   PDFX1a 2001.joboptions  …
Setting[Press Quality][High Quality Print][PDF/X-1a:2001]
Color / gray resolution300 ppi300 ppi300 ppi
Monochrome resolution1200 ppi1200 ppi1200 ppi
Downsample threshold1.5×1.5×1.5×
JPEG QFactor0.150.150.15
Color conversionCMYKLeave unchangedCMYK
Embed all fontsYesYesYes
PDF version1.41.41.3
Read directly from the shipped .joboptions files. PDF/X-1a also carries an output intent of “U.S. Web Coated (SWOP) v2”, registered at color.org.

So, in plain terms:

  • 300 PPI at final size. Not 300 PPI in the original photograph. What matters is the resolution across the inches the image occupies on the printed sheet.
  • Every font embedded and subsetted. A missing font is not a quality problem, it is a reprint.
  • The color space the press expects. [Press Quality] converts to CMYK; [High Quality Print] leaves color alone for a desktop printer or proofer that manages its own conversion. Ask which one your printer wants rather than guessing.
  • Bleed, if anything runs to the edge. Compression does not touch bleed or trim boxes, but a compressor that rebuilds the document can drop them. Check the output with pdfinfo -box file.pdf, which prints MediaBox, CropBox, BleedBox, TrimBox and ArtBox. mutool info only reports media boxes, so it will not catch this.

One detail out of those files that catches people: [Smallest File Size] sets EmbedAllFonts to false. Adobe’s own description of that preset is “best suited for on-screen display, e-mail, and the Internet,” and it means exactly what it says. It is not a print preset and it never was.

How do you check the PPI of a PDF you already have?

One command, and it reports effective resolution rather than raw pixel count, which is the number that matters:

pdfimages -list artwork.pdf

The x-ppi column is the resolution of each image at the size it is drawn on the page. Two of our test files make the point:

FileImage pixelsPlaced atEffective PPIPrint verdict
Layout export, small frames6,000 × 4,00088 mm and 54 mm wide1,719 and 2,824Wildly over-specified. Free savings available.
Brochure, full-bleed A46,000 × 4,000210 × 297 mm, cropped342Already close to target. Little to gain.
24 × 36 in poster3,216 × 4,824Full page134Below target already. Do not compress.

Same source photographs, three completely different answers. That is why “which preset should I use for print” has no universal answer and why anyone who gives you one has not looked at your file.

Why do screen presets wreck print files?

Because they cap pixels and a printer cares about inches. A pixel ceiling produces whatever resolution the page geometry happens to yield, and on a large page that number collapses.

Here is the same tool, the same five presets, run across two documents. Our presets are long-edge pixel caps of 600, 900, 1,200, 1,800 and 2,400 pixels:

Preset (long-edge cap)Full-bleed A4 brochureLayout with 88 mm frames
tiny (600 px)34 PPI172 PPI
small (900 px)51 PPI258 PPI
medium (1,200 px)68 PPI344 PPI
large (1,800 px)103 PPI516 PPI
original (2,400 px)137 PPI688 PPI
Effective PPI from pdfimages -list after each preset. Identical settings, five-fold difference in print resolution.

Medium leaves 68 PPI on one document and 344 PPI on the other. On the layout it is genuinely press-viable. On the brochure it is a photocopy. Nothing about the preset name tells you which one you are getting, and this is the single most important thing to understand before compressing anything destined for paper.

Preview’s Reduce File Size has the same shape of problem with the dial welded shut. Its filter hard-codes 144 DPI and an absolute ceiling of 2,400 pixels per image, whatever the page size:

Through Preview’s Reduce File SizeBeforeAfterPrint verdict
Full-bleed A4 brochure342 PPI137 PPIVisibly soft on a press sheet.
Layout with small frames1,719 / 2,824 PPI144 PPIHalf of what a press needs.
24 × 36 in poster134 PPI67 PPICoarser than a newspaper.
The poster row is the 2,400 px ceiling: 2,400 pixels across 36 inches is 67 PPI, regardless of what the page is for.

We take that filter apart properly in why Preview’s Reduce File Size ruins PDFs. For print work the summary is short: do not use it.

What actually shrinks a print PDF safely?

Two moves, in this order. Both were run on the same files as everything above.

1. Re-encode without resampling. If the PDF carries uncompressed or Flate-encoded images, which is common in exports from drawing tools and anything with pasted screenshots, you can convert them to JPEG with the pixel dimensions untouched:

qpdf --optimize-images artwork.pdf artwork-smaller.pdf

On a two-page file with Flate-encoded 2,550 × 3,300 images that took 19,873,274 bytes to 1,989,730 bytes in 0.33 seconds, still 2,550 × 3,300, still 300 PPI. A 90% saving with zero resolution change is as close to free as this gets, and it should be the first thing you try.

2. Downsample to exactly 300 PPI, and only above 300. Ghostscript with explicit parameters rather than a named preset:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.6 \
   -dDownsampleColorImages=true \
   -dColorImageDownsampleType=/Bicubic \
   -dColorImageResolution=300 \
   -dColorImageDownsampleThreshold=1.0 \
   -dDownsampleGrayImages=true \
   -dGrayImageDownsampleType=/Bicubic \
   -dGrayImageResolution=300 \
   -dGrayImageDownsampleThreshold=1.0 \
   -dAutoFilterColorImages=false -dColorImageFilter=/DCTEncode \
   -dEmbedAllFonts=true -dSubsetFonts=true \
   -dNOPAUSE -dQUIET -dBATCH \
   -sOutputFile=print-ready.pdf artwork.pdf
FileBeforeAfterChangePPI after
Layout export34,826,340 B552,962 B−98.4%300
Brochure, full-bleed A416,821,680 B4,059,670 B−75.9%300
300 PPI scan5,017,560 B1,827,152 B−63.6%300
24 × 36 in poster at 134 PPI3,168,921 B3,169,905 B+0.0%134
The last row is the command correctly refusing to act, because 134 PPI is already below the 300 target.

That is the behaviour you want from a print tool. It removes what is redundant and declines to touch what is not. Note the DownsampleThreshold of 1.0: Ghostscript’s default of 1.5 means a named preset like /prepress ignores anything under 450 PPI, which is why running it on our 342 PPI brochure changed the file by −0.0%. Adobe’s presets carry the same 1.5 threshold, and this is the usual reason “I used Press Quality and it is still huge.”

The full set of terminal recipes, including the grayscale and color-conversion flags, is in compressing PDFs from the Terminal on macOS.

When Smol is not the answer for print work

This is our tool, and for press work there are three cases where it is the wrong one. We would rather write them down than have you find out at the proof stage.

Full-bleed pages at A4 or larger. Our presets are pixel caps, and 2,400 pixels is the ceiling. On a full-bleed A4 page that is 137 PPI, and on a 24 × 36 inch poster it is 67 PPI, which is the same ceiling Preview hits and for the same reason. If the artwork bleeds and the page is big, use the Ghostscript command above or send the file as it is.

Anything that has to be CMYK or PDF/X. We do not convert color spaces, attach output intents or enforce a PDF/X profile. Our outputs stay in the color space they arrived in. If the spec says PDF/X-1a with a SWOP output intent, that is an export setting in the application that made the artwork, not a compression step.

When the images are already at or below 300 PPI. There is nothing to win, and original is not a no-op: it re-encodes and resamples anything above 2,400 px. If pdfimages -list shows you are already near target, the correct action is to do nothing. The preset breakdown covers what each level does in detail.

Where we are a good fit for print-adjacent work: proofs, client review PDFs, and the folder of one-off exports that has to go out by email today while the press file stays untouched on disk. For that, $29 once and a resolution ladder beats one button, and the file never leaves your machine. If the export itself is the problem, start with why your InDesign PDF export is enormous instead of compressing after the fact, and the five-method comparison has the screen-side numbers.

How these numbers were measured

Run on 26 September 2026 on a MacBook Pro (Mac14,9), Apple M2 Pro, 16 GB of RAM, macOS 27.0 (build 26A428). Sizes are raw bytes from stat -f%z; resolutions from pdfimages -list (poppler 26.04.0). Ghostscript 10.07.0, qpdf 12.3.2, Smol 1.0.35.

Fixtures. Three files built for this article so the results are reproducible. An eight-page A4 brochure with full-bleed images, and a twelve-page layout with twenty-four placements in 88 mm and 54 mm frames, both rendered by headless Chrome from eight synthetic 6,000 × 4,000 photographs generated with ImageMagick 7.1.2. A 24 × 36 inch poster page built from the same source at 134 PPI. No client artwork and no third-party photography was used.

Adobe preset values were read from the .joboptions files Adobe installs in /Library/Application Support/Adobe/Adobe PDF/Settings/, not from documentation. Those files are plain text and self-describing; each one carries Adobe’s own description string alongside the numbers.

Frequently asked questions

What DPI should a PDF be for printing?

300 PPI at final size for photographs and continuous-tone images, and 1200 PPI for pure black-and-white line art. Those are the values in Adobe’s own [Press Quality], [High Quality Print] and PDF/X-1a preset files. What matters is the resolution across the inches the image occupies on the sheet, not the pixel count of the original photograph.

Can you compress a PDF without losing print quality?

Yes, if the images are above 300 PPI at final size. Downsampling a twelve-page layout whose images sat at 1,719 and 2,824 PPI took it from 34,826,340 to 552,962 bytes, a 98.4% reduction, with everything still at exactly 300 PPI and all fonts embedded. Those pixels were never going to reach the paper.

Why is my PDF still huge after using Press Quality?

Because of the downsample threshold. Adobe’s print presets carry a threshold of 1.5, so [Press Quality] only resamples images above 450 PPI even though it targets 300. Ghostscript behaves the same way: /prepress changed our 342 PPI brochure by −0.0%. Set the threshold to 1.0 explicitly if you want it to act on images just above target.

Does Preview’s Reduce File Size ruin a print PDF?

Yes. Its filter hard-codes 144 DPI and an absolute 2,400 pixel ceiling per image. Our full-bleed A4 brochure came out at 137 PPI, a layout at 144 PPI, and a 24 by 36 inch poster that was already at a modest 134 PPI came out at 67 PPI. All three are below what any commercial printer will accept.

Should a print PDF be CMYK or RGB?

Ask the printer. Adobe’s [Press Quality] converts to CMYK and PDF/X-1a requires it with a named output intent, but [High Quality Print] deliberately leaves color unchanged because desktop printers and proofers manage their own conversion. Converting to CMYK twice is worse than not converting at all, so find out before you export.

What is the safest way to shrink a print PDF?

Try "qpdf --optimize-images" first. It re-encodes uncompressed and Flate images as JPEG without changing a single pixel dimension. On a file with Flate-encoded 2,550 by 3,300 images it saved 90.0% in 0.33 seconds with the resolution untouched. Only then consider downsampling, and only for images above 300 PPI at final size.

Keep reading