Wie druckt man PDF-Dateien mit Node.js

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

Das Drucken einer PDF-Datei in Node.js erfordert das Senden des Dokuments an den Druckspooler des Betriebssystems. Das pdf-to-printer npm-Paket abstrahiert diesen Systemaufruf in eine Promise-basierte API, die unter Windows, macOS und Linux funktioniert und es Ihnen ermöglicht, einen Druckauftrag mit einem einzigen Methodenaufruf in die Warteschlange zu stellen. Für die PDF-Erzeugung vor dem Drucken — Konvertierung von HTML, URLs oder Vorlagen in druckbereite Dokumente — passt IronPDF for Node.js natürlich zu diesem Workflow.

Schnellstart: Drucken einer PDF-Datei mit Node.js

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/quickstart.js
// 1. Install: npm install pdf-to-printer
const printer = require('pdf-to-printer');

// 2. Print the PDF file (returns a Promise)
printer
  .print('./invoice.pdf')
  .then(() => console.log('Print job queued successfully.'))
  .catch((err) => console.error('Print failed:', err));
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/quickstart.js
// 1. Install: npm install pdf-to-printer
const printer = require('pdf-to-printer');

// 2. Print the PDF file (returns a Promise)
printer
  .print('./invoice.pdf')
  .then(() => console.log('Print job queued successfully.'))
  .catch((err) => console.error('Print failed:', err));
JAVASCRIPT

Was sind die Voraussetzungen zum Drucken von PDFs in Node.js?

Node.js 14.x oder höher und npm sind erforderlich, bevor pdf-to-printer verwendet werden kann. Das Paket stützt sich auf native OS-Druckbefehle anstelle eines gebündelten Druckmotors, sodass Druckertreiber bereits auf dem Zielrechner konfiguriert sein müssen.

Auf Windows ruft das Paket SumatraPDF über PowerShell auf. Stellen Sie sicher, dass die Ausführung von PowerShell-Skripten nicht durch Ihre Systemrichtlinie blockiert wird. Unter macOS und Linux delegiert das Paket an den Befehl lp, der Teil des CUPS-Drucksystems ist. Stellen Sie sicher, dass CUPS installiert ist und dass mindestens ein Drucker unter lpstat -p registriert ist.

Hinweis:Node.js 18.x LTS wird für Produktionslasten empfohlen. Das pdf-to-printer-Paket unterstützt alle aktiven Node.js-LTS-Versionen.

Wie richtet man ein Node.js-Projekt zum Drucken von PDF ein?

Initialisieren Sie ein neues Projekt, installieren Sie das Paket und erstellen Sie eine minimale Verzeichnisstruktur, bevor Sie irgendeine Drucklogik schreiben.

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/setup.sh
mkdir pdf-printer
cd pdf-printer
npm init -y
npm install pdf-to-printer
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/setup.sh
mkdir pdf-printer
cd pdf-printer
npm init -y
npm install pdf-to-printer
SHELL

Erstellen Sie nach der Installation eine index.js-Datei für Ihre Drucklogik und einen pdfs/-Ordner, in dem die zu druckenden Dokumente gespeichert werden. Ein separater config.js für Druckereinstellungen hält Druckernamen aus Ihrer Kernlogik heraus – ein nützliches Muster für Bereitstellungen in mehreren Umgebungen, in denen sich der Zieldrucker zwischen Entwicklung und Produktion unterscheidet.

Das Modul verwendet native Bindungen, die zur Laufzeit aufgelöst werden, sodass kein Kompilierungsschritt erforderlich ist. Das Verzeichnis node_modules/pdf-to-printer/dist/ enthält vorgefertigte Binärdateien für die erkannte Plattform.

Wie druckt man eine PDF-Datei mit grundlegender Verwendung?

Übergeben Sie den absoluten oder relativen Dateipfad an printer.print(). Die Methode stellt das Dokument mit dem Standarddrucker des Systems in die Warteschlange und löst das Promise auf, sobald der Auftrag vom Spooler akzeptiert wird — nicht, wenn das physische Drucken abgeschlossen ist.

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/basic-print.js
const fs = require('fs').promises;
const printer = require('pdf-to-printer');

async function printPDF(filePath) {
  // Verify the file exists before sending to printer
  await fs.access(filePath);

  const stats = await fs.stat(filePath);
  if (stats.size === 0) {
    throw new Error('PDF file is empty');
  }

  await printer.print(filePath);
  console.log(`Print job queued: ${filePath}`);
}

