- 締切済み
WEB画面を非表示にして印刷
WEB画面上で以下のようなことがしたいのですが、可能でしょうか? 可能な場合、記述方法を教えてください。 使用言語はPHPとjsでお願いしたいです。 1.test1.phpの画面内印刷ボタンをクリック(formもしくはjs処理で2へ。引数を渡します) ---ポップアップで「印刷中です」と表示---(test2.php内に記述?) 2.test2.phpでtest1.phpからの引数を用いた内部処理を実行して印刷画面(体裁記述はhtml)を作成 3.印刷実行(window.print()?)(ローカルのプリンタ設定画面(Windowsポップアップの「印刷」というもの)が表示されてしまう?) ---印刷終了したらポップアップを閉じる--- という感じなのですが、 ・test2.phpのWEB画面を表示せずに(表示はtest1.phpのまま)印刷することは可能なのでしょうか? ・3.のローカル側の確認画面もできれば出したくないです。でもこれは難しそうですよね…? ・また、もしどうしてもtest2.phpの画面が表示されたとしても、印刷終了時にtest1.phpへ戻りたいです。 ・印刷の開始、終了を検知することはできるのでしょうか? やりたいことは以上のような感じなのですが、もし上記が難しくても、別の処理フローや代替案があれば教えていただきたいです(>_<) よろしくお願いしますm(__)m
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- dell_OK
- ベストアンサー率13% (766/5720)
test2.phpの画面を表示していないように見せかけて印刷処理へ遷移し、test1.phpへ戻ったかのように見せかける、ならできそうです。 ひとつのウインドウ内で処理するには、HTML出力した体裁が見えてしまうのと、仮に見えないようにHTML上で非表示にしてしまうと印刷結果も非表示になってしまうと思うので、別ウインドウにて処理する事を発案しました。 注意点 ※ポップアップで「印刷中です」の表示方法はわかりません。 ※ローカルのプリンタ設定画面は表示されてしまいます。 ※test2.phpの画面は別ウインドウで開き、ディスプレイの表示領域外へ表示します。 ※印刷処理後そのウインドウを閉じる事でさもtest1.phpへ戻ったかのように見えます。 ※引数はGETで取得します。 ※印刷の開始終了の検知はJavaScriptでなんとなくやってみましたが、alert()などを実行するとtest2.phpのウインドウが閉じられなくなります。 test1.php --------- <body> <script type="text/javascript"> <!-- function jprint(){ //印刷開始の検知 document.write("印刷中です"); //印刷処理 pwindow = window.open("test2.php?d=引数","_blank","left=100000"); pwindow.close(); } //--> </script> <?php switch ($_GET["p"]){ case "e"; ?> 印刷しました <?php break; default: ?> <input type="button" value="印刷" onClick="jprint()"> <?php } ?> </body> test2.php --------- <script type="text/javascript"> <!-- //印刷終了を検知:test1.phpによってウインドウが閉じられる事で発生 function pend(){ window.opener.location="test1.php?p=e"; } //--> </script> <body onUnload="pend()"> <?php //引数を用いた処理でHTMLの体裁出力 echo $_GET["d"]; ?> <script type="text/javascript"> <!-- //印刷処理 window.print(); //--> </script> </body> OSやブラウザによっては期待通りに動作しないかも知れません。 また、私の環境でもうまく動作する時としない時がありました。 うまく動作しないと言うのは、test2.phpのウインドウが閉じられなくなる現象です。