Comment compresser des fichiers PDF à l'aide de Node.js

This article was translated from English: Does it need improvement?
Translated
View the article in English

Les fichiers PDF volumineux ralentissent les transferts de fichiers, augmentent les coûts de stockage et dégradent les performances dans les applications où les documents sont nombreux. IronPDF for Node.js fournit la méthode compressSize, qui réduit la qualité des images intégrées et, en option, redimensionne les images à leurs dimensions visibles dans le document, réduisant souvent la taille du fichier de 50 % ou plus sans modifier la structure du document.

Démarrage rapide : Compresser un PDF dans Node.js

Installez le paquet, chargez un PDF et appelez compressSize avec une valeur de qualité entre 1 et 100 :

```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/quickstart.js import { PdfDocument } from "@ironsoftware/IronPDF";

// Chargez un PDF existant const pdf = await PDFDocument.fromFile("report.pdf");

// Compressez les images incorporées à 60 % de qualité JPEG T57 await pdf.compressSize(60);

// Enregistrez le résultat await pdf.saveAs("report-compressed.pdf");


<div class="hsg-featured-snippet">
<h3>Flux de travail minimal (5 étapes)</h3>

1. Installez IronPDF : `npm install @ironsoftware/ironpdf`
2. Importez `PdfDocument` de `@ironsoftware/ironpdf`
3. Chargez le fichier source avec `PdfDocument.fromFile(path)`
4. Appelez `await pdf.compressSize(quality)` -- plage de qualité 1-100
5. Sauvegardez le résultat avec `await pdf.saveAs(outputPath)`
</div>

## Pourquoi la taille des fichiers PDF est-elle importante pour les applications Node.js ?

La taille du PDF affecte directement deux aspects opérationnels : la vitesse de livraison et le coût de stockage. Un rapport PDF de 20 Mo envoyé via un point de terminaison API ajoute une latence mesurable sur les connexions mobiles. Dans les pipelines de traitement par lots qui gèrent des milliers de documents par jour, même une réduction de 30 % de la taille se traduit par des économies de stockage significatives.

La méthode `compressSize` de IronPDF cible le principal contributeur à la taille importante des fichiers PDF : les images intégrées. Les textes et les graphiques vectoriels se compressent bien au niveau des objets PDF lors du rendu, mais les images raster intégrées à leur résolution d'origine représentent la majeure partie du poids excessif dans les documents d'affaires typiques. Réduire la qualité JPEG du niveau par défaut (souvent 95-100%) à 60-85% permet la plus grande réduction de taille avec la perte de qualité visible la plus faible.

ConseilsLes valeurs de qualité à 80 ou plus sont généralement indiscernables par rapport à la source à une résolution d'écran normale. Réservez les valeurs en dessous de 60 pour les cas d'utilisation d'archivage ou de prévisualisation où la taille du fichier est la contrainte principale.
## Comment fonctionne la méthode `compressSize` ? La méthode `compressSize` accepte deux paramètres : `quality` (requis, entier 1-100) et `scaleImages` (facultatif, booléen). Lorsque `scaleImages` est `false` (par défaut), la méthode recode chaque JPEG intégré à la qualité cible. Lorsque `scaleImages` est `true`, elle réduit également les images pour correspondre à leur taille visible dans la mise en page PDF, réduisant la résolution pour les images rendues à petite échelle sur la page. ```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-with-scaling.js import { PdfDocument } from "@ironsoftware/IronPDF"; // Charger le document source const pdf = await PdfDocument.fromFile("product-catalog.pdf"); // Compresser les images à 90% de qualité et réduire à la taille visible await pdf.compressSize(90, true); // Enregistrer le document optimisé await pdf.saveAs("product-catalog-optimized.pdf");

L'argument scaleImages est particulièrement efficace pour les PDFs générés à partir de numérisations haute DPI ou d'e HTML modèles qui intègrent des images en pleine résolution, quel que soit leur taille d'affichage. L'activer peut réduire encore plus la taille du fichier que l'ajustement de la qualité seul, sans aucune dégradation visible lors de l'impression ou à l'écran.

La méthode modifie l'objet PdfDocument sur place. Si vous devez conserver l'original, clonez le document avant d'appeler compressSize ou utilisez des chemins de sauvegarde séparés.

Quel réglage de qualité devrais-je utiliser ?

La bonne valeur de qualité dépendra de l'utilisation du PDF après compression :

  • 90-100 : Presque sans perte. À utiliser quand le document sera imprimé ou consulté avec un zoom complet.
  • 80-89 : Haute qualité, fichier sensiblement plus petit. Point de départ par défaut pour la plupart des documents d'affaires.
  • 60-79 : Qualité moyenne. Acceptable pour l'affichage à l'écran, la livraison web et les pièces jointes par e-mail.
  • En dessous de 60 : Basse qualité. Convient pour les vignettes de prévisualisation, les copies d'archive ou les cas où la taille du fichier est critique.

Veuillez noterL'échelle de qualité s'applique spécifiquement au réencodage d'images JPEG. Le texte, les graphiques vectoriels et les images non JPEG du PDF ne sont pas affectés par le réglage de qualité.

Comment mesurer le résultat de la compression dans Node.js ?

Vérifier que la compression a bien réduit la taille attendue est simple en utilisant le module Node.js fs. Lisez la taille du fichier avant et après avoir appelé compressSize, puis calculez le ratio pour confirmer que le résultat répond aux exigences de votre application.

```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/measure-compression.js import { PdfDocument } from "@ironsoftware/IronPDF"; import { statSync } from "fs";

const inputPath = "annual-report.pdf"; const outputPath = "annual-report-compressed.PDF";

const beforeBytes = statSync(inputPath).size;

const pdf = await PdfDocument.fromFile(inputPath); T83 await pdf.compressSize(75); await pdf.saveAs(outputPath);

const afterBytes = statSync(outputPath).size; const reduction = (((beforeBytes - afterBytes) / beforeBytes) * 100).toFixed(1);

console.log(Before: ${(beforeBytes / 1024).toFixed(1)} KB); console.log(After: ${(afterBytes / 1024).toFixed(1)} KB); console.log(Reduced by ${reduction}%);


L'API [Node.js `fs.statSync`](https://nodejs.org/api/fs.html#fsstatsynspath-options) retourne un objet `Stats` qui inclut la propriété `size` en octets. Pour les pipelines de production, consignez ce rapport par document afin de pouvoir identifier les exceptions où la compression n'a pas réduit la taille comme prévu - généralement des documents scannés déjà compressés à la source.

ImportantDéfinissez la variable d'environnement `IRONPDF_ENGINE_PATH` ou configurez `IronPdfGlobalConfig` avant de traiter des fichiers dans un environnement serveur. Voir la [documentation IronPDF for Node.js](https://ironpdf.com/nodejs/docs/) pour les détails de configuration de l'engin.
## Comment compresser plusieurs PDF par lots ? Les applications de production compressent rarement un seul document de manière isolée. L'exemple ci-dessous traite un tableau de chemins de fichiers simultanément en utilisant `Promise.all`, qui permet à la boucle d'événements Node.js de gérer plusieurs opérations `compressSize` sans blocage : ```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/batch-compress.js import { PdfDocument } from "@ironsoftware/IronPDF"; T94 import path from "path"; async function compressPdfFiles(inputPaths, quality = 80) { const results = await Promise.all( inputPaths.map(async (inputPath) =&gt; { const pdf = await PdfDocument.fromFile(inputPath); T97 await pdf.compressSize(quality); const outputPath = inputPath.replace(".pdf", "-compressed.pdf"); T84 await pdf.saveAs(outputPath); return { input: inputPath, output: outputPath }; T100 }) T101 ); T102 return results; } // Utilisation const files = ["report-q1.pdf", "report-q2.pdf", "report-q3.pdf"]; const compressed = await compressPdfFiles(files, 75); compressed.forEach(r => console.log(`Saved: ${r.output}`));

Chaque appel à PdfDocument.fromFile et compressSize est indépendant, ce qui les rend sûrs pour être parallélisés. Pour des lots très importants (centaines de fichiers), envisagez de découper le tableau pour éviter de dépasser les limites de mémoire de Node.js. La documentation Node.js sur la boucle d'événements explique comment Promise.all planifie les I/O concurrentes sans bloquer le thread principal.

Comment combiner la compression avec d'autres opérations PDF ?

La compression s'intègre naturellement dans une chaîne de traitement de documents plus large. Un schéma courant est de générer un PDF à partir de HTML, d'ajouter un filigrane ou une signature, puis de compresser avant la livraison :