printPDF('./pdfs/invoice.pdf').catch((err) => {
  if (err.code === 'ENOENT') {
    console.error('File not found:', err.path);
  } else {
    console.error('Print error:', err.message);
  }
});
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/basic-print.js
const fs = require('fs').promises;
const printer = require('pdf-to-printer');

async function printPDF(filePath) {
  // Verify the file exists before sending to printer
  await fs.access(filePath);

  const stats = await fs.stat(filePath);
  if (stats.size === 0) {
    throw new Error('PDF file is empty');
  }

  await printer.print(filePath);
  console.log(`Print job queued: ${filePath}`);
}

printPDF('./pdfs/invoice.pdf').catch((err) => {
  if (err.code === 'ENOENT') {
    console.error('File not found:', err.path);
  } else {
    console.error('Print error:', err.message);
  }
});
JAVASCRIPT

Das Überprüfen der Dateiexistenz vor dem Aufruf von printer.print() verhindert stillschweigende Fehler, wenn ein Pfad falsch ist oder eine Datei verschoben wurde. Der Aufruf fs.access() löst ENOENT aus, wenn der Pfad nicht aufgelöst werden kann, wodurch Sie eine aussagekräftige Fehlermeldung anstelle einer generischen Spooler-Ablehnung erhalten. Häufige Fehlerursachen sind falsche relative Pfade, fehlende Druckertreiber und offline Druckerstatus.

WichtigDas Promise wird aufgelöst, wenn der Druckauftrag vom OS-Spooler akzeptiert wird, nicht wenn das Dokument fertig gedruckt ist. Für Prüfungszwecke notieren Sie den Zeitpunkt bei Auflösung anstatt anzunehmen, dass das Dokument den Drucker verlassen hat.

Wie erstellt man eine PDF, bevor man druckt?

Wenn das Dokument noch nicht als Datei vorliegt, generieren Sie es mit IronPDF for Node.js, bevor Sie printer.print() aufrufen. IronPDF rendert HTML, URLs und Vorlagenzeichenfolges zu druckfertigen PDF-Dateien, ohne dass eine separate Browserinstanz erforderlich ist.

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/generate-and-print.js
const { PdfDocument } = require('@ironsoftware/ironpdf');
const printer = require('pdf-to-printer');

async function generateAndPrint(htmlContent, outputPath) {
  // Render HTML to a PDF file using IronPDF
  const pdf = await PdfDocument.fromHtml(htmlContent);
  await pdf.saveAs(outputPath);

  // Send the generated file to the default printer
  await printer.print(outputPath);
  console.log(`Generated and printed: ${outputPath}`);
}

generateAndPrint('<h1>Monthly Report</h1><p>Sales data for May 2026.</p>', './pdfs/report.pdf');
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/generate-and-print.js
const { PdfDocument } = require('@ironsoftware/ironpdf');
const printer = require('pdf-to-printer');

async function generateAndPrint(htmlContent, outputPath) {
  // Render HTML to a PDF file using IronPDF
  const pdf = await PdfDocument.fromHtml(htmlContent);
  await pdf.saveAs(outputPath);

  // Send the generated file to the default printer
  await printer.print(outputPath);
  console.log(`Generated and printed: ${outputPath}`);
}

generateAndPrint('<h1>Monthly Report</h1><p>Sales data for May 2026.</p>', './pdfs/report.pdf');
JAVASCRIPT

Dieses Muster ist üblich in Berichtsprozessen, wo PDF-Inhalte zur Laufzeit aus Datenbankeinträgen oder API-Antworten zusammengestellt werden. Sehen Sie das HTML-zu-PDF-Konvertierungs-Tutorial für eine vollständige Anleitung zu den Renderoptionen von IronPDF, einschließlich CSS-Unterstützung und Kopf-/Fußzeilen-Injektion.

Wie lege ich benutzerdefinierte Druckeroptionen fest?

Übergeben Sie ein printerOptions-Objekt als zweites Argument an printer.print(), um einen bestimmten Drucker anzusteuern, die Anzahl der Kopien festzulegen, Seitenbereiche auszuwählen oder die Seitenvergrößerung zu steuern. Der Druckername muss genau mit dem von printer.getPrinters() zurückgegebenen Wert übereinstimmen.

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/custom-options.js
const printer = require('pdf-to-printer');

