A Node.js library to compress PDF files using rasterization and JPEG compression
npm install pdfpressorpdfpressor is a Node.js library for compressing PDF files using rasterization and JPEG compression. It intelligently detects image-heavy PDFs and applies lossy compression using pdf-lib, sharp, and pdf-to-img.
``bash`
npm install pdfpressor
- Detects image-heavy PDFs using a simple heuristic.
- Rasterizes pages and compresses them as JPEGs.
- Preserves text/vector PDFs with minimal changes.
- Configurable DPI and JPEG quality.
- Optional forced rasterization.
`js
const { compressPdf } = require('pdfpressor');
compressPdf('input.pdf', 'output.pdf', 150, 70)
.then(stats => {
console.log('Compression stats:', stats);
})
.catch(err => {
console.error('Compression failed:', err);
});
`
- input (string) ā Path to the source PDF file.output
- (string) ā Path to the output compressed PDF.dpi
- (number, optional) ā DPI for rasterization (default: 150).quality
- (number, optional) ā JPEG quality (default: 70).force
- (boolean, optional) ā Force rasterization even if not image-heavy.
```
š Input has 10 pages (5,200 KB)
š¼ Rasterizing with JPEG compression
ā Processing page 1/10
...
ā
Compressed -> output.pdf
Original: 5,200,000 bytes | Compressed: 1,800,000 bytes | Reduction: 65.4%