HTML in PDF konvertieren in Node.js

Die leistungsstärkste und beliebteste Funktion von IronPDF ist die Möglichkeit, aus rohem HTML, CSS und JavaScript originalgetreue PDF-Dateien zu erstellen. Dieses Tutorial führt Node.js-Entwickler durch alle praktischen Methoden zur Umwandlung von HTML-Inhalten in PDFs – von der einzeiligen Zeichenfolgenkonvertierung bis hin zur dynamischen, vorlagengesteuerten Dokumentgenerierung.

IronPDF ist eine hochentwickelte API-Bibliothek, die Entwicklern hilft, leistungsstarke PDF-Verarbeitungsfunktionen schnell in Softwareanwendungen zu implementieren. IronPDF ist in mehreren Programmiersprachen verfügbar. Ausführliche Informationen zum Erstellen von PDFs in .NET, Java und Python finden Sie auf den offiziellen Dokumentationsseiten. Dieses Tutorial behandelt die Verwendung in Bezug auf Node.js-Projekte.

Schnellstart: HTML in Node.js in PDF konvertieren

Inhaltsverzeichnis

Wie fängt man mit IronPDF for Node.js an? {#getting-started}

Nutzen Sie IronPDF heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer

Installieren Sie die IronPDF-Bibliothek

Installieren Sie das IronPDF-Node.js-Paket, indem Sie den folgenden NPM-Befehl in Ihrem ausgewählten Node.js-Projekt ausführen:

//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/install.sh
npm install @ironsoftware/ironpdf
//:path=/static-assets/ironpdf-nodejs/content-code-examples/tutorials/html-to-pdf/install.sh
npm install @ironsoftware/ironpdf
SHELL

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

Wie installiert man 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 bei der ersten Ausführung automatisch die für Ihr Betriebssystem geeignete Binärdatei herunter und installiert sie. Eine 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 für Ihr Betriebssystem geeignete Paket installieren.

Wie wendet man einen Lizenzschlüssel an?

Standardmäßig versieht IronPDF alle Dokumente, die es erstellt oder bearbeitet, mit einem Wasserzeichen. Um das Wasserzeichen zu entfernen, setzen Sie die Eigenschaft licenseKey des globalen Objekts IronPdfGlobalConfig auf einen 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}";
//: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

Beziehen Sie eine kostenlose Testlizenz oder erwerben Sie einen Lizenzschlüssel auf der Lizenzierungsseite.

Hinweis:Legen Sie den Lizenzschlüssel und alle anderen globalen Konfigurationseinstellungen fest, bevor Sie andere Bibliotheksfunktionen aufrufen. Dies gewährleistet eine optimale Leistung und korrektes Verhalten in der gesamten Anwendung.

Die verbleibenden Code-Beispiele in diesem Tutorial gehen davon aus, dass ein Lizenzschlüssel in einer separaten config.js-Datei hinterlegt 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
// ...
//: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, das auf einem ohne Lizenzschlüssel erstellten PDF-Dokument angezeigt wird Beziehen Sie einen Lizenzschlüssel unter ironpdf.com/nodejs/licensing/, um PDF-Dokumente ohne Wasserzeichen zu erstellen.

Wie konvertiert man HTML in Node.js in PDF? {#convert-html-to-PDF}

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

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

Jeder Ansatz nutzt die Klasse PdfDocument als Grundlage. Ein PdfDocument steht für eine PDF-Datei, die aus einem Quellinhalt erstellt wurde, und bildet die Grundlage für die meisten Kernfunktionen von IronPDF zur Erstellung und Bearbeitung.

Wie erstellt man eine PDF-Datei aus einer HTML-Zeichenkette? {#create-PDF-from-html-string}

PdfDocument.fromHtml generiert PDFs aus reinen HTML-Markup-Zeichenfolgen. Dieser Ansatz bietet die größte Flexibilität der vier Methoden, da die HTML-Zeichenfolge praktisch von überall her stammen kann – aus Textdateien, Datenströmen, einer HTML-Template-Engine oder dynamisch erstellten Markups.

//: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");
//: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 Klasse PdfDocument aufgelöst wird. Rufen Sie nach dem Abrufen der Instanz saveAs mit einem Zielpfad auf, um die PDF-Datei auf die Festplatte zu schreiben. Die gespeicherte PDF-Datei gibt den HTML-Code genau so wieder, wie ihn ein standardkonformer Browser anzeigen würde.

PDF document generated from the HTML string containing a level-one heading Hello from IronPDF! The PDF generated from the HTML string <h1>Hello from IronPDF!</h1>. Die von PdfDocument.fromHtml generierten PDF-Dateien sehen genauso aus wie der Inhalt einer Webseite.

Wie erstellt man eine PDF-Datei aus einer HTML-Datei? {#create-pdf-from-html-file}

PdfDocument.fromHtml akzeptiert auch einen Pfad zu einem lokalen HTML-Dokument. Anstelle einer Markup-Zeichenkette übergeben Sie bitte einen gültigen Dateipfad als erstes Argument. Dies ist der bevorzugte Ansatz bei der Arbeit mit gespeicherten Webseiten, die auf lokale CSS-, JavaScript- und Bilddateien verweisen.

Das folgende Beispiel konvertiert eine Beispiel-Webseite 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");
//: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, angezeigt in Google Chrome vor der Konvertierung in PDF Die Beispiel-HTML-Seite, wie sie in Google Chrome angezeigt wird. Laden Sie diese und ähnliche Seiten von der Website "File Samples" herunter: https://filesamples.com/samples/code/html/sample2.html

IronPDF bewahrt das Erscheinungsbild des ursprünglichen HTML-Dokuments und behält die Funktionalität von Links, Formularen und anderen interaktiven Elementen bei. Diese Genauigkeit gilt auch für komplexe Seiten, die Absätze, Listen, Bilder, Hyperlinks und clientseitige Skripte enthalten.

Aus der Beispiel-HTML-Datei generiertes PDF-Dokument, das die originalgetreue Wiedergabe des Seitenlayouts zeigt Dieses PDF wurde aus der oben stehenden HTML-Datei generiert. Vergleichen Sie das Erscheinungsbild mit dem vorherigen Bild – IronPDF bewahrt das Layout originalgetreu.

IronPDF verarbeitet Seiten, die weit über einfache Markups hinausgehen. Das folgende Beispiel konvertiert eine funktionsreiche Seite, die zahlreiche externe CSS-Dateien, Bilder und Skript-Assets einbindet:

//: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");
});
//: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, generiert aus einer komplexen HTML-Seite mit umfangreichen CSS-Styles und JavaScript-gerenderten Inhalten Wenn es in Google Chrome gut aussieht, sieht es auch nach der Konvertierung in PDF gut aus. Dies umfasst auch CSS-intensive und JavaScript-gerenderte Seitendesigns.

TippsWenn eine Seite Assets aus lokalen Dateipfaden bezieht, stellen Sie sicher, dass alle referenzierten CSS-Dateien, Bilder und Skripte relativ zum Speicherort der HTML-Datei vorhanden sind. Die Chrome-Rendering-Engine von IronPdf löst diese Pfade auf die gleiche Weise auf wie ein Browser.

Wie erstellt man eine PDF-Datei aus einer URL? {#create-pdf-from-url}

PdfDocument.fromUrl ruft eine Live-Webseite ab und rendert sie als PDF. Übergeben Sie eine beliebige öffentlich zugängliche URL als Argument. Die Chrome-Rendering-Engine von IronPDF ruft die Seite ab, lädt alle Assets und erstellt ein pixelgenaues PDF – ein manueller HTML-Download ist nicht 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");
//: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 angezeigt wird Der Wikipedia-Artikel über das PDF-Format, wie er in einem standardkonformen Webbrowser angezeigt wird.

PDF-Dokument, das durch Aufruf von PdfDocument.fromUrl auf der Wikipedia-PDF-Artikelseite generiert wurde Das PDF, das durch den Aufruf von PdfDocument.fromUrl in einem Wikipedia-Artikel generiert wurde. Beachten Sie die große Ähnlichkeit mit der ursprünglichen Webseite.

WichtigURL-basierte Konvertierungen erfordern, dass der Zielserver von dem Rechner aus erreichbar ist, auf dem IronPDF ausgeführt wird. Seiten hinter Authentifizierung, VPNs oder Firewalls erfordern möglicherweise eine zusätzliche Konfiguration über ChromePdfRenderOptions.

Wie erstellt man eine PDF-Datei aus einem ZIP-Archiv? {#create-pdf-from-zip}

PdfDocument.fromZip konvertiert eine bestimmte HTML-Datei aus einem ZIP-Archiv in ein PDF. Dies ist besonders nützlich bei der Verteilung eigenständiger HTML-Projekte, die ihre HTML-, CSS- und Bilddateien bündeln.

Nehmen wir für dieses Beispiel an, dass das Projektverzeichnis eine ZIP-Datei mit folgender 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 Datei index.html 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 for 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 for Node.js">
    </a>
  </body>
</html>
HTML

Und style.css legt das Seitenlayout und die Schriftartregeln fest:

//: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;
}

Beispielbild Das Beispielbild in der hypothetischen HTML-ZIP-Datei.

Geben Sie beim Aufruf von fromZip den Pfad zur ZIP-Datei als erstes Argument und ein Konfigurationsobjekt als zweites an. Setzen Sie die Eigenschaft mainHtmlFile 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");
});
//: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

