HTML zu PDF in Node.js konvertieren
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
Wie man HTML in Node.js in PDF konvertiert
- Installieren Sie die IronPDF Node.js-Bibliothek über NPM:
npm install @ironsoftware/ironpdf - Importieren Sie die Klasse PdfDocument aus dem Paket
@ironsoftware/ironpdf. - Rufen Sie
PdfDocument.fromHtml,PdfDocument.fromUrloderPdfDocument.fromZipin Abhängigkeit von Ihrer HTML-Quelle auf. - Konfigurieren Sie optional die Rendering-Optionen: Kopfzeilen, Fußzeilen, Seitengröße, Ausrichtung und Ränder.
- Rufen Sie
PdfDocument.saveAsauf, um das generierte PDF auf der Festplatte zu speichern.
Inhaltsverzeichnis
- Wie fangen Sie mit IronPDF for Node.js an?
- Wie konvertieren Sie HTML in PDF in Node.js?
- Welche erweiterten Rendering-Optionen unterstützt IronPDF?
- Wie generieren Sie PDFs aus einer HTML-Vorlage?
- Was sind die nächsten Schritte?
Wie fangen Sie mit IronPDF for Node.js an? T>{#getting-started}
Nutzen Sie IronPDF heute kostenlos in Ihrem Projekt.
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.
@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}";
Fordern Sie einen kostenlosen Testlizenzschlüssel an oder kaufen Sie einen Lizenzschlüssel auf der Lizenzierungsseite.
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
// ...
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:
- Aus einer HTML-Code-Zeichenfolge
- Aus einer lokalen HTML-Datei
- Von einer Online-URL
- 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");
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.
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");
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.
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");
});
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.
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");
Der Wikipedia-Artikel über das PDF-Format, wie er in einem standardkonformen Webbrowser angezeigt wird.
Das von PdfDocument.fromUrl bei einem Wikipedia-Artikel aufgerufene PDF. Beachten Sie seine enge Ähnlichkeit mit der ursprünglichen Webseite.
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>
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;
}
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");
});
PDF-Erstellung mit PdfDocument.fromZip. Die Funktion rendert den HTML-Code aus der ZIP-Datei erfolgreich zusammen mit seinen eingebundenen Ressourcen.
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.
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();
Ä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");
});
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");
});
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");
});
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.
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");
});
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");
});
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.
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:
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"));
Der obige Code definiert drei asynchrone Helferfunktionen:
getTemplateHtml: Lädt eine HTML-Datei in einPdfDocumentObjekt mitPdfDocument.fromHtml.addTemplateData: RuftPdfDocument.replaceTextauf, um einen Platzhalterschlüssel mit seinem tatsächlichen Datenwert zu ersetzen.generatePdf: Schreibt den abgeschlossenenPdfDocumentan 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.
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.
- Bearbeiten und Stempeln von PDFs in Node.js — Stempel, Anmerkungen und Textbearbeitungen programmgesteuert auf bestehende PDF-Dokumente anwenden.
- Zusammenführen und Aufteilen von PDFs in Node.js — Mehrere PDFs in ein einzelnes Dokument zusammenführen oder ein PDF in separate Seiten aufteilen.
- Wasserzeichen zu PDFs in Node.js hinzufügen — Text- oder Bildwasserzeichen über jede Seite eines PDFs mit präziser Positionskontrolle anwenden.
- IronPDF Node.js API-Referenz — Durchsuchen Sie die vollständige API für
PdfDocument,ChromePdfRenderOptions,WaitFor,AffixFontsund alle anderen exportierten Klassen und Schnittstellen. - Erhalten Sie einen kostenlosen Testlizenzschlüssel — Erstellen Sie hochwertige PDFs ohne Wasserzeichen, indem Sie eine kostenlose 30-Tage-Testlizenz aktivieren.
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.