async function printWithOptions(filePath) {
  // List available printers to find the correct name
  const printers = await printer.getPrinters();
  printers.forEach((p) => {
    console.log(`${p.name} -- default: ${p.isDefault}`);
  });

  const options = {
    printer: 'HP LaserJet Pro',  // Exact name from getPrinters()
    copies: 2,                   // Number of copies
    pages: '1-3,5',              // Pages to print (optional)
    scale: 'fit',                // 'fit' | 'noscale' | 'shrink'
    orientation: 'portrait',     // 'portrait' | 'landscape'
  };

  await printer.print(filePath, options);
  console.log(`Printed ${options.copies} copies to "${options.printer}"`);
}

printWithOptions('./pdfs/shipping-label.pdf').catch(console.error);
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/custom-options.js
const printer = require('pdf-to-printer');

async function printWithOptions(filePath) {
  // List available printers to find the correct name
  const printers = await printer.getPrinters();
  printers.forEach((p) => {
    console.log(`${p.name} -- default: ${p.isDefault}`);
  });

  const options = {
    printer: 'HP LaserJet Pro',  // Exact name from getPrinters()
    copies: 2,                   // Number of copies
    pages: '1-3,5',              // Pages to print (optional)
    scale: 'fit',                // 'fit' | 'noscale' | 'shrink'
    orientation: 'portrait',     // 'portrait' | 'landscape'
  };

  await printer.print(filePath, options);
  console.log(`Printed ${options.copies} copies to "${options.printer}"`);
}

printWithOptions('./pdfs/shipping-label.pdf').catch(console.error);
JAVASCRIPT

Der Aufruf von getPrinters() vor print() dient zwei Zwecken: Er bestätigt, dass der Drucker online und erreichbar ist, und liefert Ihnen die autoritative Namenszeichenfolge, die das Betriebssystem zur Weiterleitung von Druckaufträgen verwendet. Druckernamen enthalten oft Versionsnummern oder Netzwerksuffixe, die sich von den im System gezeigten Namen unterscheiden.

TippsUnter Windows gibt getPrinters() die Druckerliste aus der Registrierung zurück. Auf macOS/Linux fragt es CUPS ab. Das Flag isDefault identifiziert den Drucker, der Aufträge empfängt, wenn kein Druckername angegeben ist.

Welche Druckeroptionen können konfiguriert werden?

Das printerOptions-Objekt unterstützt die folgenden Felder:

pdf-to-printer option properties
Option Typ Beschreibung Beispielwert
Drucker zeichenfolge Exakter Druckername, wie er von getPrinters() zurückgegeben wird 'HP LaserJet Pro'
Kopien Anzahl Anzahl der zu druckenden Kopien 2
Seiten zeichenfolge Seitenbereich-String '1-3,5'
scale zeichenfolge Seitenskalierungsmodus 'fit', 'noscale', 'shrink'
Ausrichtung zeichenfolge Seitenorientierungsüberschreibung 'portrait', 'landscape'

Für Dokumente, die benutzerdefinierte Papierformate oder eine bestimmte Seitenorientierung benötigen, die während der PDF-Erstellung anstelle der Druckzeit angewendet werden, konfigurieren Sie diese Optionen im IronPDF-Rendering-Schritt, bevor Sie die Datei speichern.

Wie kann ich Batch-Druck in Node.js implementieren?

Verarbeiten Sie einen Ordner mit PDF-Dateien oder eine dynamisch generierte Liste, indem Sie ein Array durchlaufen und für jede Datei printer.print() aufrufen. Die Verwendung von for...of zusammen mit await sorgt für eine sequenzielle Abarbeitung der Aufträge, wodurch verhindert wird, dass der Druckspooler durch gleichzeitige Anfragen überlastet wird.

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/batch-print.js
const printer = require('pdf-to-printer');
const fs = require('fs').promises;
const path = require('path');

class BatchPrinter {
  constructor(printerName = null) {
    this.printerName = printerName;
    this.queue = [];
  }

  async addFiles(filePaths) {
    for (const filePath of filePaths) {
      try {
        await fs.access(filePath);
        this.queue.push(filePath);
      } catch {
        console.warn(`Skipped (not found): ${filePath}`);
      }
    }
  }