Aus dem HTML-ZIP-Archiv generiertes PDF, das das IronPDF-Logo und die formatierte Überschrift auf schwarzem Hintergrund zeigt PDF-Erstellung mit PdfDocument.fromZip. Die Funktion rendert den HTML-Code aus der ZIP-Datei zusammen mit den darin enthaltenen Assets erfolgreich.

Welche erweiterten Darstellungsoptionen unterstützt IronPDF? {#advanced-rendering-options}

Die ChromePdfRenderOptions-Schnittstelle stellt Eigenschaften für die detaillierte Anpassung des PDF-Rendering-Verhaltens bereit. Diese Einstellungen gelten vor der Erstellung der PDF-Datei und umfassen Layout, optische Darstellung sowie Randfälle bei dynamischen Inhalten.

IronPDF wendet bei jeder Konvertierung die Standard-Rendering-Einstellungen an. Rufen Sie diese Standardwerte mit der Funktion defaultChromePdfRenderOptions 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();
//: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 Parameter renderOptions einer beliebigen Konvertierungsmethode.

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

Die Eigenschaften textHeader und textFooter fügen benutzerdefinierten textbasierten Inhalt auf jeder Seite eines neu gerenderten PDF-Dokuments ein. Das folgende Beispiel erstellt eine PDF-Datei der Google-Suchstartseite mit einer benutzerdefinierten Kopf- und Fußzeile, wobei jeweils eine andere Schriftart verwendet wird:

//: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.Co/urierNew,
  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");
});
//: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.Co/urierNew,
  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, generiert von der Google-Startseite mit einer benutzerdefinierten Textkopf- und Fußzeile Ein PDF, das von der Google-Startseite generiert wurde, mit einer benutzerdefinierten Textkopf- und Fußzeile, die mithilfe von textHeader und textFooter angewendet wurde.

Für umfangreichere Kopf- und Fußzeilenlayouts verwenden Sie stattdessen die Eigenschaften htmlHeader und htmlFooter. Diese akzeptieren rohe HTML-Fragmente und bieten so volle Kontrolle über Typografie, Bilder und Ausrichtung. Im folgenden Beispiel wird die Seiten-URL fett und zentriert in der Kopfzeile angezeigt und ein Logo-Bild in die Fußzeile eingebettet:

//: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");
});
//: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, generiert mit einer HTML-basierten Kopfzeile, in der die Seiten-URL fett dargestellt ist, und einer HTML-basierten Fußzeile mit dem IronPDF-Logo IronPDF unterstützt HTML-basierte Kopf- und Fußzeilen und bietet so vollständige Kontrolle über Branding und Layout auf jeder Seite.

Wie steuert man Seitengröß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-Startseite mit benutzerdefinierten Rändern, im A5-Querformat und in Graustufen:

//: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");
});
//: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 Aufzählung PaperSize umfasst Standardpapierformate wie A4, A5, Letter und Legal. Die PdfPaperOrientation-Enumeration unterstützt Portrait und Landscape. Diese Einstellungen ermöglichen eine präzise Steuerung der Ausgabemaße für druckfertige Dokumente.

TippsBei der Erstellung von PDFs für PRINT-Workflows sollten Sie die Ränder immer explizit angeben. Die Standardränder entsprechen möglicherweise nicht den Anforderungen Ihres Druckers oder Papierformats.

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

