Open source · Bibliothèque PDF .NET
Des PDF plus légers, et la preuve que rien n'a changé.
Compresser un PDF en .NET passe souvent par un outil natif, une licence copyleft ou commerciale, ou une reconstruction du document qui perd en silence des formulaires, des balises ou des métadonnées. PdfNetStack fait ce travail en C# pur, relit le fichier qu'il vient d'écrire et le compare à sa source. Si quelque chose diffère, vous récupérez vos octets d'origine.

dotnet add package PdfNetStackdotnet tool install -g PdfNetStack.Tool- Licence
- MIT
- Environnement
- .NET 8+, .NET Standard 2.0
- Langage
- C#
Le problème
La plupart des solutions de compression PDF en .NET lancent un outil natif, dépendent d'une bibliothèque copyleft ou commerciale, ou reconstruisent le document et perdent en silence des formulaires, des balises ou des métadonnées.
Pour un service qui traite des fichiers venus de l'extérieur, ces trois options posent problème : un binaire natif à déployer par plateforme, une licence à vérifier, et aucune garantie que le fichier de sortie dit la même chose que le fichier d'entrée.
Nous voulions une bibliothèque sous licence permissive de bout en bout, sûre sur des fichiers inconnus, et franche sur ce qu'elle change.
Ce que nous avons fait
Le code est original et écrit à partir des spécifications publiées : ISO 32000 pour le PDF, OpenType, Unicode et les standards HTML et CSS. Il n'y a ni code natif ni processus externe, et le même comportement sous Windows, Linux et macOS.
L'optimisation est sans perte par défaut : flux d'objets compressés, ressources inutilisées retirées, flux recompressés, polices et images dupliquées fusionnées. Le vérificateur parcourt ensuite la source et la sortie en parallèle. Les dictionnaires doivent avoir les mêmes clés et valeurs, et chaque flux doit se décoder en octets identiques. Une différence renvoie le fichier d'origine.
Les fichiers chiffrés, signés ou endommagés sont rendus octet pour octet. Les options avec perte sur les images sont à activer explicitement, et la preuve vérifie alors les limites de chaque changement.
Autour de ce noyau : création et édition de documents, formulaires, PDF/A, Factur-X, chiffrement AES, extraction de texte et d'images, conversion HTML et CSS vers PDF, OCR dans un paquet séparé, et signatures PAdES de B-B à B-LTA avec validation des chaînes de certificats et des listes de confiance européennes que vous fournissez.
Où cela en est
PdfNetStack est publié sur NuGet et GitHub sous licence MIT. Sur .NET 8 et plus, le paquet principal n'a aucune dépendance. Sur .NET Standard 2.0, il utilise System.Memory de Microsoft.
Nous le mesurons sur un corpus public de 77 PDF sous licence ouverte, 4 045 pages, listés par URL et SHA-256. Le profil sans perte en a réécrit 65 et économisé 12,1 %, de 196,6 Mio à 172,9 Mio. Les 12 autres sont signés ou chiffrés et restent intacts. Aucune réécriture n'a échoué à sa preuve. Le préréglage Balanced, avec perte mais à pleine résolution, économise 23,4 %, et le profil avec perte du banc d'essai 32,1 %.
La CI lance toute la suite de tests sur .NET Framework 4.8, .NET 8 et .NET 10, sous Windows, Linux et macOS. Le banc d'essai du corpus tourne chaque semaine et pour chaque version, et son rapport est joint à la version sur GitHub.
Nous ne publions pas de nombre d'utilisateurs. Le gain dépend de ce qui a produit le PDF : un fichier issu d'un outil déjà bien réglé a peu à gagner sans perte.
- C#
- .NET 8
- .NET 10
- .NET Standard 2.0
- Native AOT
- GitHub Actions
Du C# moderne, parce que l'optimisation consiste surtout à analyser, hacher et compresser, ce que .NET fait aujourd'hui à une vitesse proche du natif. Pas de binaire par plateforme à livrer, et une publication Native AOT sans avertissement.
Questions fréquentes
- PdfNetStack est-il un projet client ?
- Non. C'est une bibliothèque originale que nous maintenons en open source. Nous la citons comme preuve d'ingénierie, pas comme recommandation d'un client.
- Peut-on l'utiliser dans un produit commercial ?
- Oui. La licence MIT autorise l'usage commercial, sans redevance. La CI bloque tout paquet d'exécution dont la licence ne figure pas sur une liste vérifiée.
- L'optimisation dégrade-t-elle le document ?
- Pas par défaut. Le mode par défaut est sans perte et prouvé. La qualité d'image ne change que si vous activez une option avec perte, et un seuil de qualité peut alors écarter un changement trop visible.
- Quels environnements sont supportés ?
- .NET 8, 9, 10 et plus récents, ainsi que .NET Framework 4.6.2 à 4.8.1, Mono, Unity, Xamarin et .NET Core 2.0 ou plus via .NET Standard 2.0. Les bibliothèques principales se publient aussi en Native AOT sur Linux x64 et ARM64.
- Pouvez-vous l'intégrer dans notre système ?
- Oui. Nous pouvons intégrer le traitement PDF dans votre application .NET. Décrivez votre besoin et nous répondons avec un périmètre et un prix.
Du traitement PDF à intégrer dans votre système ?
Décrivez vos documents, vos volumes et ce qui bloque aujourd'hui, sans fichier confidentiel. Nous répondons avec un périmètre et un prix.
Décrire mon besoin- Bibliothèque PDF .NET : compression vérifiée, licence MITEn aidant un client à se séparer d'une bibliothèque PDF tierce, nous avons écrit PdfNetStack à partir des spécifications. Comment il vérifie chaque compression, et pourquoi nous le publions sous licence MIT.
- Serveur MCP Cypress : l'agent IA lance vos tests E2ELes agents de code écrivent des tests Cypress mais ne savent pas les exécuter. Ce que nous avons construit pour fermer la boucle, et ce que la production nous a appris.
- ParkAgenda · SaaS d'exploitation pour parkings aéroportRéservations multicanal ramenées à une file unique, puis navettes, plannings d'équipe, états des lieux et encaissement sur site.
- AutoMotoMarket.be · Marketplace véhicules d'occasionIngestion des stocks AutoScout et mobile.de, import CSV et XML, vendeurs vérifiés, trois langues, offre professionnelle par abonnement.
- Pavimmo · Migration CRM sans interruption d'activitéDes années d'historique client nettoyées, mappées et réconciliées, avec le système source en production du premier au dernier jour.
- cypress-mcp · serveur MCP open source pour CypressL'agent IA lance les tests Cypress, lit les échecs et relance sans copier-coller. Apache 2.0, Windows, macOS et Linux.

