IRONSOFTWAREHOME

Komprimieren von PDF-Dateien mit Node.js

Curtis Chau
Curtis Chau
Updated: 9. Mai 2026

Große PDF-Dateien verlangsamen Dateiübertragungen, erhöhen Speicherkosten und verschlechtern die Leistung in dokumentenintensiven Anwendungen. IronPDF for Node.js stellt die compressSize Methode bereit, die die eingebettetene Bildqualität reduziert und optional Bilder auf ihre sichtbaren Dimensionen im Dokument skaliert, was häufig die Dateigröße um 50% oder mehr reduziert, ohne die Dokumentenstruktur zu ändern.

Schnellstart: Ein PDF in Node.js komprimieren

Installieren Sie das Paket, laden Sie ein PDF und rufen Sie compressSize mit einem Qualitätswert zwischen 1 und 100 auf:

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

// Ein bestehendes PDF laden
const pdf = await PDFDocument.fromFile("report.pdf");

// Eingebettete Bilder auf 60 % JPEG-Qualität komprimieren
T>await pdf.compressSize(60);

// Ergebnis speichern
await pdf.saveAs("report-compressed.pdf");
Text

Warum ist die PDF-Dateigröße for Node.js-Anwendungen wichtig?

Die PDF-Größe wirkt sich direkt auf zwei betriebliche Belange aus: Übertragungsgeschwindigkeit und Speicherkosten. Ein 20 MB großer Bericht, der über einen API-Endpunkt gesendet wird, erhöht die messbare Latenzzeit bei mobilen Verbindungen. In Batch-Verarbeitungspipelines, die täglich Tausende von Dokumenten verarbeiten, summiert sich sogar eine Größenreduzierung von 30 % zu signifikanten Einsparungen bei den Speicheranforderungen.

Die compressSize Methode von IronPDF zielt auf den dominanten Beitrag zu großen PDF-Dateien: eingebettete Bilder. Text und Vektorgrafiken werden auf PDF-Objektebene während des Renderings gut komprimiert. Rasterbilder, die in der Originalauflösung eingebettet sind, machen jedoch den Großteil des übermäßigen Gewichts in typischen Geschäftsdokumenten aus. Das Reduzieren der JPEG-Qualität von der Standardeinstellung (oft 95-100 %) auf 60-85 % bietet die größte Reduzierung der Größe mit dem geringsten sichtbaren Qualitätsverlust.

Tipps: Qualitätswerte ab 80 sind auf normalen Bildschirmauflösungen im Allgemeinen nicht vom Original zu unterscheiden. Werte unter 60 sind für Archivierungs- oder Vorschauanwendungen reserviert, bei denen die Dateigröße die primäre Einschränkung ist.

Wie funktioniert die compressSize Methode?

Die compressSize Methode akzeptiert zwei Parameter: quality (erforderlich, ganzzahlig 1-100) und scaleImages (optional, boolean). Wenn scaleImages false ist (Standard), kodiert die Methode jedes eingebettete JPEG in der Zielqualität neu. Wenn scaleImages true ist, werden die Bilder auch auf ihre sichtbare Größe im PDF-Layout heruntergesampelt, wodurch die Auflösung für Bilder reduziert wird, die klein auf der Seite dargestellt werden.

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-with-scaling.js
import { PdfDocument } from "@ironsoftware/IronPDF";

// Quelldokument laden
const pdf = await PdfDocument.fromFile("product-catalog.pdf");

// Bilder auf 90 % Qualität komprimieren und auf sichtbare Größe skalieren
await pdf.compressSize(90, true);

// Das optimierte Dokument speichern
await pdf.saveAs("product-catalog-optimized.pdf");
Text

Das scaleImages Argument ist besonders effektiv für PDFs, die aus hochauflösenden Scans oder HTML-Vorlagen erstellt wurden, die Bilder in voller Auflösung einbetten, unabhängig von ihrer Darstellungsgröße. Das Aktivieren kann die Dateigröße mehr reduzieren als nur die Qualitätsanpassung allein, ohne sichtbare Verschlechterung bei typischen Druck- oder Bildschirmauflösungen.

Die Methode ändert das PdfDocument Objekt direkt. Wenn Sie das Original beibehalten müssen, klonen Sie das Dokument, bevor Sie die compressSize aufrufen, oder verwenden Sie separate Speicherpfade.

Welche Qualitätseinstellung sollte ich verwenden?