  async printAll(options = {}) {
    const results = { successful: 0, failed: 0, errors: [] };

    for (const filePath of this.queue) {
      try {
        const printOptions = {
          ...options,
          ...(this.printerName && { printer: this.printerName }),
        };
        await printer.print(filePath, printOptions);
        results.successful++;
        console.log(`Printed: ${path.basename(filePath)}`);
      } catch (err) {
        results.failed++;
        results.errors.push({ file: filePath, error: err.message });
      }
    }

    this.queue = [];
    return results;
  }
}

// Usage: print monthly reports to a specific printer
(async () => {
  const batch = new BatchPrinter('Office Printer A3');

  await batch.addFiles([
    './reports/january.pdf',
    './reports/february.pdf',
    './reports/march.pdf',
  ]);

  const results = await batch.printAll({ copies: 1 });
  console.log(`Done -- ${results.successful} printed, ${results.failed} failed.`);
})();
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/batch-print.js
const printer = require('pdf-to-printer');
const fs = require('fs').promises;
const path = require('path');

class BatchPrinter {
  constructor(printerName = null) {
    this.printerName = printerName;
    this.queue = [];
  }

  async addFiles(filePaths) {
    for (const filePath of filePaths) {
      try {
        await fs.access(filePath);
        this.queue.push(filePath);
      } catch {
        console.warn(`Skipped (not found): ${filePath}`);
      }
    }
  }

  async printAll(options = {}) {
    const results = { successful: 0, failed: 0, errors: [] };

    for (const filePath of this.queue) {
      try {
        const printOptions = {
          ...options,
          ...(this.printerName && { printer: this.printerName }),
        };
        await printer.print(filePath, printOptions);
        results.successful++;
        console.log(`Printed: ${path.basename(filePath)}`);
      } catch (err) {
        results.failed++;
        results.errors.push({ file: filePath, error: err.message });
      }
    }

    this.queue = [];
    return results;
  }
}

// Usage: print monthly reports to a specific printer
(async () => {
  const batch = new BatchPrinter('Office Printer A3');

  await batch.addFiles([
    './reports/january.pdf',
    './reports/february.pdf',
    './reports/march.pdf',
  ]);

  const results = await batch.printAll({ copies: 1 });
  console.log(`Done -- ${results.successful} printed, ${results.failed} failed.`);
})();
JAVASCRIPT

Die Klasse BatchPrinter trennt die Validierung von der Ausführung. Dateien, die nicht vorhanden sind, werden während addFiles() übersprungen, damit eine einzelne fehlende Datei nicht den gesamten Stapel abbricht. Die printAll()-Methode protokolliert Fehler pro Datei und gibt eine Zusammenfassung zurück, die protokolliert oder an einen Überwachungsdienst weitergeleitet werden kann.

Für dynamisch generierte Berichte kombinieren Sie dieses Muster mit der HTML-zu-PDF-Umwandlung von IronPDF, um in einer einzigen Pipeline zu generieren und zu drucken. Das PDF-Komprimierungsbeispiel ist es wert, vor großen Druckserien angewendet zu werden, um die Übertragungszeit des Spoilers bei Netzwerkdruckern zu reduzieren.

TippsFügen Sie eine kurze await Verzögerung zwischen den Aufträgen ein, wenn der Drucker die Druckwarteschlange langsam verarbeitet – einige ältere Netzwerkdrucker lehnen schnelle aufeinanderfolgende Übermittlungen ab. Eine Pause von 200-500 ms ist normalerweise ausreichend.

Was sind die plattformspezifischen Überlegungen for Node.js PDF-Druck?

Das pdf-to-printer-Paket verwendet auf jedem Betriebssystem unterschiedliche Systembefehle. Das Verständnis des zugrunde liegenden Mechanismus hilft bei der Diagnose plattformspezifischer Ausfälle.

Wie funktioniert der PDF-Druck unter Windows?

Unter Windows ruft pdf-to-printer SumatraPDF über einen PowerShell-Befehl auf. SumatraPDF ist im Paket enthalten - keine separate Installation erforderlich. Die Ausführung von PowerShell-Skripten muss unter der aktuellen Ausführungsrichtlinie zulässig sein. Führen Sie Get-ExecutionPolicy in PowerShell aus, um dies zu überprüfen; Wenn das Ergebnis Restricted lautet, setzen Sie es für die Sitzung auf RemoteSigned oder Bypass.

Druckernamen unter Windows sind groß-/kleinschreibungssensitiv und müssen genau mit dem Wert übereinstimmen, der in Einstellungen > Bluetooth & Geräte > Drucker & Scanner angezeigt wird, einschließlich jedes Klammernetzwerksuffixes.

Wie funktioniert der PDF-Druck unter macOS und Linux?

Unter macOS und Linux ruft das Paket lp (Teil von CUPS) auf. Überprüfen Sie mit lpstat -p, ob CUPS läuft – dies listet alle registrierten Drucker und deren aktuellen Status auf. Wenn keine Drucker angezeigt werden, wurde der CUPS-Dienst möglicherweise nicht gestartet; Verwenden Sie sudo systemctl start cups unter Linux oder aktivieren Sie es unter "Systemeinstellungen" > "Drucker" auf macOS.

Der Befehl lp unterstützt nicht alle Optionen, die auch für den Windows-Pfad von SumatraPDF verfügbar sind. Die Optionen scale und orientation haben je nach Druckertreiber möglicherweise keine Auswirkungen auf das CUPS-basierte Drucken. Testen Sie auf der Zielhardware, bevor Sie sie bereitstellen.

WarnungDas pdf-to-printer-Paket druckt derzeit nur auf lokalen und Netzwerkdruckern. Cloud-Druckdienste wie Microsoft Universal Print werden durch dieses Paket nicht unterstützt.

Wie gehe ich mit Sicherheit und Berechtigungen beim Drucken von PDFs um?

Produktionsdrucksysteme, die sensible Dokumente - Verträge, Finanzaufzeichnungen, medizinische Formulare - verarbeiten, benötigen Zugriffskontrollen und Prüfpfade. Es ist in vielen regulierten Branchen eine Compliance-Anforderung, nachzuvollziehen, wer was und wann gedruckt hat.

//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/secure-print.js
const printer = require('pdf-to-printer');
const crypto = require('crypto');

class AuditedPrinter {
  constructor() {
    this.log = [];
  }

  async print(filePath, userId, options = {}) {
    const jobId = crypto.randomBytes(8).toString('hex');
    const entry = { jobId, userId, filePath, options, status: 'pending', startedAt: new Date().toISOString() };
    this.log.push(entry);

    try {
      await printer.print(filePath, options);
      entry.status = 'completed';
      entry.completedAt = new Date().toISOString();
      return { success: true, jobId };
    } catch (err) {
      entry.status = 'failed';
      entry.error = err.message;
      throw err;
    }
  }

  getLog(userId = null) {
    return userId ? this.log.filter((e) => e.userId === userId) : this.log;
  }
}

// Usage
const auditedPrinter = new AuditedPrinter();

(async () => {
  await auditedPrinter.print('./contracts/nda-2026.pdf', 'user-42', { copies: 1 });
  console.log('Audit log:', auditedPrinter.getLog('user-42'));
})();
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-print-pdf/secure-print.js
const printer = require('pdf-to-printer');
const crypto = require('crypto');

class AuditedPrinter {
  constructor() {
    this.log = [];
  }

  async print(filePath, userId, options = {}) {
    const jobId = crypto.randomBytes(8).toString('hex');
    const entry = { jobId, userId, filePath, options, status: 'pending', startedAt: new Date().toISOString() };
    this.log.push(entry);

    try {
      await printer.print(filePath, options);
      entry.status = 'completed';
      entry.completedAt = new Date().toISOString();
      return { success: true, jobId };
    } catch (err) {
      entry.status = 'failed';
      entry.error = err.message;
      throw err;
    }
  }

  getLog(userId = null) {
    return userId ? this.log.filter((e) => e.userId === userId) : this.log;
  }
}

// Usage
const auditedPrinter = new AuditedPrinter();

(async () => {
  await auditedPrinter.print('./contracts/nda-2026.pdf', 'user-42', { copies: 1 });
  console.log('Audit log:', auditedPrinter.getLog('user-42'));
})();
JAVASCRIPT

Die Klasse AuditedPrinter weist jeder PRINT-Anforderung eine eindeutige Auftrags-ID zu und protokolliert die Benutzeridentität, den Dateipfad und Zeitstempel. Das Speichern von this.log in einer Datenbank oder einer Logdatei, die nur angehängt werden kann, macht dies zu einem dauerhaften Prüfprotokoll. Für Dokumente, die persönlich identifizierbare Informationen enthalten, sollten Sie die PDF-Verschlüsselungsfunktionen von IronPDF verwenden, um Dateien im Ruhezustand zu schützen, bevor sie die Druckwarteschlange erreichen.

