Druck-Pdf mit javascript-embed-tag
Ich habe eine PDF Datei und ich versuche, drucken Sie es über Javascript. Ich habe versucht, diese embed-trick: Silent drucken einer eingebetteten PDF-Datei jedoch die drucken-Funktion wird nie verfügbar, es ist immer undefiniert.
Habe ich versucht das Iframe-trick mit diesem code:
function printPDF() {
if(document.getElementById("pdfDocument").contentWindow.document.readyState === "complete") {
document.getElementById("pdfDocument").focus();
document.getElementById("pdfDocument").contentWindow.print();
} else {
setInterval(printPDF(), 1000);
}
}
(pdfDocument-ist die ID vom iframe) Dies tut, öffnet den drucken-Dialog, sondern drucken eine leere Seite. Ich würde gerne das embed-tag Weg zur Arbeit. Aber warum ist die print-Funktion wird nicht immer verfügbar sein?
Meisten Beiträge zu diesem Thema sind schon ziemlich alt. Was ist die beste HTML5/jQuery Weg, es zu tun? (oder einfach nur regelmäßige JS an dieser Stelle)
EDIT:
hier der JS-code für das embed-tag:
function printPDF() {
alert(document.getElementById("pdfDocument").print);
//Wait until PDF is ready to print
if (typeof document.getElementById("pdfDocument").print == 'undefined') {
setTimeout(function(){printPDF();}, 1000);
} else {
var x = document.getElementById("pdfDocument");
x.print();
}
}
Hält diese änderung "undefined" jeder zweite. Die option Drucken ist nicht verfügbar. Irgendwelche Ideen?
Entweder/ alle LOL, alles an dieser Stelle!
:S wie wissen Sie drucken immer "undefined" zurückgibt, Sie haben keine return-Anweisungen?
Ach ja, und ein jsFiddle helfen würde...
Ich weiß, das ist sehr alt, aber... hat das jemand anderes bemerken, dass
setInterval(printPDF(), 1000);
ist die Einstellung der Intervall auf die return-Ergebnis von printPDF()? Es geschieht, um zu arbeiten, da Sie erstellt haben, eine rekursive Funktion, aber es ist eigentlich nicht die Nutzung der Intervall...InformationsquelleAutor mmaceachran | 2013-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich ein Kopfgeld auf diese Fragen eine Woche oder so vor und es ist abgelaufen. Ich werde posten, was ich gelernt habe, hier nach eine Menge Forschung für jedermann in der Zukunft, möglicherweise.
PDF ' s angezeigt werden ist unterschiedlich je nach browser, browser-version, browser-Konfiguration und das Betriebssystem. Es gibt eine Menge von Variablen, so werde ich sprechen über die häufigsten Situationen hier.
Auf allen Browsern, die ich nicht in der Lage war, zu rufen jede Art von print () - Methode durch Javascript, ich war nur in der Lage zu verwenden PdfActions. Die OPENACTION nennen würde drucken. Eingebettet sind diese in das PDF mit iText.
Chrome verwendet den Adobe-viewer, die Sie nicht geben Zugang für jede Art von print () - Methode aber nicht ausführen PdfActions im PDF-Dokument eingebettet. So können Sie einbetten ein "OpenAction" in eine PDF-Datei und die PDF aufrufen, ausdrucken, Wann immer es geöffnet aus jeder Anwendung, die sieht an diesen Aktionen.
Firefox (ab einer bestimmten version, die alle aktuellen Versionen) verwendet den Adobe-viewer in Windows, die auch erkennt PdfActions. Aber in OSX verliert es die Unterstützung für den Adobe viewer und wechselt zum aufbacken im Firefox-viewer (pdf.js). Die nicht-Unterstützung PdfActions.
IE: ich habe nicht wirklich testen viel auf dem IE. Vor allem, weil ich habe bis auf das drucken von PDF ' s aus Javascript-Code nach dem Firefox nicht funktionieren unter OSX (ein erf. für mich).
Meine PDF ' s waren erzeugt durch einen server, den ich kontrollieren, damit ich endete damit, service-änderungen in meinem server und das hinzufügen eines bekommen, PNG-Dienst, der generiert eine PNG-basiert auf dem gleichen markup, das die PDF-Generierung verwendet. Browser behandeln Bilder viel besser, als PDFs, die ich wusste, gehen in, aber hoffte, dass ich nur in der Lage sein, um die Wiederverwendung der PDF-Erzeugung service, da es verwendet an anderer Stelle in meinem code.
Es beantwortet nicht die Frage, aber es ist alles, die Informationen, die ich habe. Mein Vorschlag an jeden, der vielleicht in der Zukunft: ditch PDF, wenn möglich, in diesem Fall und gehen einfacher. Andernfalls aktualisieren Sie bitte diese Frage, wenn Sie wissen, wie rufen Sie print() mit Hilfe von Javascript im FF-pdf-viewer unter OSX.
-Phil
InformationsquelleAutor philhan
Mit Javascript, ich bin nicht sicher, dass wir dies tun können. Jedoch kann erreicht werden, mithilfe von script-injection in der pdf-Datei. Wenn mein Verständnis richtig ist, dies ist, was Google tut.
Zum Beispiel.
Können wir die Verwendung iTextSharp zu simulieren oben beschriebenen Verhalten.
InformationsquelleAutor Rama Kathare
Es ist ein Weg, um den Ausfall der gesamten pdf-Dokument in einem browser (anstelle der Einbettung einer externen Anwendung), die gibt Ihnen vollen Zugriff, um browser-APIs in Hinblick auf die pdf-Datei.
Dies ist Mozillas pdf-Implementierung in JavaScript: https://github.com/mozilla/pdf.js/
Und dies ist die showcase: http://mozilla.github.io/pdf.js/web/viewer.html (beachten Sie die print-Taste auf der oberen rechten Seite).
Überprüfen Sie heraus den viewer-code hier für die details, wie es funktioniert: https://github.com/mozilla/pdf.js/blob/master/web/viewer.js
Auf der minus-Seite — es geht um viel schwieriger, als nur einbetten.
Auf der plus-Seite, es funktioniert tatsächlich.
Ich benutze PDF.JS für andere Zwecke. Leider, Ihr print-rendering ist nicht so hochwertig wie Adobe Reader ist... hoffentlich wird es in der Zukunft gelöst werden.
InformationsquelleAutor Arseny Smoogly
In Chrome können Sie ausführen:
InformationsquelleAutor stomy