Der richtige Qualitätswert hängt davon ab, wie das PDF nach der Kompression verwendet wird:

  • 90-100: Nahezu verlustfrei. Verwenden, wenn das Dokument gedruckt oder in voller Zoomansicht angezeigt wird.
  • 80-89: Hohe Qualität, merklich kleinere Datei. Der Standard-Ausgangspunkt für die meisten Geschäftsdokumente.
  • 60-79: Mittlere Qualität. Akzeptabel für Bildschirmanzeige, Webbereitstellung und E-Mail-Anhänge.
  • Unter 60: Niedrige Qualität. Geeignet für Vorschau-Miniaturansichten, Archivkopien oder Fälle, in denen die Dateigröße kritisch ist.
Hinweis:: Die Qualitätsskala gilt speziell für die JPEG-Bildrekodierung. Text, Vektorgrafiken und nicht-JPEG-Bilder im PDF werden von der Qualitätseinstellung nicht beeinflusst.

Wie messe ich das Kompressionsergebnis in Node.js?

Die Überprüfung, ob die Komprimierung die erwartete Reduzierung erreicht, ist mit dem Node.js fs Modul einfach. Lesen Sie die Dateigröße vor und nach dem Aufruf von compressSize und berechnen Sie dann das Verhältnis, um zu bestätigen, dass das Ergebnis den Anforderungen Ihrer Anwendung entspricht.

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

Node.js fs.statSync API gibt ein Stats Objekt zurück, das die size Eigenschaft in Bytes einschließt. Für Produktionspipelines loggen Sie dieses Verhältnis pro Dokument, so dass Sie Ausreißer identifizieren können, bei denen die Kompression die erwartete Größe nicht reduziert hat - typischerweise bereits komprimierte Scandokumente.

Wichtig: Setzen Sie die IRONPDF_ENGINE_PATH Umgebungsvariable oder konfigurieren IronPdfGlobalConfig vor der Bearbeitung von Dateien in einer Server-Umgebung. Siehe die IronPDF Node.js-Dokumentation für Details zur Engine-Einrichtung.

Wie komprimiere ich mehrere PDFs in einem Batch?

Produktionsanwendungen komprimieren selten ein einzelnes Dokument isoliert. Das folgende Beispiel verarbeitet ein Array von Dateipfaden zugleich mit Promise.all, das das Node.js Event-Loop mehrere compressSize Operationen ohne Blockierung handhaben lässt:

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/batch-compress.js
import { PdfDocument } from "@ironsoftware/IronPDF";
T>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);
await pdf.compressSize(quality);

            const outputPath = inputPath.replace(".pdf", "-compressed.pdf");
await pdf.saveAs(outputPath);

            return { input: inputPath, output: outputPath };
})
);

    Ergebnisse zurückgeben;
}

// Verwendung
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

Jeder Aufruf von PdfDocument.fromFile und compressSize ist unabhängig, wodurch sie sicher parallelisiert werden können. Bei sehr großen Stapeln (hunderten von Dateien) sollten Sie das Array zerlegen, um das Überschreiten von Node.js Arbeitsspeicherlimits zu vermeiden. Node.js Dokumentation über den Event-Loop erklärt, wie Promise.all gleichzeitiges I/O ohne Blockierung des Hauptthreads plant.

Wie kombiniere ich die Kompression mit anderen PDF-Operationen?

Die Kompression passt sich natürlich in eine größere Dokumentverarbeitungskette ein. Ein häufiges Muster ist, ein PDF aus HTML zu generieren, ein Wasserzeichen oder eine Unterschrift hinzuzufügen und dann vor der Lieferung zu komprimieren:

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

// HTML in PDF rendern
const renderer = new ChromePdfRenderer();
const pdf = await renderer.renderHtmlAsPdf("<h1>Rechnung #1042</h1><p>Betrag fällig: $540,00</p>");

// Vor dem Speichern komprimieren — reduziert das Gewicht von Chrome gerenderten Inhalten
T>await pdf.compressSize(85);

// Das endgültige Dokument speichern
await pdf.saveAs("invoice-1042.pdf");
Text

Die ChromePdfRenderer bettet oft Hintergrundbilder und CSS-verknüpfte Assets in voller Auflösung ein. Der Aufruf von compressSize nach dem Rendering reduziert konsistent die Dateigröße für HTML-basierte PDFs. Das IronPDF HTML zu PDF Tutorial behandelt die Renderer-Konfiguration detailliert.