Für Serveranwendungen, die Druckanforderungen über HTTP akzeptieren, validieren Sie den Dateityp und die Größe vor dem Drucken - lehnen Sie jeden Upload ab, der kein gültiges PDF-Binärformat ist. Übergeben Sie vom Benutzer bereitgestellte Dateipfade niemals ohne Bereinigung direkt an printer.print().

WichtigSpeichern Sie Audit-Logs außerhalb des beschreibbaren Verzeichnisses der Anwendung. Ein Angreifer mit Schreibzugriff auf das Dateisystem sollte nicht in der Lage sein, Druckprotokolle zu manipulieren.

Was sind die nächsten Schritte for Node.js PDF-Druck?

Dieser Leitfaden behandelte das Drucken bestehender PDF-Dateien auf lokalen und Netzwerkdruckern unter Verwendung von pdf-to-printer, vom einfachen Drucken einzelner Dateien bis hin zu Stapelwarteschlangen, benutzerdefinierten Druckeroptionen, plattformspezifischen Überlegungen und Audit-Protokollierung für regulierte Umgebungen.

Um diesen Workflow mit PDF-Generierung zu erweitern, starten Sie eine kostenlose Testversion von IronPDF for Node.js und folgen Sie dem HTML-zu-PDF-Tutorial, um eine End-to-End-Dokumenten-Pipeline zu erstellen. Für Lizenzierungsoptionen und Volumenpreise, siehe die IronPDF-Lizenzseite.

Bereit, weiterzugehen? Entdecken Sie die vollständige IronPDF for Node.js How-to-Sammlung, um zu lernen, wie man PDF-Dateien zusammenfügt, PDF-Dateien komprimiert und PDFs in Bilder umwandelt.

Häufig gestellte Fragen

Wie lassen sich PDF-Dateien am einfachsten in Node.js drucken?

Verwenden Sie das pdf-to-printer npm-Paket. Installieren Sie es mit npm install pdf-to-printer, und rufen Sie dann printer.print('./file.pdf') auf - es gibt ein Promise zurück und reiht den Auftrag mit dem Standarddrucker in einer einzelnen Ausführung ein.

Was sind die Voraussetzungen für das Drucken von PDFs in Node.js?

Node.js 14.x oder höher, npm und ein konfigurierter Druckertreiber auf dem Host-Computer. Auf Windows muss die PowerShell-Ausführungsrichtlinie Skriptausführung zulassen. Auf macOS und Linux muss CUPS installiert und aktiv sein, mit mindestens einem registrierten Drucker über lpstat -p.

Wie drucke ich mit einem bestimmten Drucker in Node.js?

Übergeben Sie ein printerOptions-Objekt als zweites Argument an printer.print(). Setzen Sie das printer-Feld auf den genauen Druckernamen, der von printer.getPrinters() zurückgegeben wird. Druckernamen sind sensibel bezüglich Groß- und Kleinschreibung und müssen genau mit dem OS-Registry-Eintrag übereinstimmen.

Kann ich ein PDF erzeugen und es dann im selben Node.js-Skript drucken?

Ja. Verwenden Sie IronPDF for Node.js, um die Datei zuerst zu erzeugen: Rufen Sie PdfDocument.fromHtml(html) auf, um HTML-Inhalte zu rendern, speichern Sie sie mit pdf.saveAs(path), und übergeben Sie dann diesen Pfad an printer.print(path). Installieren Sie IronPDF mit npm install @ironsoftware/ironpdf.

Funktioniert pdf-to-printer auf macOS und Linux?

Ja. Auf macOS und Linux delegiert das Paket an den lp-Befehl von CUPS. Bestätigen Sie, dass CUPS mit lpstat -p aktiv ist. Beachten Sie, dass die scale- und orientation-Optionen möglicherweise nicht bei allen CUPS-Druckertreibern wirksam sind.

Wie füge ich in Node.js ein Audit-Log für Druckjobs hinzu?

Umbrechnen Sie printer.print() in einer Klasse, die eine eindeutige Job-ID durch crypto.randomBytes(8).toString('hex') zuweist und den Dateipfad, die Benutzer-ID und Zeitstempel aufzeichnet. Speichern Sie das Log-Array in einer Datenbank oder einer nur anhängbaren Datei außerhalb des beschreibbaren Anwendungsverzeichnisses.

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.