Die Sache, die ich erstellen möchte, ist, dass ich durch Klicken auf eine Schaltfläche den Druck einer PDF-Datei auslösen möchte, aber ohne es zu öffnen.Drucken Sie ein PDF, ohne es visuell zu öffnen
+-----------+
| Print PDF |
+-----------+
^Click *---------> printPdf(pdfUrl)
Die Art und Weise, wie ich es zuerst versucht, ist ein iframe zu verwenden:
var $iframe = null;
// This is supposed to fix the onload bug on IE, but it's not fired
window.printIframeOnLoad = function() {
if (!$iframe.attr("src")) { return; }
var PDF = $iframe.get(0);
PDF.focus();
try {
// This doesn't work on IE anyways
PDF.contentWindow.print();
// I think on IE we can do something like this:
// PDF.document.execCommand("print", false, null);
} catch (e) {
// If we can't print it, we just open it in the current window
window.location = url;
}
};
function printPdf(url) {
if ($iframe) {
$iframe.remove();
}
$iframe = $('<iframe>', {
class: "hide",
id: "idPdf",
// Supposed to be a fix for IE
onload: "window.printIframeOnLoad()",
src: url
});
$("body").prepend($iframe);
}
Diese auf Safari funktioniert (Desktop & iOS) und Chrome (wir können es vielleicht verallgemeinern Webkit?).
Bei Firefox endet PDF.contentWindow.print()
mit einem permission denied
Fehler (sogar die PDF wird von der gleichen Domäne geladen).
Auf IE (11), der onload
Handler funktioniert einfach nicht.
Jetzt ist meine Frage: gibt es eine andere bessere Möglichkeit, das pdf zu drucken, ohne es visuell dem Benutzer zu öffnen?
Die Cross-Browser-Sache ist hier kritisch. Wir sollten so viele Browser wie möglich unterstützen.
Was ist der beste Weg, dies zu erreichen? Ist mein Start ein guter? Wie vervollständige ich es?
Wir sind jetzt im Jahr 2016 und ich fühle mich wie dies ist immer noch ein Schmerz, um über die Browser zu implementieren.
Wenn ich das richtig verstanden habe, möchten Sie das PDF nicht anzeigen, aber trotzdem ausdrucken ... also einfach mit anderen Worten herunterladen? Oder tun Sie einfach so, wie Sie es normalerweise tun würden, und verstecken Sie diesen Abschnitt. – Jorrex
Kann die PDF-Datei beim Öffnen nicht automatisch gedruckt werden? – epascarello
@Jorrex Nein, öffne es in einem versteckten Iframe und öffne den Druckdialog im Kontext dieses Iframes. Der Iframe ist keine Voraussetzung, aber es war mein erster Versuch. Ich bin mir nicht sicher, ob es andere Möglichkeiten gibt ... Kurz gesagt: Wenn ich auf die Schaltfläche klicke, sollte der Druckdialog geöffnet und das PDF gedruckt werden. –