Für Dokumente, die auch digitale Signaturen benötigen, wenden Sie die Signatur nach der Kompression an. Das Signieren sperrt den Bytestrom des Dokuments, und weitere Änderungen würden die Signatur ungültig machen.

Beim Arbeiten mit mehrseitigen Dokumenten vereinen Sie sie mit PdfDocument.merge(), bevor Sie sie komprimieren. Das Komprimieren des kombinierten Ergebnisses ist effizienter als das Komprimieren einzelner Dateien und erneutes Zusammenführen.

Tipps: Zusammenführen mehrseitiger Dokumente vor dem Komprimieren. Das Komprimieren des zusammengeführten Ergebnisses ist effizienter als das Komprimieren einzelner Dateien und erneutes Zusammenführen.

Was sind die nächsten Schritte zur PDF-Komprimierung in Node.js?

Die compressSize Methode umfasst den häufigsten Komprimierungs-Anwendungsfall: das Reduzieren des eingebetteten Bildgewichts. Für spezialisierte Szenarien bietet das PDF-Komprimierungsbeispiel von IronPDF zusätzliche funktionierende Codebeispiele, und die API-Referenz dokumentiert alle verfügbaren Methodensignaturen.

IronPDF unterstützt auch das Konvertieren von Bildern in PDF, das Lesen von PDF-Text und das Entfernen von Seiten aus einem PDF — alle Operationen sind in die gleiche PdfDocument API integriert. Für einen vollständigen Überblick über die PDF-Funktionen in Node.js, sehen Sie sich die IronPDF Node.js-Dokumentation an.

Bereit, die Komprimierung in Ihrem Projekt zu testen? Starten Sie Ihre kostenlose Testversion, um die oben genannten Beispiele ohne Wasserzeichen auszuführen, oder sehen Sie sich Lizenzoptionen für die Bereitstellung in der Produktion an.

PdfDocument

Häufig gestellte Fragen

Wie komprimiere ich eine PDF in Node.js mit IronPDF?

Laden Sie eine PDF mit PdfDocument.fromFile(path), rufen Sie await pdf.compressSize(quality) mit einem Qualitätswert zwischen 1 und 100 auf und speichern Sie dann das Ergebnis mit await pdf.saveAs(outputPath). Installieren Sie zuerst das Paket mit npm install @ironsoftware/ironpdf.

Was steuert der Qualitätsparameter in compressSize?

Der Qualitätsparameter (Ganzzahl 1-100) steuert das JPEG-Re-Codierungslevel für eingebettete Rasterbilder. Werte von 80-89 erzeugen hochwertige Ausgaben mit spürbarer Größenreduktion und sind der empfohlene Ausgangspunkt für die meisten Geschäftsdokumente. Werte unter 60 sind geeignet für Archivierungs- oder Vorschauzwecke, bei denen die Dateigröße die primäre Einschränkung ist.

Was ist der Parameter scaleImages in compressSize?

Der optionale zweite Parameter scaleImages (Boolean, Standardwert false) reduziert eingebettete Bilder, sodass sie ihre sichtbaren Abmessungen im PDF-Layout erreichen. Das Setzen auf true ist effektiv für PDFs, die aus Hoch-DPI-Scans oder HTML-Vorlagen generiert wurden, welche Bilder in voller Auflösung einbetten, unabhängig von ihrer Anzeigengröße.

Wie stark können PDF-Dateigrößen mit compressSize reduziert werden?

Die Reduktion hängt vom Inhalt des Quell-PDFs ab. Dokumente mit vielen hochauflösenden Rasterbildern können um 50% oder mehr reduziert werden. PDFs, die hauptsächlich Text und Vektorgrafiken enthalten, werden kaum reduziert, da compressSize speziell auf JPEG-Bild-Re-Codierung abzielt.

Wie messe ich das Kompressionsergebnis in Node.js?

Verwenden Sie fs.statSync(path).size, um die Dateigröße in Bytes vor und nach der Komprimierung zu lesen. Berechnen Sie das Verhältnis als ((vorher - nachher) / vorher) * 100, um die prozentuale Reduktion zu erhalten.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Bereit anzufangen?

Version:2026.6gerade veröffentlicht

Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
Node.js Modul-Download für PDF
Mit npm installieren

Version: 2026.6

  1. Herunterladen und Node.js 12+ installieren.
  2. Führen Sie den obigen Befehl im Terminal aus.

Lizenzen ab 749 $

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.