```javascript {.line-numbers} //:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-after-render.js import { PdfDocument, ChromePdfRenderer } from "@ironsoftware/IronPDF";

// Rendre HTML en PDF const renderer = new ChromePdfRenderer(); const pdf = await renderer.renderHtmlAsPdf("

Montant dû : $540.00

");

// Compresser avant d'enregistrer - réduit le poids de l'image du contenu rendu par Chrome T110 await pdf.compressSize(85);

// Enregistrer le document final await pdf.saveAs("invoice-1042.pdf");



Le `ChromePdfRenderer` intègre souvent des images de fond et des assets référencés par CSS en pleine résolution. Appeler `compressSize` après le rendu réduit systématiquement la taille du fichier pour les PDFs provenant de HTML. Le [tutoriel HTML vers PDF d'IronPDF](https://ironpdf.com/nodejs/tutorials/html-to-pdf/) couvre la configuration du renderer en détail.

Pour les documents qui nécessitent également des [signatures numériques](https://ironpdf.com/nodejs/examples/digitally-sign-a-pdf/), appliquez la signature après compression. Signer verrouille le flux de bytes du document et toute modification ultérieure invaliderait la signature.

Lorsqu'on travaille avec des documents multi-pages, fusionnez-les avec [`PdfDocument.merge()`](https://ironpdf.com/nodejs/examples/merge-pdfs/) avant de compresser. Compresser le résultat fusionné est plus efficace que de compresser les fichiers individuels et de refaire la fusion.

ConseilsFusionnez les documents multipages avant de compresser. Compresser le résultat fusionné est plus efficace que de compresser les fichiers individuels et de refaire la fusion.
## Quelles sont les prochaines étapes pour la compression PDF dans Node.js ? La méthode `compressSize` couvre le cas d'utilisation le plus courant de la compression : réduire le poids des images intégrées. Pour des scénarios spécialisés, l'[exemple de compression PDF](https://ironpdf.com/nodejs/examples/pdf-compression/) d'IronPDF offre des extraits de code supplémentaires fonctionnels, et la [référence de l'API](https://ironpdf.com/nodejs/object-reference/api/) documente toutes les signatures de méthodes disponibles. IronPDF prend également en charge la conversion [d'images en PDF](https://ironpdf.com/nodejs/examples/image-to-pdf/), [la lecture de texte PDF](https://ironpdf.com/nodejs/examples/reading-pdf-text/), et [la suppression de pages d'un PDF](https://ironpdf.com/nodejs/examples/remove-page-from-pdf/) — toutes les opérations qui s'intègrent avec la même API `PdfDocument`. Pour une vue d'ensemble complète des capacités PDF de Node.js, consultez les [docs IronPDF for Node.js](https://ironpdf.com/nodejs/docs/). Prêt à tester la compression dans votre projet ? [Commencez votre essai gratuit](#trial-license) pour exécuter les exemples ci-dessus sans filigrane, ou [voir les options de licence](#licensing) pour le déploiement en production. `PdfDocument`

Questions Fréquemment Posées

Comment compresser un PDF dans Node.js avec IronPDF ?

Chargez un PDF en utilisant PdfDocument.fromFile(path), appelez await pdf.compressSize(quality) avec une valeur de qualité entre 1 et 100, puis enregistrez le résultat avec await pdf.saveAs(outputPath). Installez d'abord le package avec npm install @ironsoftware/ironpdf.

Que contrôle le paramètre de qualité dans compressSize ?

Le paramètre de qualité (entier 1-100) contrôle le niveau de réencodage JPEG pour les images raster intégrées. Des valeurs de 80-89 produisent une sortie de haute qualité avec une réduction de taille notable et sont le point de départ recommandé pour la plupart des documents professionnels. Les valeurs en dessous de 60 conviennent aux cas d'utilisation d'archivage ou d'aperçu où la taille du fichier est la contrainte principale.

Qu'est-ce que le paramètre scaleImages dans compressSize ?

Le second paramètre optionnel scaleImages (booléen, false par défaut) rééchantillonne les images intégrées pour correspondre à leurs dimensions visibles dans la mise en page du PDF. Le définir sur true est efficace pour les PDF générés à partir de scans haute DPI ou de modèles HTML qui intègrent des images à pleine résolution indépendamment de leur taille d'affichage.

De combien les tailles de fichiers PDF peuvent-elles être réduites à l'aide de compressSize ?

La réduction dépend du contenu du PDF source. Les documents avec de nombreuses images raster haute résolution peuvent voir des réductions de 50 % ou plus. Les PDF contenant principalement du texte et des graphiques vectoriels verront une réduction minimale car compressSize cible spécifiquement le réencodage des images JPEG.

Comment mesurer le résultat de la compression dans Node.js ?

Utilisez fs.statSync(path).size pour lire la taille du fichier en octets avant et après compression. Calculez le ratio comme ((before - after) / before) * 100 pour obtenir le pourcentage de réduction.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite
Prêt à commencer?
Version : 2026.6 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ?
exécuter un échantillon Regardez votre code HTML se transformer en PDF.