Seiten, deren Inhalte asynchron geladen werden – über JavaScript-Timer, Lazy Loading oder API-Aufrufe – sind möglicherweise noch nicht vollständig gerendert, wenn die Engine von IronPdf sie erfasst. Der Mechanismus WaitFor, der über die Eigenschaft waitFor auf ChromePdfRenderOptions konfiguriert wird, weist den Chrome-Renderer an, zu pausieren, bis bestimmte Bedingungen erfüllt sind, bevor die Seite erfasst wird.

Der folgende Code-Block legt fest, dass IronPDF 20 Sekunden wartet, bevor der Seiteninhalt erfasst wird:

//: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");
});
//: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 können Sie IronPDF so konfigurieren, dass es vor dem Rendern wartet, bis ein bestimmtes DOM-Element erscheint. Dies ist nützlich für Seiten, auf denen Inhalte erst nach dem Laden eines JavaScript-Frameworks eingefügt werden:

//: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");
});
//: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-Abfrage-Selektor. Der Renderer fragt nach dem Vorhandensein des Elements ab, bis maxWaitTime Millisekunden verstrichen sind oder das Element gefunden wird – je nachdem, was zuerst eintritt.

WarnungDas Einstellen übermäßig langer Wartezeiten kann die Zeit für die PDF-Erstellung in Anwendungen mit hohem Durchsatz erheblich verlängern. Verwenden Sie die kürzeste Verzögerung, die den für Ihren Anwendungsfall erforderlichen Inhalt zuverlässig erfasst.

Wie erstellt man PDFs aus einer HTML-Vorlage? {#html-template-to-PDF}

Ein gängiges Automatisierungsmuster in der Praxis ist die Erstellung einer Reihe von PDF-Dateien aus einer gemeinsamen HTML-Vorlage, wobei Platzhalterwerte durch Daten aus einer Datenbank, einer API oder einer Tabellenkalkulation ersetzt werden. Die Methode replaceText von IronPDF auf PdfDocument erledigt dies direkt.

Die unten stehende Beispiel-Rechnungsvorlage (angepasst von einer öffentlich zugänglichen CodePen-Rechnungsvorlage) verwendet Platzhalter in geschweiften Klammern wie {COMPANY-NAME}, {FULL-NAME} und {INVOICE-NUMBER} für austauschbare Inhalte:

Beispiel für eine HTML-Rechnungsvorlage mit Platzhalter-Tags für die dynamische Dateneinfügung Eine Beispielvorlage für eine Rechnung mit Platzhalter-Tags. JavaScript-Code ersetzt jeden Tag durch echte Daten, bevor das Dokument als PDF gespeichert wird.

Der folgende Code lädt die Vorlage, ersetzt jeden Platzhalter durch 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 Hilfsfunktionen:

  • getTemplateHtml: Lädt eine HTML-Datei mithilfe von PdfDocument in ein PdfDocument.fromHtml-Objekt.
  • addTemplateData: Ruft PdfDocument.replaceText auf, um einen Platzhalterschlüssel durch seinen tatsächlichen Datenwert zu ersetzen.
  • generatePdf: Schreibt das fertige PdfDocument in einen Ziel-Dateipfad.

Jeder replaceText-Aufruf wirkt direkt auf die PDF-Darstellung im Arbeitsspeicher, sodass mehrere Ersetzungen aneinandergereiht werden können, ohne das Dokument erneut von der Festplatte zu laden. Die resultierende PDF-Datei behält alle CSS-Stile, Schriftarten und das Layout der Originalvorlage bei.

PDF-Dokument, das aus der Rechnungsvorlage generiert wurde, nachdem alle Platzhalter durch echte Daten ersetzt wurden Die fertige PDF-Rechnung, in der die Platzhalterwerte durch echte Daten ersetzt wurden. Die CSS-Stile und das Layout der Originalvorlage werden exakt beibehalten.

Dieser Ansatz eignet sich gut für die Erstellung von Dokumenten im Stapelverfahren. Rufen Sie getTemplateHtml einmal pro Datensatz auf, um für jede Ausgabedatei ein neues PdfDocument zu erstellen, und verketten Sie dann die addTemplateData-Aufrufe für die Daten dieses Datensatzes, bevor Sie generatePdf aufrufen.

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

Dieses Tutorial behandelt die wichtigsten Methoden zur Konvertierung von HTML in PDF sowie die am häufigsten verwendeten Rendering-Optionen in IronPDF for Node.js. Die folgenden Themen vertiefen das hier Gelernte in spezielleren Bereichen.

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.5 just released
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.