16

次のJavaScriptを呼び出す「印刷」ボタンがあります

window.frames.myPdfFrame.print();

ここで、「myPdfFrame」は、src の PDF を含む iframe を指します。

Chrome および Firefox 18 (およびそれ以前) では、期待どおりに印刷ダイアログが開きますが、Firefox 19 の時点で、次のエラーが表示されます。

Error: Permission denied to access property 'print'

これは、Adobe プラグインではなく、Firefox 19 でリリースされた埋め込み PDF ビューアーの使用に関連していると思われます。PDF プラグインのツールバーにある印刷アイコンを使用すると、期待どおりに機能します。

Javascript から Firefox 19 のインライン PDF で印刷ダイアログを呼び出す方法はありますか?

4

3 に答える 3

5

提供されているJSFiddle demoを Firefox 22と NoScriptで試しました。興味深いことに、最初にフィドルを開いたとき、iframe のコンテンツは NoScript によってブロックされていましたが、印刷ダイアログはすぐに表示されました。「OK」をクリックすると、ドキュメントabout.blankがプリンターに送信されたことを示すタスクバー トーストが表示されました。案の定、プリンターをチェックしたところ、きれいな白いページが吐き出されました。役に立たない...

ここで、NoScript に PDF のドメイン (irs.gov) を「一時的に許可」するように指示した後、バグを再現します。

Error: Permission denied to access property 'print'

この他の質問は、それが同一起源ポリシーの問題であるかどうか疑問に思いました。そのため、同じマシンでホストされている PDF ドキュメントを使用して、自分の Web サーバーでテストしました。そして...サイコロはありません!

次に、IE 9 と Chrome でテスト ページを試しました。どちらも印刷ダイアログを表示しますが、ドキュメントを印刷すると、IE 9 の場合、実際には空白について印刷され、Chrome は「読み込み中」という灰色の四角形を印刷します...ページ全体を印刷しているように見えます、iframe 内のドキュメントだけではありません。

したがって、これは不可能に思えるという Jason Sperske の意見に同意します。

更新この回答は「うまくいく」ソリューションを提供しますが、Fpdfライブラリによって生成されたPHPファイルに対してのみ...

于 2013-07-30T08:54:11.753 に答える
2

Firefox の最近のバージョン (19 以降) では、バグのあるネイティブ PDF ビューアー (pdf.js) を無効にする必要がありますabout:configpdfjs.disabledプロパティを に設定するtrueと、スクリプトを使用して印刷ウィンドウが表示されます。

ダウンロードが開始された場合は、plugin.disable_full_page_plugin_for_typesプロパティをに設定しますapplication/pdf

于 2014-02-01T17:11:46.460 に答える
1

次のコードを試してください。動作しています。

window.frames.myPdfFrame.focus();
window.print();
于 2013-08-06T06:12:44.143 に答える