make-look-scanned
Make PDFs look like physical scans
TLDR
SYNOPSIS
make-look-scanned [flags] input.pdf
DESCRIPTION
make-look-scanned renders each page of a PDF at a chosen DPI, then applies a configurable pipeline of visual degradation effects to make it appear physically scanned: subtle page skew, greyscale conversion, warm paper toning, scanner grain, Gaussian defocus, edge shadow vignetting, and JPEG compression artifacts.Output is deterministic by default: the random seed is derived from the content hash of the input file, so the same PDF always produces identical output. A custom seed can be specified with `--seed` to produce variations.Named presets can be stored in a `config.toml` file and selected with `--preset`, allowing multiple degradation profiles (light scan, heavy scan, old document, etc.) to be defined and reused. Setting any numeric effect parameter to 0 disables that effect entirely.A browser-based WebAssembly version of the tool is also available for one-off use without installation.
PARAMETERS
-o file
Output file path (default: `<input>.scanned.pdf`)--preset name
Use a named preset defined in `config.toml`--seed n
Random seed for reproducibility (default: content hash of the input PDF)--force
Overwrite existing output files without prompting--dpi n
Render resolution in DPI (default: 150)--skew degrees
Maximum page rotation in degrees (default: 0.6; 0 disables)--grayscale
Desaturate colors to simulate a greyscale scanner (default: true)--paper-tone n
Warm paper tint strength, 0-1 (default: 0.6)--noise n
Scanner grain effect intensity, 0-1 (default: 0.08)--blur sigma
Defocus Gaussian sigma (default: 0.4)--edge-shadow n
Border vignette strength, 0-1 (default: 0.15)--jpeg-quality n
JPEG compression quality, 1-100 (default: 70; lower = more artifacts)
CAVEATS
Requires a Go toolchain and a C compiler to build from source. Processing large PDFs at high DPI values significantly increases memory usage and processing time. The tool produces a new PDF file and does not modify the original.
