IRONSOFTWAREHOME

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

Curtis Chau
Curtis Chau
Updated: 9 mai 2026

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 :

//: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");
Text

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.

Conseils: Les 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.

//: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");
Text

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 noter: L'é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.

//: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}%`);
Text

L'API Node.js fs.statSync 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.

Important: Dé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 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 :

//: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) => {
            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}`));
Text

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 :

//: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("<h1>Facture #1042</h1><p>Montant dû : $540.00</p>");

// 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");
Text

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 couvre la configuration du renderer en détail.

Pour les documents qui nécessitent également des signatures numériques, 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() avant de compresser. Compresser le résultat fusionné est plus efficace que de compresser les fichiers individuels et de refaire la fusion.

Conseils: Fusionnez 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 d'IronPDF offre des extraits de code supplémentaires fonctionnels, et la référence de l'API documente toutes les signatures de méthodes disponibles.

IronPDF prend également en charge la conversion d'images en PDF, la lecture de texte PDF, et la suppression de pages d'un 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.

Prêt à tester la compression dans votre projet ? Commencez votre essai gratuit pour exécuter les exemples ci-dessus sans filigrane, ou voir les options de licence 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.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Prêt à commencer?

Version :2026.6vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Téléchargement du module Node.js pour PDF
Installer avec npm

Version : 2026.6

  1. Téléchargez et installez Node.js 12+.
  2. Exécutez la commande ci-dessus dans le terminal.

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise