Komprimieren von PDF-Dateien mit Node.js

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

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:

```javascript {.line-numbers} //: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");


<div class="hsg-featured-snippet">
<h3>Minimaler Arbeitsablauf (5 Schritte)</h3>

1. IronPDF installieren: `npm install @ironsoftware/ironpdf`
2. `PdfDocument` von `@ironsoftware/ironpdf` importieren
3. Die Quelldatei mit `PdfDocument.fromFile(path)` laden
4. `await pdf.compressSize(quality)` aufrufen — Qualitätsbereich 1-100
5. Das Ergebnis mit `await pdf.saveAs(outputPath)` speichern
</div>

## 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.

TippsQualitä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. ```javascript {.line-numbers} //: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");

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.

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


[Node.js `fs.statSync` API](https://nodejs.org/api/fs.html#fsstatsynspath-options) 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.

WichtigSetzen Sie die `IRONPDF_ENGINE_PATH` Umgebungsvariable oder konfigurieren `IronPdfGlobalConfig` vor der Bearbeitung von Dateien in einer Server-Umgebung. Siehe die [IronPDF Node.js-Dokumentation](https://ironpdf.com/nodejs/docs/) 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: ```javascript {.line-numbers} //: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) =&gt; { 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}`));

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:

```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";

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

Betrag fällig: $540,00

");

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



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](https://ironpdf.com/nodejs/tutorials/html-to-pdf/) behandelt die Renderer-Konfiguration detailliert.

Für Dokumente, die auch [digitale Signaturen](https://ironpdf.com/nodejs/examples/digitally-sign-a-pdf/) 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()`](https://ironpdf.com/nodejs/examples/merge-pdfs/), bevor Sie sie komprimieren. Das Komprimieren des kombinierten Ergebnisses ist effizienter als das Komprimieren einzelner Dateien und erneutes Zusammenführen.

TippsZusammenfü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](https://ironpdf.com/nodejs/examples/pdf-compression/) von IronPDF zusätzliche funktionierende Codebeispiele, und die [API-Referenz](https://ironpdf.com/nodejs/object-reference/api/) dokumentiert alle verfügbaren Methodensignaturen. IronPDF unterstützt auch das Konvertieren von [Bildern in PDF](https://ironpdf.com/nodejs/examples/image-to-pdf/), das [Lesen von PDF-Text](https://ironpdf.com/nodejs/examples/reading-pdf-text/) und das [Entfernen von Seiten aus einem PDF](https://ironpdf.com/nodejs/examples/remove-page-from-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](https://ironpdf.com/nodejs/docs/) an. Bereit, die Komprimierung in Ihrem Projekt zu testen? [Starten Sie Ihre kostenlose Testversion](#trial-license), um die oben genannten Beispiele ohne Wasserzeichen auszuführen, oder [sehen Sie sich Lizenzoptionen](#licensing) 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.

Darrius Serrant
Full-Stack-Software-Ingenieur (WebOps)

Darrius Serrant hat einen Bachelor-Abschluss in Informatik von der University of Miami und arbeitet als Full-Stack-WebOps-Marketing-Ingenieur bei Iron Software. Seit seiner Jugend vom Programmieren angezogen, sah er die Informatik als sowohl mysteriös als auch zugänglich, was es zum perfekten Medium für Kreativität und Problemlösung ...

Weiterlesen
Bereit anzufangen?
Version: 2026.6 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis?
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.