Das direkte Drucken von PDFs aus einem Webbrowser mithilfe von JavaScript ist aufgrund von Browserinkonsistenzen und Sicherheitsbedenken nicht einfach. Es gibt jedoch verschiedene Techniken, um den Druckdialog des Browsers für PDFs effektiv auszulösen. Dieser Artikel beschreibt zwei gängige Methoden: die Verwendung eines iframes und die Nutzung der Print.js-Bibliothek.
Inhaltsverzeichnis
- PDFs mit dem iframe-Tag drucken
- PDFs mit der Print.js-Bibliothek drucken
- Die richtige Methode auswählen
PDFs mit dem iframe-Tag drucken
Dieser Ansatz ist einfach und erfordert keine externen Bibliotheken. Er bettet die PDF in ein iframe ein und löst dann den Druck aus dem Kontext des iframes aus.
Implementierung:
- PDF einbetten: Verwenden Sie ein
<iframe>
-Tag, setzen Sie dessensrc
-Attribut auf die URL der PDF und blenden Sie es mit CSS aus: - Druck auslösen: Verwenden Sie JavaScript, um auf das Inhaltsfenster des iframes zuzugreifen und dessen
print()
-Methode aufzurufen: - Druckknopf hinzufügen: Erstellen Sie einen Knopf, der
printPdf()
aufruft:
<iframe id="pdf-iframe" src="your-pdf-file.pdf" style="display: none;"></iframe>
function printPdf() {
const iframe = document.getElementById('pdf-iframe');
if (iframe.contentWindow) { // Prüfung, ob contentWindow existiert, um Fehler zu vermeiden
iframe.contentWindow.focus(); // Stellen Sie sicher, dass das iframe fokussiert ist, bevor gedruckt wird
iframe.contentWindow.print();
} else {
console.error("Fehler: Zugriff auf das Inhaltsfenster des iframes nicht möglich.");
}
}
<button onclick="printPdf()">PDF drucken</button>
Einschränkungen:
- Browserkompatibilität: Die Zuverlässigkeit variiert je nach Browser. Einige benötigen möglicherweise Benutzerinteraktion oder spezielle Berechtigungen.
- Eingeschränkte Kontrolle: Minimale Kontrolle über Seitenbereiche oder Druckeinstellungen.
- Sicherheit: Das direkte Einbetten von PDFs kann je nach Herkunft der PDF Sicherheitsrisiken darstellen.
PDFs mit der Print.js-Bibliothek drucken
Print.js bietet eine robustere und funktionsreichere Lösung, die Browserinkonsistenzen handhabt und eine bessere Kontrolle bietet. Es ist eine leichtgewichtige Bibliothek, die einfach in Ihr Projekt integriert werden kann.
Implementierung:
- Print.js einbinden: Fügen Sie die Print.js-Bibliothek über ein CDN zu Ihrem HTML hinzu:
- Druck auslösen: Verwenden Sie die
printJS()
-Funktion von Print.js: - Druckknopf hinzufügen (wie oben):
<script src="https://cdnjs.cloudflare.com/ajax/libs/print.js/1.6.2/print.min.js"></script>
function printPdf() {
printJS({
printable: 'your-pdf-file.pdf',
type: 'pdf',
});
}
<button onclick="printPdf()">PDF drucken</button>
Vorteile:
- Verbesserte Browserkompatibilität: Handhabt effektiv browserübergreifende Unterschiede.
- Mehr Kontrolle: Bietet im Vergleich zur iframe-Methode einige Anpassungsmöglichkeiten.
- Benutzerfreundlicher: Eine einfachere und intuitivere API.
Die richtige Methode auswählen
Die iframe-Methode ist einfacher, aber weniger zuverlässig und bietet weniger Kontrolle. Print.js bietet eine robustere, funktionsreichere und benutzerfreundlichere Lösung, erfordert aber das Hinzufügen einer externen Bibliothek. Die beste Wahl hängt von den Anforderungen Ihres Projekts ab, wobei Faktoren wie einfache Implementierung, benötigte Kontrolle und Browserkompatibilität im Vordergrund stehen.