HTML in PDF konvertieren in Node.js

HTML zu PDF in Node.js konvertieren

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

Die leistungsstärkste und populärste Funktion von IronPDF ist die Fähigkeit, hochqualitative PDFs aus Roh-HTML, CSS und JavaScript zu erstellen. Dieses Tutorial führt Node.js-Entwickler durch jede praktische Methode, um HTML-Inhalt in PDFs zu verwandeln - von einer Einzeilen-konvertierung bis zur dynamischen vorlagengetriebenen Dokumentengenerierung.

IronPDF ist eine High-Level-API-Bibliothek, die Entwicklern hilft, leistungsstarke PDF-Verarbeitungsfunktionen schnell in Softwareanwendungen zu implementieren. IronPDF ist in mehreren Programmiersprachen verfügbar. Für detaillierte Berichterstattung über die Erstellung von PDFs in .NET, Java und Python, konsultieren Sie die offiziellen Dokumentationsseiten. Dieses Tutorial behandelt die Verwendung, wie sie auf Node.js-Projekte zutrifft.

Schnellstart: HTML in Node.js zu PDF konvertieren

Inhaltsverzeichnis

Wie fangen Sie mit IronPDF for Node.js an? T>{#getting-started}

Nutzen Sie IronPDF heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer

Die IronPDF-Bibliothek installieren

Installieren Sie das IronPDF Node.js-Paket, indem Sie den untenstehenden NPM-Befehl im von Ihnen gewählten Node.js-Projekt ausführen:

 npm i @ironsoftware/ironpdf

Sie können auch das IronPDF-Paket manuell herunterladen und installieren.

Wie installieren Sie die IronPDF-Engine?

IronPDF for Node.js benötigt eine IronPDF Engine-Binärdatei, um zu funktionieren.

Hinweis:Die Installation der IronPDF-Engine ist optional. Das @ironsoftware/ironpdf Paket lädt und installiert die passende Binärdatei für Ihr Betriebssystem automatisch beim ersten Ausführen. Die explizite Installation wird in Umgebungen empfohlen, in denen der Internetzugang eingeschränkt oder nicht verfügbar ist.

Installieren Sie die IronPDF Engine-Binärdatei, indem Sie das passende Paket für Ihr Betriebssystem installieren.

Wie wendet man einen Lizenzschlüssel an?

Standardmäßig versieht IronPDF alle von ihm erstellten oder modifizierten Dokumente mit einem Wasserzeichen. Um das Wasserzeichen zu entfernen, setzen Sie die licenseKey Eigenschaft auf dem globalen IronPdfGlobalConfig Objekt mit einem gültigen Lizenzschlüssel:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config.js
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";

// Retrieve the global configuration object
var config = IronPdfGlobalConfig.getConfig();

// Set a valid license key to remove watermarks
config.licenseKey = "{YOUR-LICENSE-KEY-HERE}";
JAVASCRIPT

Fordern Sie einen kostenlosen Testlizenzschlüssel an oder kaufen Sie einen Lizenzschlüssel auf der Lizenzierungsseite.

Hinweis:Setzen Sie den Lizenzschlüssel und alle anderen globalen Konfigurationseinstellungen vor dem Aufrufen anderer Bibliotheksfunktionen. Dies gewährleistet optimale Leistung und korrektes Verhalten in der gesamten Anwendung.

Die restlichen Codebeispiele in diesem Tutorial gehen davon aus, dass ein Lizenzschlüssel in einer separaten config.js Datei angewendet wurde, die am Anfang jedes Skripts importiert wird:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/config-import.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script
// ...
JAVASCRIPT

IronPDF-Wasserzeichen angezeigt auf einem ohne Lizenzschlüssel erzeugten PDF-Dokument Um PDF-Dokumente ohne Wasserzeichen zu generieren, erhalten Sie einen Lizenzschlüssel unter ironpdf.com/nodejs/licensing/.

Wie konvertieren Sie HTML in PDF in Node.js? {#convert-html-to-PDF}

Die IronPDF Node.js-Bibliothek bietet vier Ansätze zur Erstellung von PDF-Dateien aus HTML-Inhalten:

  1. Aus einer HTML-Code-Zeichenfolge
  2. Aus einer lokalen HTML-Datei
  3. Von einer Online-URL
  4. Aus einem komprimierten ZIP-Archiv

Jeder Ansatz verwendet die PdfDocument Klasse als Grundlage. Ein PdfDocument stellt eine PDF-Datei dar, die aus einigen Quellinhalten erstellt wurde und die meisten Kernfunktionen von IronPDF für Erstellung und Bearbeitung antreibt.

Wie erstellen Sie ein PDF aus einem HTML-String? {#create-pdf-from-html-string}

PdfDocument.fromHtml generiert PDFs aus Zeichenfolgen rohen HTML-Markups. Dieser Ansatz bietet die größte Flexibilität der vier Methoden, da die HTML-Zeichenfolge praktisch von überall herkommen kann — Textdateien, Datenströme, eine HTML-Template-Engine oder dynamisch erstelltes Markup.

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Create a PDF from an HTML string
const pdf = await PdfDocument.fromHtml("<h1>Hello from IronPDF!</h1>");

// Save the PDF document to the file system
await pdf.saveAs("html-string-to-pdf.pdf");
JAVASCRIPT

PdfDocument.fromHtml gibt ein Promise zurück, das zu einer Instanz der PdfDocument Klasse auflöst. Nach dem Erhalt der Instanz rufen Sie saveAs mit einem Zielpfad auf, um das PDF auf die Festplatte zu schreiben. Die gespeicherte PDF-Datei rendert das HTML genauso, wie es ein standardkonformer Browser anzeigen würde.

PDF-Dokument, das aus der HTML-Zeichenkette mit einer Überschrift erster Ebene Hello from IronPDF! erzeugt wurde The PDF generated from the HTML string <h1>Hello from IronPDF!</h1>. Die von PdfDocument.fromHtml generierten PDF-Dateien erscheinen genau so, wie es Webseiten-Inhalte tun würden.

Wie erstellen Sie ein PDF aus einer HTML-Datei? {#create-pdf-from-html-file}

PdfDocument.fromHtml akzeptiert auch einen Pfad zu einem lokalen HTML-Dokument. Anstelle eines Markup-Strings übergeben Sie einen gültigen Dateipfad als erstes Argument. Dies ist der bevorzugte Ansatz, wenn Sie mit gespeicherten Webseiten arbeiten, die auf lokale CSS-, JavaScript- und Bildressourcen verweisen.

Das folgende Beispiel konvertiert eine Beispielwebseite in ein PDF:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Render a PDF from a local HTML file
const pdf = await PdfDocument.fromHtml("./sample2.html");

// Save the PDF document to the project directory
await pdf.saveAs("html-file-to-pdf-1.pdf");
JAVASCRIPT

Beispiel-HTML-Seite, die in Google Chrome angezeigt wird, bevor sie in PDF umgewandelt wird Die Beispiel-HTML-Seite, wie sie in Google Chrome erscheint. Laden Sie diese und ähnliche Seiten von der File Samples-Website herunter: https://filesamples.com/samples/code/html/sample2.html

IronPDF bewahrt das Erscheinungsbild des ursprünglichen HTML-Dokuments und erhält die Funktionalität von Links, Formularen und anderen interaktiven Elementen. Diese Genauigkeit erstreckt sich auf komplexe Seiten, die Absätze, Listen, Bilder, Hyperlinks und clientseitige Skripterstellung enthalten.

PDF-Dokument erstellt aus der Beispiel-HTML-Datei, zeigt eine treue Wiederherstellung des ursprünglichen Seitenlayouts Dieses PDF wurde aus dem obigen HTML-Dateibeispiel generiert. Vergleichen Sie sein Erscheinungsbild mit dem vorherigen Bild — IronPDF bewahrt das Layout mit hoher Treue.

IronPDF verarbeitet Seiten, die weit über einfaches Markup hinausgehen. Das folgende Beispiel konvertiert eine funktionsreiche Seite, die zahlreiche externe CSS-Dateien, Bilder und Skriptressourcen verwendet:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-complex-file-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Render a PDF from a complex HTML page with external assets
PdfDocument.fromHtml("./sample4.html").then(async (pdf) => {
    return await pdf.saveAs("html-file-to-pdf-2.pdf");
});
JAVASCRIPT

PDF erstellt aus einer komplexen HTML-Seite mit reichhaltigem CSS-Styling und JavaScript-gerendertem Inhalt Wenn es in Google Chrome gut aussieht, wird es auch gut aussehen, wenn es in ein PDF konvertiert wird. Dies schließt CSS-intensive und JavaScript-gerenderte Seitendesigns ein.

TippsWenn eine Seite Ressourcen aus lokalen Dateipfaden bezieht, stellen Sie sicher, dass alle referenzierten CSS-Dateien, Bilder und Skripte relativ zum Speicherort der HTML-Datei vorhanden sind. IronPDFs Chrome-Rendering-Engine löst diese Pfade so auf, wie es ein Browser tun würde.

Wie erstellen Sie ein PDF aus einer URL? {#create-PDF-from-url}

PdfDocument.fromUrl ruft eine Live-Webseite ab und rendert sie als PDF. Übergeben Sie eine öffentlich zugängliche URL als das Argument. IronPDFs Chrome-Rendering-Engine ruft die Seite ab, lädt alle Ressourcen und erzeugt ein pixelgenaues PDF — kein manueller HTML-Download erforderlich.

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/url-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Convert a live web page to a PDF
const pdf = await PdfDocument.fromUrl("https://en.wikipedia.org/wiki/PDF");

// Save the document
await pdf.saveAs("url-to-pdf.pdf");
JAVASCRIPT

Wikipedia-Artikel über das PDF-Format, wie er in einem standardkonformen Browser erscheint Der Wikipedia-Artikel über das PDF-Format, wie er in einem standardkonformen Webbrowser angezeigt wird.

PDF-Dokument erstellt durch Aufruf von PdfDocument.fromUrl auf der Wikipedia-Seite zum Thema PDF-Artikel Das von PdfDocument.fromUrl bei einem Wikipedia-Artikel aufgerufene PDF. Beachten Sie seine enge Ähnlichkeit mit der ursprünglichen Webseite.

WichtigURL-basierte Konvertierungen erfordern, dass der Zielserver von der Maschine aus erreichbar ist, die IronPDF ausführt. Seiten hinter Authentifizierung, VPNs oder Firewalls können zusätzliche Konfiguration durch ChromePdfRenderOptions erfordern.

Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

PdfDocument.fromZip konvertiert eine spezifische HTML-Datei aus einem ZIP-Archiv in ein PDF. Dies ist besonders nützlich, wenn selbstkontinente HTML-Projekte verteilt werden, die ihre HTML-, CSS- und Bildressourcen zusammen bündeln.

Für dieses Beispiel gehen wir davon aus, dass das Projektverzeichnis eine ZIP-Datei mit der folgenden Struktur enthält:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-structure.txt
html-zip.zip
├─ index.html
├─ style.css
├─ logo.png

Die index.html Datei enthält:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hello world!</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Hello from IronPDF!</h1>
    <a href="https://ironpdf.com/nodejs/">
      <img src="logo.png" alt="IronPDF für Node.js">
    </a>
  </body>
</html>
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hello world!</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Hello from IronPDF!</h1>
    <a href="https://ironpdf.com/nodejs/">
      <img src="logo.png" alt="IronPDF für Node.js">
    </a>
  </body>
</html>
HTML

Und style.css deklariert die Seitenlayout- und Schriftartregeln:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/style.css
@font-face {
  font-family: 'Gotham-Black';
  src: url('gotham-black-webfont.eot?') format('embedded-opentype'), 
       url('gotham-black-webfont.woff2') format('woff2'), 
       url('gotham-black-webfont.woff') format('woff'), 
       url('gotham-black-webfont.ttf') format('truetype'), 
       url('gotham-black-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin-left: auto;
  margin-right: auto;
  margin-top: 200px;
  margin-bottom: auto;
  color: white;
  background-color: black;
  text-align: center;
  font-family: "Helvetica"
}

h1 {
  font-family: "Gotham-Black";
  margin-bottom: 70px;
  font-size: 32pt;
}

img {
  width: 400px;
  height: auto;
}

p {
  text-decoration: underline;
  font-size: smaller;
}

Beispiel für ein Logo.png-Bild im hypothetischen HTML-ZIP-Archiv enthalten Das Beispielbild innerhalb der hypothetischen HTML-ZIP-Datei.

Wenn Sie fromZip aufrufen, geben Sie den Pfad zur ZIP-Datei als erstes Argument und ein Konfigurationsobjekt als zweites an. Setzen Sie die mainHtmlFile Eigenschaft auf den Namen der HTML-Datei im Archiv, die konvertiert werden soll:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/zip-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Convert an HTML file from a ZIP archive to PDF
PdfDocument.fromZip("./html-zip.zip", {
  mainHtmlFile: "index.html"
}).then(async (pdf) => {
  return await pdf.saveAs("html-zip-to-pdf.pdf");
});
JAVASCRIPT

PDF generiert aus dem HTML-ZIP-Archiv, zeigt das IronPDF-Logo und eine gestaltete Überschrift auf schwarzem Hintergrund PDF-Erstellung mit PdfDocument.fromZip. Die Funktion rendert den HTML-Code aus der ZIP-Datei erfolgreich zusammen mit seinen eingebundenen Ressourcen.

Icon Quote related to Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

Meine Lieblingsbibliothek dieser Art ist IronPDF. Es ermöglicht eine schnelle und effiziente Bearbeitung von PDF-Dateien. Es verfügt auch über viele wertvolle Funktionen, wie das Exportieren in das PDF/A-Format und das digitale Signieren von PDF-Dokumenten.

Milan Jovanovic related to Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

Milan Jovanovic

Microsoft MVP

Fallstudie ansehen
Icon Quote related to Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

IronOCR bedeutet, dass wir jährlich 40.000 $ durch manuelle Verarbeitung einsparen können, während die Produktivität gesteigert wird und Ressourcen für wichtige Aufgaben freigesetzt werden. Ich würde es sehr empfehlen.

Brent Matzelle related to Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

Brent Matzelle

Technischer Leiter, OPYN

Fallstudie ansehen
Icon Quote related to Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

Die Iron Suite spielt eine entscheidende Rolle in unseren Operationen. Diese Werkzeuge erhöhen die Effizienz im gesamten Unternehmen, einschließlich der Erstellung von Grundrissen und der Verbesserung des Bestandsmanagements.

David Jones related to Wie erstellen Sie ein PDF aus einem Zip-Archiv? {#create-pdf-from-zip}

David Jones

Leitender Software-Ingenieur, Agorus Build

Fallstudie ansehen

Welche erweiterten Rendering-Optionen unterstützt IronPDF? T>{#advanced-rendering-options}

Die ChromePdfRenderOptions Schnittstelle offenbart Eigenschaften für eine detaillierte Anpassung des PDF-Rendering-Verhaltens. Diese Einstellungen gelten, bevor das PDF generiert wird, und umfassen Layout, visuelles Erscheinungsbild und Spezialfälle für dynamische Inhalte.

IronPDF wendet Standardrendereinstellungen auf jede Konvertierung an. Rufen Sie diese Standardwerte mit der defaultChromePdfRenderOptions Funktion ab:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/default-options.js
import { defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";

// Retrieve a ChromePdfRenderOptions object with default settings
var options = defaultChromePdfRenderOptions();
JAVASCRIPT

Ändern Sie die Eigenschaften des zurückgegebenen Objekts nach Bedarf und übergeben Sie es an den renderOptions Parameter einer beliebigen Konvertierungsmethode.

Wie fügt man Kopf- und Fußzeilen hinzu? T>{#add-headers-footers}

Die textHeader und textFooter Eigenschaften fügen jedem gerenderten PDF seitenspezifische textbasierte Inhalte hinzu. Das folgende Beispiel erstellt ein PDF von der Google-Suchhomepage mit einem benutzerdefinierten Kopf- und Fußzeile, die jeweils eine andere Schriftart verwenden:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/custom-headers-footers.js
import { PdfDocument, defaultChromePdfRenderOptions, AffixFonts } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Configure a text-based header
options.textHeader = {
  centerText: "https://www.adobe.com",
  dividerLine: true,
  font: AffixFonts.CourierNew,
  fontSize: 12,
  leftText: "URL to PDF"
};

// Configure a text-based footer
options.textFooter = {
  centerText: "IronPDF for Node.js",
  dividerLine: true,
  fontSize: 14,
  font: AffixFonts.Helvetica,
  rightText: "HTML to PDF in Node.js"
};

// Render the page with custom headers and footers applied
PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("add-custom-headers-footers-1.pdf");
});
JAVASCRIPT

PDF erzeugt aus der Google-Startseite mit Zusatz eines benutzerdefinierten Text-Headers und Footers Ein von der Google Startseite generiertes PDF mit benutzerdefiniertem Text-Header und -Footer, angewendet mit textHeader und textFooter.

Für reichhaltigere Layouts von Kopf- und Fußzeilen verwenden Sie die htmlHeader und htmlFooter Eigenschaften stattdessen. Diese akzeptieren rohe HTML-Fragmenten und geben vollen Zugriff auf Typografie, Bilder und Ausrichtung. Das folgende Beispiel zentriert die Seiten-URL fettgedruckt in der Kopfzeile und bettet ein Logobild in der Fußzeile ein:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-headers-footers.js
import { PdfDocument, defaultChromePdfRenderOptions } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Define a rich HTML header
options.htmlHeader = {
  htmlFragment: "<strong>https://www.google.com/</strong>",
  dividerLine: true,
  dividerLineColor: "blue",
  loadStylesAndCSSFromMainHtmlDocument: true,
};

// Define a rich HTML footer with a logo
options.htmlFooter = {
  htmlFragment: "<img src='logo.png' alt='IronPDF for Node.js' style='display: block; width: 150px; height: auto; margin-left: auto; margin-right: auto;'>",
  dividerLine: true,
  loadStylesAndCSSFromMainHtmlDocument: true
};

// Apply custom HTML headers and footers during rendering
await PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("add-html-headers-footers.pdf");
});
JAVASCRIPT

PDF erstellt mit einem HTML-basierten Header, der die Seiten-URL fettgedruckt anzeigt, und einem HTML-basierten Footer, der das IronPDF-Logo zeigt IronPDF unterstützt HTML-basierte Kopf- und Fußzeilen und gibt vollen Zugriff auf Branding und Layout auf jeder Seite.

Wie kontrollieren Sie Seitenmaße, Ausrichtung und Ränder? {#page-size-orientation-margins}

Die Eigenschaften margin, paperSize, fitToPaperMode, paperOrientation und grayScale auf ChromePdfRenderOptions steuern das physische Layout jeder gerenderten Seite. Das folgende Beispiel konvertiert die Google-Homepage mit benutzerdefinierten Rändern, A5-Querformat und Graustufenausgabe:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/page-size-orientation.js
import { PdfDocument, defaultChromePdfRenderOptions, PaperSize, FitToPaperModes, PdfPaperOrientation } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Start from default render options
var options = defaultChromePdfRenderOptions();

// Set page margins in millimeters
options.margin = {
  top: 50,
  bottom: 50,
  left: 60,
  right: 60
};

// Configure paper size, fit mode, orientation, and color mode
options.paperSize = PaperSize.A5;
options.fitToPaperMode = FitToPaperModes.FitToPage;
options.paperOrientation = PdfPaperOrientation.Landscape;
options.grayScale = true;

// Render with the customized layout settings
PdfDocument.fromUrl("https://www.google.com/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("set-margins-and-page-size.pdf");
});
JAVASCRIPT

Die PaperSize Enumeration umfasst Standardpapiergrößen wie A4, A5, Letter und Legal. Die PdfPaperOrientation Enumeration unterstützt Portrait und Landscape. Diese Einstellungen geben präzise Kontrolle über die Ausgabedimensionen für druckfertige Dokumente.

TippsWenn Sie PDFs für Druckabläufe erzeugen, geben Sie immer die Ränder explizit an. Standardränder entsprechen möglicherweise nicht den Anforderungen Ihres Ziellieferranten oder Papierformats.

Wie gehen Sie mit dynamischen Webseiten um? T>{#dynamic-web-pages}

Seiten, die asynchron Inhalte laden — durch JavaScript-Timer, Lazy Loading oder API-Aufrufe — sind möglicherweise nicht vollständig gerendert, wenn IronPDFs Engine sie erfasst. Der WaitFor Mechanismus, konfiguriert über die waitFor Eigenschaft auf ChromePdfRenderOptions, weist den Chrome-Renderer an, bis zum Erreichen bestimmter Bedingungen zu pausieren, bevor die Seite erfasst wird.

Der folgende Codeblock setzt IronPDF auf eine 20-sekündige Wartezeit, bevor die Seiteninhalte erfasst werden:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-delay.js
import { PdfDocument, defaultChromePdfRenderOptions, WaitForType } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Configure the renderer to wait 20 seconds before capturing
var options = defaultChromePdfRenderOptions();
options.waitFor = {
  type: WaitForType.RenderDelay,
  delay: 20000
};

PdfDocument.fromUrl("https://ironpdf.com/nodejs/", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("waitfor-renderdelay.pdf");
});
JAVASCRIPT

Alternativ kann IronPDF so konfiguriert werden, dass es wartet, bis ein bestimmtes DOM-Element erscheint, bevor es rendert. Dies ist nützlich für Seiten, bei denen Inhalte injiziert werden, nachdem ein JavaScript-Framework das Mounting abgeschlossen hat:

:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/waitfor-element.js
import { PdfDocument, defaultChromePdfRenderOptions, WaitForType } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

// Configure the renderer to wait for a specific DOM element (up to 20 seconds)
var options = defaultChromePdfRenderOptions();
options.waitFor = {
  type: WaitForType.HtmlElement,
  htmlQueryStr: "div.ProseMirror",
  maxWaitTime: 20000,
};

PdfDocument.fromUrl("https://app.surferseo.com/drafts/s/V7VkcdfgFz-dpkldsfHDGFFYf4jjSvvjsdf", { renderOptions: options }).then(async (pdf) => {
  return await pdf.saveAs("waitfor-htmlelement.pdf");
});
JAVASCRIPT

Die WaitForType.HtmlElement Strategie verwendet einen Standard-CSS-Auswahlquery. Der Renderer überprüft das Vorhandensein des Elements, bis entweder maxWaitTime Millisekunden verstrichen sind oder das Element gefunden wurde — je nachdem, was zuerst eintritt.

WarnungSetzen von zu langen Wartezeiten kann die PDF-Generierungszeit in Anwendungen mit hohem Durchsatz erheblich erhöhen. Verwenden Sie die minimale Verzögerung, die zuverlässig den Inhalt erfasst, den Ihr Anwendungsfall erfordert.

Wie generieren Sie PDFs aus einer HTML-Vorlage? {#html-template-to-PDF}

Ein gängiges Automatisierungsmuster in der Praxis ist das Erstellen eines Stapels von PDFs aus einer gemeinsamen HTML-Vorlage, in der Platzhalterwerte mit Daten aus einer Datenbank, API oder Tabelle ersetzt werden. Die replaceText Methode von IronPDF auf PdfDocument behandelt dies direkt.

Die untenstehende Musterrechnungsvorlage (angepasst von einer öffentlich zugänglichen CodePen-Rechnungsvorlage) verwendet geschweifte Klammerplatzhalter wie {COMPANY-NAME}, {FULL-NAME} und {INVOICE-NUMBER} für austauschbare Inhalte:

Beispiel einer HTML-Rechnungsvorlage mit Platzhaltern für dynamische Datensubstitution Eine Beispielrechnungsvorlage mit Platzhaltermakierungen. JavaScript-Code wird jedes Tag mit echten Daten ersetzen, bevor das Dokument als PDF gespeichert wird.

Der folgende Code lädt die Vorlage, ersetzt jeden Platzhalter mit Testdaten und speichert das Ergebnis als PDF:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-template-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

/**
 * Loads an HTML template from the file system as a PdfDocument.
 */
async function getTemplateHtml(fileLocation) {
  return PdfDocument.fromHtml(fileLocation);
}

/**
 * Saves a PdfDocument to the specified file path.
 */
async function generatePdf(pdf, location) {
  return pdf.saveAs(location);
}

/**
 * Replaces a named placeholder in the PdfDocument with a data value.
 */
async function addTemplateData(pdf, key, value) {
  return pdf.replaceText(key, value);
}

// Path to the HTML invoice template
const template = "./sample-invoice.html";

// Load the template, fill in all placeholder values, then save the PDF
getTemplateHtml(template).then(async (doc) => {
    await addTemplateData(doc, "{FULL-NAME}", "Lizbeth Presland");
    await addTemplateData(doc, "{ADDRESS}", "678 Manitowish Alley, Portland, OG");
    await addTemplateData(doc, "{PHONE-NUMBER}", "(763) 894-4345");
    await addTemplateData(doc, "{INVOICE-NUMBER}", "787");
    await addTemplateData(doc, "{INVOICE-DATE}", "August 28, 2023");
    await addTemplateData(doc, "{AMOUNT-DUE}", "13,760.13");
    await addTemplateData(doc, "{RECIPIENT}", "Celestyna Farmar");
    await addTemplateData(doc, "{COMPANY-NAME}", "BrainBook");
    await addTemplateData(doc, "{TOTAL}", "13,760.13");
    await addTemplateData(doc, "{AMOUNT-PAID}", "0.00");
    await addTemplateData(doc, "{BALANCE-DUE}", "13,760.13");
    await addTemplateData(doc, "{ITEM}", "Training Sessions");
    await addTemplateData(doc, "{DESCRIPTION}", "60 Minute instruction");
    await addTemplateData(doc, "{RATE}", "3,440.03");
    await addTemplateData(doc, "{QUANTITY}", "4");
    await addTemplateData(doc, "{PRICE}", "13,760.13");
    return doc;
}).then(async (doc) => await generatePdf(doc, "html-template-to-pdf.pdf"));
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/html-template-to-pdf.js
import { PdfDocument } from "@ironsoftware/ironpdf";
import './config.js'; // Import the configuration script

/**
 * Loads an HTML template from the file system as a PdfDocument.
 */
async function getTemplateHtml(fileLocation) {
  return PdfDocument.fromHtml(fileLocation);
}

/**
 * Saves a PdfDocument to the specified file path.
 */
async function generatePdf(pdf, location) {
  return pdf.saveAs(location);
}

/**
 * Replaces a named placeholder in the PdfDocument with a data value.
 */
async function addTemplateData(pdf, key, value) {
  return pdf.replaceText(key, value);
}

// Path to the HTML invoice template
const template = "./sample-invoice.html";

// Load the template, fill in all placeholder values, then save the PDF
getTemplateHtml(template).then(async (doc) => {
    await addTemplateData(doc, "{FULL-NAME}", "Lizbeth Presland");
    await addTemplateData(doc, "{ADDRESS}", "678 Manitowish Alley, Portland, OG");
    await addTemplateData(doc, "{PHONE-NUMBER}", "(763) 894-4345");
    await addTemplateData(doc, "{INVOICE-NUMBER}", "787");
    await addTemplateData(doc, "{INVOICE-DATE}", "August 28, 2023");
    await addTemplateData(doc, "{AMOUNT-DUE}", "13,760.13");
    await addTemplateData(doc, "{RECIPIENT}", "Celestyna Farmar");
    await addTemplateData(doc, "{COMPANY-NAME}", "BrainBook");
    await addTemplateData(doc, "{TOTAL}", "13,760.13");
    await addTemplateData(doc, "{AMOUNT-PAID}", "0.00");
    await addTemplateData(doc, "{BALANCE-DUE}", "13,760.13");
    await addTemplateData(doc, "{ITEM}", "Training Sessions");
    await addTemplateData(doc, "{DESCRIPTION}", "60 Minute instruction");
    await addTemplateData(doc, "{RATE}", "3,440.03");
    await addTemplateData(doc, "{QUANTITY}", "4");
    await addTemplateData(doc, "{PRICE}", "13,760.13");
    return doc;
}).then(async (doc) => await generatePdf(doc, "html-template-to-pdf.pdf"));
JAVASCRIPT

Der obige Code definiert drei asynchrone Helferfunktionen:

  • getTemplateHtml: Lädt eine HTML-Datei in ein PdfDocument Objekt mit PdfDocument.fromHtml.
  • addTemplateData: Ruft PdfDocument.replaceText auf, um einen Platzhalterschlüssel mit seinem tatsächlichen Datenwert zu ersetzen.
  • generatePdf: Schreibt den abgeschlossenen PdfDocument an einen Zielpfad.

Jeder replaceText Aufruf arbeitet direkt auf der im Speicher befindlichen PDF-Darstellung, sodass mehrere Ersetzungen verkettet werden können, ohne das Dokument von der Festplatte neu zu laden. Das resultierende PDF behält alle CSS-Stile, Schriftarten und das Layout der ursprünglichen Vorlage bei.

PDF-Dokument erstellt aus der Rechnungsvorlage, nachdem alle Platzhalter durch reale Daten ersetzt wurden Die vollständige PDF-Rechnung mit durch echte Daten ersetzten Platzhaltungswerten. Die CSS-Stile und das Layout der ursprünglichen Vorlage werden genau beibehalten.

Dieser Ansatz skaliert gut für die Stapeldokumentenerstellung. Rufen Sie getTemplateHtml einmal pro Satz auf, um ein frisches PdfDocument für jede Ausgabedatei zu erstellen, dann verknüpfen Sie die addTemplateData Aufrufe für die Daten des Satzes, bevor Sie generatePdf aufrufen.

Was sind die nächsten Schritte? {#next-steps}

Dieses Tutorial behandelt die grundlegenden HTML-zu-PDF-Konvertierungsmethoden und die am häufigsten verwendeten Rendering-Optionen in IronPDF for Node.js. Die nachstehenden Themen erweitern das hier Erlernte auf spezialisiertere Bereiche.

Häufig gestellte Fragen

Wie konvertiert man HTML zu PDF in Node.js?

Verwenden Sie die IronPDF-Bibliothek. Installieren Sie sie mit npm install @ironsoftware/ironpdf, rufen Sie dann PdfDocument.fromHtml mit einem HTML-String oder Dateipfad auf, oder PdfDocument.fromUrl mit einer Webadresse. Speichern Sie das Ergebnis mit PdfDocument.saveAs.

Wie konvertiert man einen HTML-String zu PDF in Node.js?

Rufen Sie PdfDocument.fromHtml mit dem HTML-String als Argument auf. Die Methode gibt ein Promise zurück, das zu einer PdfDocument-Instanz aufgelöst wird. Fügen Sie saveAs hinzu, um das PDF auf die Festplatte zu schreiben.

Wie konvertiert man eine lokale HTML-Datei zu PDF in Node.js?

Geben Sie anstelle eines HTML-Strings einen gültigen Dateipfad an PdfDocument.fromHtml weiter. IronPDF löst relative CSS-, Bild- und Skriptpfade genauso auf, wie ein Browser, der die Datei lädt.

Wie konvertiert man eine URL zu PDF in Node.js?

Rufen Sie PdfDocument.fromUrl mit der Ziel-URL auf. IronPDF ruft die Seite mit seiner Chrome-Rendering-Engine ab und erzeugt ein pixelgenaues PDF. Die Ziel-URL muss öffentlich zugänglich sein vom Host, der IronPDF ausführt.

Wie fügt man Kopf- und Fußzeilen zu einem PDF in Node.js hinzu?

Setzen Sie die Eigenschaften textHeader und textFooter auf einem ChromePdfRenderOptions-Objekt für einfache Textkopf- und -fußzeilen. Für reichere Layouts verwenden Sie htmlHeader und htmlFooter mit rohen HTML-Fragmenten. Übergeben Sie das Optionsobjekt an den renderOptions-Parameter einer beliebigen Konvertierungsmethode.

Wie ändert man die Seitengröße und Ausrichtung in IronPDF for Node.js?

Setzen Sie options.paperSize auf einen Wert aus dem PaperSize-Enum (z.B. PaperSize.A4 oder PaperSize.Letter) und setzen Sie options.paperOrientation auf PdfPaperOrientation.Portrait oder PdfPaperOrientation.Landscape. Übergeben Sie die konfigurierten Optionen an die Konvertierungsmethode.

Wie geht man mit dynamischem JavaScript-Inhalt bei der PDF-Konvertierung um?

Verwenden Sie die Eigenschaft waitFor auf ChromePdfRenderOptions. Setzen Sie type auf WaitForType.RenderDelay und geben Sie eine Verzögerung in Millisekunden an, oder setzen Sie type auf WaitForType.HtmlElement und geben Sie einen CSS-Query-Selector an. IronPDF pausiert die Wiedergabe, bis die Bedingung erfüllt ist.

Wie konvertiert man eine HTML-Datei in einem ZIP-Archiv zu PDF?

Rufen Sie PdfDocument.fromZip mit dem Pfad zur ZIP-Datei als erstem Argument und einem Optionsobjekt als zweitem auf. Setzen Sie die Eigenschaft mainHtmlFile auf den Namen der HTML-Datei innerhalb des Archivs, die konvertiert werden soll.

Wie entfernt man das IronPDF-Wasserzeichen aus generierten PDFs?

Tragen Sie einen gültigen Lizenzschlüssel in die globale Konfiguration ein, bevor Sie eine Konvertierungsmethode aufrufen. Rufen Sie das Konfigurationsobjekt mit IronPdfGlobalConfig.getConfig() ab und setzen Sie config.licenseKey auf Ihren Schlüssel. Eine kostenlose Testlizenz ist verfügbar unter ironpdf.com.

Wie generiert man PDFs aus einer HTML-Vorlage in Node.js?

Laden Sie die Vorlage mit PdfDocument.fromHtml und rufen Sie dann PdfDocument.replaceText für jeden Platzhalter in der Vorlage auf, wobei Sie den Platzhalter-String und seinen Ersatzwert übergeben. Nach Abschluss aller Ersetzungen rufen Sie saveAs auf, um das endgültige PDF zu schreiben.

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.