2013-02-21 10 views
15

Ich habe eine Schaltfläche "Drucken", die die folgenden JavaScriptFirefox 19 Drucken von PDF von JavaScript

window.frames.myPdfFrame.print(); 

wo "myPdfFrame" mit einem PDF zum src zu einem Iframe verweist aufruft.

In Chrome und Firefox 18 (und unten) diese den Dialog Druck öffnet wie erwartet, aber ab 19 Firefox bekomme ich folgende Fehler

Error: Permission denied to access property 'print' 

Ich nehme an, das die embedded PDF viewer released with Firefox 19 eher auf die Verwendung als die in Beziehung steht Adobe-Plugin. Die Verwendung des Drucksymbols in der Symbolleiste des PDF-Plugins funktioniert wie erwartet.

Gibt es eine Möglichkeit, den Druckdialog auf einer Inline-PDF in Firefox 19 aus Javascript aufzurufen?

+0

Ist dies eine genaue Probe von dem, was Sie versuchen zu tun? http://jsfiddle.net/hytcX/3/ –

+2

Ja, ich auch, ich könnte ein laufendes Beispiel anderen helfen, in diese –

+0

zu graben Ja, das ist ein gutes Beispiel, und reproduziert den Fehler. –

Antwort

4

Ich probierte die bereitgestellten JSFiddle demo, mit Firefox 22 und NoScript. Interessanterweise wurde der Inhalt des Iframes beim ersten Öffnen der Geige durch NoScript blockiert, aber der Druckdialog tauchte schnell auf! Ich klickte auf "OK", und ich bekam eine Taskbar Toast, die besagt, dass das Dokument about.blank an den Drucker gesendet wurde. Sicher genug, ich habe den Drucker überprüft und es spuckte eine schöne weiße Seite aus. Nicht nützlich ...

Jetzt, nach NoScript zu sagen, um die Domäne des PDF (irs.gov) „vorübergehend erlauben“, ich den Fehler reproduzieren:

Error: Permission denied to access property 'print' 

This other question machte mich fragen, ob es war ein Problem von same origin policy. Also teste ich es auf meinem eigenen Webserver mit einem PDF-Dokument, das auf demselben Rechner gehostet wird. Und ... kein Würfel!

Ich habe dann meine Testseite in IE 9 und Chrome versucht. Beide zeigen den Druckdialog, aber wenn ich das Dokument, im Fall von IE 9, drucke es tatsächlich über: leer, und Chrome druckt ein graues Rechteck mit der Aufschrift "Loading" ... sieht aus wie es druckt ganze Seite, nicht nur das Dokument im Iframe.

Also stimme ich Jason Sperske, dass dies nicht möglich scheint.

UPDATE: this answer bietet eine Lösung, die "einfach funktioniert", aber nur für PHP-Dateien von der Fpdf library erzeugt ...

+0

Der Chrome "Loading ..." kann repariert werden, wenn Sie ein Timeout (von angemessener Länge ... ich weiß nicht was) einstellen; Für manche funktioniert das Anhören des Onload-Events nicht. –

1

Bitte versuchen Sie den folgenden Code, es funktioniert:

window.frames.myPdfFrame.focus(); 
window.print(); 
+0

Es tut mir leid, das funktioniert nicht für mich auf IE 9, noch auf Firefox 22. –

+0

ok lass mich überprüfen. Wird zu dir zurückkommen. –

2

Bei neueren Versionen von Firefox (seit 19) müssen Sie den fehlerhaften und nativen PDF-Viewer (pdf.js) unter about:config deaktivieren. Setzen Sie die Eigenschaft pdfjs.disabled auf true, und das Druckfenster wird mit Ihrem Skript angezeigt. Wenn ein Download gestartet wird, legen Sie die plugin.disable_full_page_plugin_for_types-Eigenschaft auf application/pdf fest.

+0

Auch hier gefunden: http://stackoverflow.com/questions/15769933/firefox-printing-pdf-in-an-iframe-throws-an-error –

Verwandte Themen