v0.1.5
--images re-encodes images with the pdfcpu engine, without Ghostscript. It handles 8- and 16-bit gray and RGB images stored losslessly or as a single JPEG: RGB images whose pixels are all exactly gray become DeviceGray, gray images holding only black and white become 1-bit, 16-bit samples become 8-bit, and each image keeps the smaller of Flate with PNG predictors and JPEG at quality 75. The original bytes stay unless the re-encode saves at least 2% and 1 KiB. Image masks, images with /Mask or /Decode, indexed and CMYK images, soft masks (kept lossless), and other filters are left byte for byte. -V reports what was re-encoded and why the rest was preserved.
--dpi N and --gray for the Ghostscript engine: resample color and gray images above 1.5×N dpi down to N (monochrome keeps the preset's resolution), and convert all colors to grayscale.
The "no reduction" message now says which option to try next. --privacy also removes web capture information (/SpiderInfo).
Attached: binaries for Linux (amd64, arm64), macOS (amd64, arm64), and Windows (amd64), plus SHA-256 sums in checksums.txt.
Full Changelog: v0.1.4...v0.1.5