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 Node.js-Projekts

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

  1. Installieren Sie Node.js, falls Sie es noch nicht haben (Sie können es von der Node.js-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 in PDF in Node.js umwandelt: Abbildung 1

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

    Wie man HTML in 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 Importieren von zwei essenziellen Bibliotheken: puppeteer, ein vielseitiges Werkzeug zur Steuerung von Headless-Browsern wie Chrome und Chromium, und fs, ein integriertes Node.js-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 Kernstück unseres Code-Beispiels. Diese asynchrone Funktion akzeptiert eine html-Zeichenfolge und eine 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. Legt die bereitgestellte html-Zeichenfolge als Seiteninhalt fest und wartet, bis der DOM-Inhalt geladen ist.
  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 Sie den HTML-Inhalt aus einer HTML-Datei mithilfe der fs-Modul-Methode readFileSync.
  2. Rufen Sie die exportWebsiteAsPdf-Funktion mit der geladenen html-Zeichenfolge und der gewünschten outputPath auf.
  3. Verwenden Sie einen .then-Block, um die erfolgreiche PDF-Erstellung zu handhaben, und protokollieren Sie eine Erfolgsnachricht in der Konsole.
  4. Verwenden Sie einen .catch-Block, um alle Fehler zu verwalten, die während des HTML-zu-PDF-Konvertierungsprozesses auftreten, und protokollieren Sie eine Fehlermeldung in der Konsole.

Dieses Code-Snippet bietet ein umfassendes Beispiel, wie man eine HTML-Vorlage mit Node.js 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 in 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 das Kernstück unseres Code-Beispiels. Diese asynchrone Funktion akzeptiert eine websiteUrl und eine 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 darauf, dass das Netzwerk im Leerlauf ist, indem die waitUntil-Option auf networkidle0 gesetzt wird.
  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 abschließende Abschnitt des Codes demonstriert, wie die exportWebsiteAsPdf-Funktion verwendet wird. Wir führen die folgenden Schritte aus:

  1. Rufen Sie die exportWebsiteAsPdf-Funktion mit der gewünschten websiteUrl und outputPath auf.
  2. Verwenden Sie einen then-Block, um die erfolgreiche PDF-Erstellung zu handhaben. In diesem Block loggen wir eine Erfolgsnachricht an die Konsole.
  3. Verwenden Sie einen catch-Block, um alle Fehler zu handhaben, die während des Website-zu-PDF-Konvertierungsprozesses 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 Node.js 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 mithilfe einer URL abrufen und in PDF-Dateien umwandeln, wodurch es einfach ist, Webinhalte zu archivieren oder Berichte von dynamischen Webseiten zu erstellen.

Text-, Bild- und PDF-Zusammenführung: IronPDF ermöglicht es Ihnen, Text, Bilder und bestehende PDF-Dateien in ein einziges PDF-Dokument zu integrieren. Diese Funktion ist besonders nützlich zur Erstellung komplexer Dokumente mit mehreren Inhaltsquellen.

PDF-Bearbeitung: IronPDF bietet Werkzeuge zum Bearbeiten vorhandener PDF-Dateien, wie zum Beispiel 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 Node.js 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 for .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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me