Skip to content

Conversation

Copy link

Copilot AI commented Dec 2, 2025

Implements a .NET 8 console application for PDF compression through structural optimization—not ZIP/Gzip wrapper compression.

Core Implementation

  • Image optimization: Downsampling with configurable DPI (200/150/72), JPEG recompression (0-100 quality)
  • Resource removal: Metadata, annotations, thumbnails, unused fonts, JavaScript, embedded files
  • Structure optimization: Object stream compression (full mode), Flate content stream compression
  • Form processing: Optional field flattening

Architecture

PdfCompressorEngine
├── ProcessImage()           # DPI-based downsampling
├── RemoveMetadata()         # Clear document info + XMP
├── RemoveAnnotations()      # Strip page annotations
├── RemoveThumbnails()       # Remove embedded previews
├── RemoveEmbeddedFiles()    # Clear JS + attachments
├── FlattenForms()           # Convert fields to static content
└── CompressContentStreams() # Apply Flate compression

Usage

# Basic compression
dotnet run -- input.pdf output.pdf

# Maximum optimization
dotnet run -- input.pdf output.pdf \
  --quality=low \
  --jpeg-quality=60 \
  --remove-embedded=true \
  --flatten-forms=true

Technical Notes

  • Uses iText7 9.4.0 for PDF manipulation
  • Targets .NET 8.0 framework
  • 10 configurable compression options via CLI
  • Returns size metrics: original, compressed, ratio, saved space
  • Zero security vulnerabilities (CodeQL verified)

The compression modifies PDF internals (object streams, content encoding, resource dictionaries) rather than applying external file compression.

Original prompt

Generate a .NET 8 application that performs true PDF compression, including image downsampling, object stream optimization, removal of unused resources, and metadata cleanup. Do NOT rely on ZIP/Gzip/LZMA compression; perform actual PDF structure optimization.

he application must:

Downscale embedded images (configurable quality: high/medium/low)

Reduce image quality (JPEG recompression level)

Remove:

metadata

annotations (optional)

embedded thumbnails

unused fonts

JavaScript and embedded files (optional)

Flatten forms (optional)

Optimize PDF object streams

Compress content streams using Flate or more advanced compression if library supports it.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI changed the title [WIP] Add .NET 8 application for true PDF compression Add .NET 8 PDF compression application with true structural optimization Dec 2, 2025
Copilot AI requested a review from Muhammadulawal December 2, 2025 01:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants