Comment compresser des PDF en C# ; avec IronPDF
IronPDF compresse les PDF en C# via la méthode CompressAndSaveAs, qui réencode les images intégrées en JPEG et supprime éventuellement l'arborescence de structure PDF pour réduire la taille du fichier en un seul appel. Les méthodes CompressPdfToBytes et CompressPdfToStream accomplissent le même travail en mémoire lorsque vous ne souhaitez jamais toucher au disque.
Les images représentent généralement la majeure partie de la taille d'un PDF, et les documents riches en tableaux comportent une arborescence structurelle qui ajoute encore du poids. IronPDF cible les deux, donc le même appel fonctionne sur des PDFs chargés depuis le disque ou conservés dans un flux en mémoire.
Démarrage rapide : Compresser des fichiers PDF avec IronPDF
Chargez votre PDF avec PdfDocument.FromFile et appelez CompressAndSaveAs pour réencoder ses images et écrire la copie allégée en une seule étape. Le deuxième argument est la qualité JPEG.
-
Installez IronPDF avec le Gestionnaire de Packages NuGet
-
Copiez et exécutez cet extrait de code.
PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); -
Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit
Flux de travail minimal (3 étapes)
- Téléchargez la bibliothèque C# pour la compression des PDF à partir de NuGet
- Importez un PDF existant ou créez un nouveau PDF
- Appelez
CompressAndSaveAs(outputPath, quality, removeStructureTree)pour compresser les images, éventuellement supprimer l'arborescence structurelle, et enregistrer le résultat.
Les méthodes précédentes pour la compression telles que CompressImages, CompressStructTree et Compress(CompressionOptions) sont obsolètes.
Comment compresser les images dans les PDF?
Passez une valeur JPEG quality comme deuxième argument à CompressAndSaveAs et IronPDF réencode chaque image intégrée à cette qualité. Les valeurs varient de 0 (compression maximale) à 100 (perte minimale), et le moteur sous-jacent décide comment chaque valeur se traduit en sortie. C'est la méthode à utiliser lorsqu'un document contient des images intégrées.
À titre indicatif :
- 90 et plus : haute qualité
- 80 à 90 : qualité moyenne
- 70 à 80 : basse qualité
Un nombre plus bas comprime davantage mais peut introduire des artefacts visibles, et la quantité de perte de clarté dépend de l'image source, donc testez quelques réglages avec votre propre contenu pour trouver l'équilibre que vous voulez.
Entrée
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-image.cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
Sortie
Quels résultats puis-je attendre de la compression d'images ?
Réduit de 39,24% sur un rendu Wikipédia.
Comment compresser l'arborescence d'un PDF?
Utilisez removeStructureTree: true comme troisième argument pour CompressAndSaveAs afin de supprimer l'arborescence de structure que le moteur Chrome écrit dans un PDF. L'économie est la plus importante sur les PDFs du moteur Chrome qui contiennent des données de table étendues. Certains moteurs de rendu n'émettent aucune structure, ce qui ne laisse rien à ôter pour cette fonction.
Supprimer la structure peut affaiblir la sélection et la mise en surbrillance du texte, alors pesez cela contre le gain de taille si les lecteurs ont plus tard besoin de extraire du texte et des images du résultat.
Testez CompressAndSaveAs avec la suppression de la structure en utilisant ce PDF avec des données de tableau.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("table.pdf");
// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")
' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
Quelle réduction de la taille des fichiers la compression de la structure arborescente permet-elle d'obtenir?
Réduit de 67,90%. La figure grimpe à mesure que le PDF de tables croît.
Iron Suite joue un rôle crucial dans nos opérations. Ce sont des outils qui augmentent l'efficacité de l'entreprise, y compris la création de plans d'étage et l'amélioration de la gestion des stocks.
Comment appliquer les deux méthodes de compression ensemble?
Fournissez une valeur quality et définissez removeStructureTree à true dans le même appel CompressAndSaveAs pour réduire les deux sources de surcharge en même temps. Cette combinaison vaut son pesant d'or sur les documents qui mélangent images et données structurées, tels que les rapports avec graphiques ou factures avec tableaux intégrés.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
Quels Paramètres CompressAndSaveAs Accepte-t-il?
-
outputPath(string) : le chemin de fichier où le PDF compressé est écrit. -
quality(int?, de 0 à 100) : qualité JPEG appliquée à chaque image intégrée. Les valeurs plus basses produisent des fichiers plus petits. Utiliseznullpour éviter complètement la compression des images. removeStructureTree(bool, par défautfalse) : lorsquetrue, supprime l'arborescence de structure du PDF pour réduire davantage la taille du fichier. Très efficace pour les PDF générés en HTML et contenant des tableaux.
Laissez le cas d'utilisation régler le bouton. Les copies archivistiques favorisent souvent la qualité plutôt que la taille, tandis que la distribution web récompense le fichier plus petit. Le même compromis s'applique lorsque vous compressez des documents conformes PDF/A, où la fidélité de l'image peut être la priorité.
Comment compresser des fichiers PDF sans les enregistrer sur le disque dur ?
Les réponses API, les fonctions cloud et les pièces jointes par e-mail ont rarement besoin d'un PDF compressé sur disque. CompressPdfToBytes renvoie le résultat sous forme de tableau d'octets, vous décidez donc où les octets vont ensuite.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()
File.WriteAllBytes("compressed.pdf", compressedBytes)
Si vous avez besoin d'un Stream plutôt que d'un tableau d'octets, appelez CompressPdfToStream et copiez-le vers votre destination. Cela convient pour acheminer la sortie vers le corps d'une réponse HTTP, un téléchargement sur un stockage cloud, ou tout flux de travail basé sur les flux.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();
using var fileStream = File.Create("compressed.pdf");
compressedStream.CopyTo(fileStream);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
Using fileStream = File.Create("compressed.pdf")
compressedStream.CopyTo(fileStream)
End Using
End Using
Quelles Options CompressionMode Sont Disponibles?
Les deux CompressPdfToBytes et CompressPdfToStream prennent un argument optionnel CompressionMode qui détermine comment le travail est effectué. Les cibles de déploiement diffèrent par le fait qu'elles permettent ou non l'accès au disque, et le mode vous permet de choisir le bon compromis :
| Mode | Accès disque | Rééchantillonnage des images | Taille de la sortie |
|---|---|---|---|
Automatic (par défaut) |
Essaie le disque, revient à la mémoire | Quand le disque est disponible | Le plus petit où permis |
FastMemory |
Aucun | Non | Plus grand |
HighQuality |
Répertoire temporaire requis | Oui | Le plus petit |
Automatic tente HighQuality en premier et revient à FastMemory lorsque le répertoire temporaire est inaccesssible. L'exemple ci-dessous force HighQuality pour la sortie la plus petite, nécessitant un accès en écriture au répertoire temporaire du système à l'exécution.
:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-mode.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");
// HighQuality resamples images using the system temp directory, so it produces
// the smallest output but needs write access to that directory at runtime
byte[] compressedBytes = pdf.CompressPdfToBytes(50, false, CompressionMode.HighQuality);
File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")
' HighQuality resamples images using the system temp directory, so it produces
' the smallest output but needs write access to that directory at runtime
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes(50, False, CompressionMode.HighQuality)
File.WriteAllBytes("compressed.pdf", compressedBytes)
Sortie
CompressPdfToBytes et CompressPdfToStream sont désormais disponibles sur toutes les plateformes IronPDF, y compris Java, Node.js et Python.
Conclusion
Vous avez maintenant une méthode, CompressAndSaveAs, qui réencode les images et supprime l'arborescence, ainsi que CompressPdfToBytes et CompressPdfToStream pour le même travail en mémoire sous un CompressionMode choisi. Une prochaine étape naturelle consiste à transformer ces pages allégées en miniatures avec la rasterisation PDF.
Questions Fréquemment Posées
Dans quelle mesure la compression permet-elle de réduire la taille des fichiers PDF ?
Les résultats varient selon le contenu. Dans les exemples montrés, la compression d'image a réduit un fichier de 39,24 % et la suppression de l'arborescence de structures a réduit un PDF lourd de tableaux de 67,90 %. Les documents riches en images et en tableaux voient le plus d'économie.
Comment IronPDF compresse-t-il les PDFs en C# ?
IronPDF gère la compression via une méthode unique : CompressAndSaveAs . Elle réduit la taille des images intégrées en utilisant une qualité JPEG configurable (0–100) et peut, en option, supprimer l’arborescence interne du PDF en définissant removeStructureTree: true , ce qui est particulièrement efficace pour les documents contenant de nombreux tableaux.
Quels niveaux de qualité dois-je utiliser pour la compression JPEG dans les PDF ?
IronPDF prend en charge une qualité de compression JPEG allant de 1 % à 100 %. Les niveaux recommandés sont les suivants : 90% et plus pour la haute qualité, 80%-90% pour la qualité moyenne, et 70%-80% pour la basse qualité. Le réglage optimal dépend de l'équilibre entre la taille du fichier et les exigences de qualité visuelle.
Puis-je compresser un PDF en une seule ligne de code ?
Oui, IronPDF permet la compression PDF en une seule ligne de code : PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); Cela charge un PDF, compresse les images à 40% de qualité et enregistre le résultat.
La compression fonctionne-t-elle avec les PDF créés à partir de HTML ?
Oui, la compression d'IronPDF fonctionne avec les PDFs créés par diverses méthodes, y compris les conversions de chaînes HTML en PDF, les conversions d'URL en PDF, et les conversions de fichiers HTML, ainsi que les fichiers PDF existants.
Quels sont les types de contenu qui bénéficient le plus de la compression PDF ?
Les images représentent généralement la majeure partie de la taille des fichiers PDF, ce qui fait des documents contenant beaucoup d'images des candidats idéaux pour la compression. En outre, les PDF comportant des structures de tableaux complexes bénéficient de la fonction de compression des arbres de structure d'IronPDF.
Est-il possible de compresser un PDF sans l'enregistrer sur le disque ?
Oui, IronPDF propose les méthodes CompressPdfToBytes et CompressPdfToStream qui renvoient le PDF compressé sous forme de tableau d'octets ou de flux. Ces deux méthodes acceptent un paramètre optionnel CompressionMode avec les options Automatic, FastMemory ou HighQuality.
La compression PDF est-elle disponible dans d'autres langages que C# ?
Oui, CompressPdfToBytes et CompressPdfToStream sont désormais disponibles sur toutes les plateformes IronPDF , y compris Java, Node.js et Python.
Comment puis-je obtenir un contrôle granulaire sur la compression des PDF en C# ?
Passez un objet AdvancedCompressionOptions à CompressAndSaveAs pour régler le pipeline, y compris le rééchantillonnage DPI de l'image via TargetImageDpi, la qualité de ré-encodage JPEG via JpegQuality et le niveau de CompressionLevel zlib. La surcharge d'origine CompressAndSaveAs(outputPath, quality, removeStructureTree) fonctionne toujours et produit le même résultat qu'auparavant.

