Zum Fußzeileninhalt springen
PDF-WERKZEUGE

Wie man HTML in PDF in Node.js mit Puppeteer konvertiert

In der heutigen digitalen Welt ist es entscheidend, die Fähigkeit zu haben, Webseiten oder HTML-Dokumente in PDF-Dateien zu konvertieren. Dies kann nützlich sein, um Berichte zu erstellen, Rechnungen zu generieren oder einfach Informationen in einem präsentableren Format zu teilen. In diesem Blogbeitrag werden wir erkunden, wie man mit Hilfe von Node.js und Puppeteer, einer von Google entwickelten Open-Source-Bibliothek, HTML-Seiten in PDFs umwandeln kann.

Einführung in Puppeteer

Puppeteer ist eine leistungsstarke Node.js-Bibliothek, die Entwicklern ermöglicht, Headless-Browser, hauptsächlich Google Chrome oder Chromium, zu steuern und verschiedene Aktionen wie Web-Scraping, Screenshot-Erstellung und PDF-Generierung durchzuführen. Puppeteer bietet eine umfassende API zur Interaktion mit dem Browser, was es zu einer ausgezeichneten Wahl für die Konvertierung von HTML in PDF macht.

Warum Puppeteer?

  • Einfache Handhabung: Puppeteer bietet eine einfache und benutzerfreundliche API, die die Komplexitäten der Arbeit mit Headless-Browsern abstrahiert.
  • Leistungsfähig: Puppeteer bietet umfangreiche Möglichkeiten zur Manipulation von Webseiten und zur Interaktion mit Browser-Elementen.
  • Skalierbar: Mit Puppeteer können Sie den PDF-Generierungsprozess problemlos skalieren, indem Sie mehrere Browser-Instanzen parallel ausführen.

Einrichten Ihres NodeJS-Projekts

Bevor wir beginnen, müssen Sie ein neues NodeJS-Projekt einrichten. Folgen Sie diesen Schritten, um zu beginnen:

  1. Installieren Sie NodeJS, falls Sie es noch nicht haben (Sie können es von der NodeJS-Website herunterladen).
  2. Erstellen Sie einen neuen Ordner für Ihr Projekt und öffnen Sie ihn in Visual Studio Code oder einem beliebigen Code-Editor.
  3. Führen Sie npm init aus, um eine neue package.json-Datei für Ihr Projekt zu erstellen. Folgen Sie den Anweisungen und füllen Sie die erforderlichen Informationen aus.

Wie man HTML zu PDF in Node.js umwandelt: Abbildung 1

  1. Installieren Sie Puppeteer, indem Sie npm install puppeteer ausführen.

Wie man HTML zu PDF in Node.js umwandelt: Abbildung 2

Nachdem wir unser Projekt eingerichtet haben, lassen Sie uns in den Code eintauchen.

HTML-Vorlage laden und in PDF-Datei konvertieren

Um HTML-Vorlagen mithilfe von Puppeteer in eine PDF-Datei zu konvertieren, folgen Sie diesen Schritten:

Erstellen Sie eine Datei mit dem Namen "HTML To PDF.js" im Ordner.

Importieren von Puppeteer und fs

const puppeteer = require('puppeteer');
const fs = require('fs');

Der Code beginnt mit dem Import von zwei wesentlichen Bibliotheken: puppeteer, einem vielseitigen Tool zum Steuern von Headless-Browsern wie Chrome und Chromium, und fs, einem eingebauten NodeJS-Modul zur Handhabung von Dateisystemoperationen. Puppeteer ermöglicht es, eine Vielzahl von webbasierten Aufgaben zu automatisieren, einschließlich Rendering von HTML, Screenshot-Erstellung und PDF-Generierung.

Definieren der Funktion exportWebsiteAsPdf

async function exportWebsiteAsPdf(html, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Set the HTML content for the page, waiting for DOM content to load
  await page.setContent(html, { waitUntil: 'domcontentloaded' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

Die exportWebsiteAsPdf-Funktion dient als Kern unseres Code-Snippets. Diese asynchrone Funktion akzeptiert einen html-String und einen outputPath als Eingabeparameter und gibt eine PDF-Datei zurück. Die Funktion führt die folgenden Schritte aus:

  1. Startet eine neue Headless-Browserinstanz mit Puppeteer.
  2. Erstellt eine neue Browserseite.
  3. Setzt den bereitgestellten html-String als Seiteninhalt, wobei auf das Laden des DOM-Inhalts gewartet wird.
  4. Emuliert den Medientyp 'Bildschirm', um das für Bildschirme verwendete CSS anzuwenden, anstatt druckspezifische Stile.
  5. Generiert eine PDF-Datei aus dem geladenen HTML-Inhalt, wobei Ränder, Hintergrunddrucke und das Format (A4) angegeben werden.
  6. Schließt die Browserinstanz.
  7. Gibt die erstellte PDF-Datei zurück.

Verwendung der Funktion exportWebsiteAsPdf

// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');

// Convert the HTML content into a PDF and save it to the specified path
exportWebsiteAsPdf(html, 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

Der letzte Abschnitt des Codes zeigt, wie die exportWebsiteAsPdf-Funktion verwendet wird. Wir führen die folgenden Schritte aus:

  1. Lesen den HTML-Inhalt aus einer HTML-Datei mit der readFileSync-Methode des fs-Moduls.
  2. Rufen die exportWebsiteAsPdf-Funktion mit dem geladenen html-String und dem gewünschten outputPath auf.
  3. Verwenden einen .then-Block, um die erfolgreiche PDF-Erstellung zu handhaben und eine Erfolgsnachricht an die Konsole zu loggen.
  4. Verwenden einen .catch-Block, um alle Fehler zu verwalten, die während des HTML-zu-PDF-Konvertierungsprozesses auftreten, und eine Fehlermeldung an die Konsole zu loggen.

Dieses Code-Snippet bietet ein umfassendes Beispiel, wie man eine HTML-Vorlage mit NodeJS und Puppeteer in eine PDF-Datei konvertiert. Durch die Implementierung dieser Lösung können Sie effizient qualitativ hochwertige PDFs generieren, die den Anforderungen verschiedener Anwendungen und Benutzer gerecht werden.

Wie man HTML zu PDF in Node.js umwandelt: Abbildung 3

Konvertierung von URLs in PDF-Dateien

Neben der Konvertierung von HTML-Vorlagen ermöglicht Puppeteer auch die direkte Konvertierung von URLs in PDF-Dateien.

Puppeteer importieren

const puppeteer = require('puppeteer');

Der Code beginnt mit dem Importieren der Puppeteer-Bibliothek, einem leistungsstarken Tool zur Steuerung von Headless-Browsern wie Chrome und Chromium. Puppeteer ermöglicht es Ihnen, eine Vielzahl von webbasierten Aufgaben zu automatisieren, darunter das Rendern ihres HTML-Codes, das Erstellen von Screenshots und in unserem Fall das Generieren von PDF-Dateien.

Definieren der Funktion exportWebsiteAsPdf

async function exportWebsiteAsPdf(websiteUrl, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Open the URL in the current page
  await page.goto(websiteUrl, { waitUntil: 'networkidle0' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

Die exportWebsiteAsPdf-Funktion ist der Kern unseres Code-Snippets. Diese asynchrone Funktion akzeptiert eine websiteUrl und einen outputPath als Eingabeparameter und gibt eine PDF-Datei zurück. Die Funktion führt die folgenden Schritte aus:

  1. Startet eine neue Headless-Browserinstanz mit Puppeteer.
  2. Erstellt eine neue Browserseite.
  3. Navigiert zur bereitgestellten websiteUrl und wartet, bis das Netzwerk mit der waitUntil-Option auf networkidle0 eingestellt ist.
  4. Emuliert den Medientyp 'Bildschirm', um sicherzustellen, dass das für Bildschirme verwendete CSS angewendet wird, anstatt druckspezifische Stile.
  5. Konvertiert die geladene Webseite mit den angegebenen Rändern, Hintergrunddrucken und Format (A4) in eine PDF-Datei.
  6. Schließt die Browserinstanz.
  7. Gibt die generierte PDF-Datei zurück.

Verwendung der Funktion exportWebsiteAsPdf

// Usage example
// Convert the URL content into a PDF and save it to the specified path
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

Der letzte Abschnitt des Codes zeigt, wie die exportWebsiteAsPdf-Funktion verwendet wird. Wir führen die folgenden Schritte aus:

  1. Rufen Sie die Funktion exportWebsiteAsPdf mit der gewünschten websiteUrl und dem gewünschten outputPath auf.
  2. Verwenden Sie einen then Block, um die erfolgreiche PDF-Erstellung zu verarbeiten. In diesem Block loggen wir eine Erfolgsnachricht an die Konsole.
  3. Verwenden Sie einen catch -Block, um alle Fehler abzufangen, die während der Konvertierung der Website in eine PDF-Datei auftreten. Wenn ein Fehler auftritt, loggen wir eine Fehlermeldung an die Konsole.

Durch die Integration dieses Code-Snippets in Ihre Projekte können Sie URLs mühelos mit NodeJS und Puppeteer in qualitativ hochwertige PDF-Dateien konvertieren.

Wie man HTML in PDF in Node.js umwandelt: Abbildung 4

Beste HTML-zu-PDF-Bibliothek für C#-Entwickler

Erkunden Sie IronPDF ist eine beliebte .NET-Bibliothek, die für die Erstellung, Bearbeitung und Extraktion von Inhalten aus PDF-Dateien verwendet wird. Sie bietet eine einfache und effiziente Lösung zur Erstellung von PDFs aus HTML, Text, Bildern und bestehenden PDF-Dokumenten. IronPDF unterstützt .NET Core, .NET Framework und .NET 5.0+ Projekte, was es zu einer vielseitigen Wahl für verschiedene Anwendungen macht.

Hauptfunktionen von IronPDF

HTML-zu-PDF-Konvertierung mit IronPDF: IronPDF ermöglicht es Ihnen, HTML-Inhalte, einschließlich CSS, in PDF-Dateien zu konvertieren. Diese Funktion ermöglicht es Ihnen, pixelgenaue PDF-Dokumente von Webseiten oder HTML-Vorlagen zu erstellen.

URL-Rendering: IronPDF kann Webseiten direkt von einem Server über eine URL abrufen und in PDF-Dateien konvertieren. Dadurch wird es einfach, Webinhalte zu archivieren oder Berichte aus dynamischen Webseiten zu generieren.

Zusammenführung von Text, Bildern und PDFs: Mit IronPDF können Sie Text, Bilder und bestehende PDF-Dateien zu einem einzigen PDF-Dokument zusammenführen. Diese Funktion ist besonders nützlich zur Erstellung komplexer Dokumente mit mehreren Inhaltsquellen.

PDF-Bearbeitung: IronPDF bietet Werkzeuge zum Bearbeiten vorhandener PDF-Dateien, wie z. B. das Hinzufügen oder Entfernen von Seiten, das Ändern von Metadaten oder sogar das Extrahieren von Text und Bildern aus PDF-Dokumenten.

Abschluss

Zusammenfassend lässt sich sagen, dass die Erstellung und Bearbeitung von PDF-Dateien in vielen Anwendungen eine häufige Anforderung ist, und die richtigen Tools zur Verfügung zu haben, ist entscheidend. Die in diesem Artikel vorgestellten Lösungen, wie die Verwendung von Puppeteer mit NodeJS oder IronPDF mit .NET, bieten leistungsstarke und effiziente Methoden zur Konvertierung von HTML-Inhalten und URLs in professionelle, qualitativ hochwertige PDF-Dokumente.

IronPDF zeichnet sich insbesondere durch sein umfangreiches Funktionsspektrum aus, was es zu einer erstklassigen Wahl für .NET-Entwickler macht. IronPDF bietet eine kostenlose Testversion, die es Ihnen ermöglicht, seine Fähigkeiten zu erkunden.

Benutzer können auch von dem Iron Suite-Paket profitieren, einer Suite von fünf professionellen .NET-Bibliotheken, einschließlich IronXL, IronPDF, IronOCR und mehr.

Curtis Chau
Technischer Autor

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

Weiterlesen