質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

16300閲覧

WEBページの印刷処理について

xxhiroxx_chan

総合スコア41

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2016/03/07 09:00

いつもお世話になっております。
xxhiroxx_chanと申します。

WEBページの印刷処理の実装について教えてください。
PHPの一覧表ページがあり、そこからボタンをクリックして、
別レイアウトのHTMLファイルを作成し、それを印刷したいと考えています。

ボタンクリックしたら、そのままデフォルトのプリンタで印刷されるようにすることは可能でしょうか?
HTMLファイルを一度画面に表示させた後、手動で印刷するしかないでしょうか?

jQueryAreaを使うことも考えましたが、それだと元のページの一部分を印刷することとなり、今回の目的を達することができません。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2016/03/07 10:35

別ウインドウは使ってよろしいんですか?
xxhiroxx_chan

2016/03/11 01:25

返信が遅くなり申し訳ありません。 別ウィンドウが上がっても全然いいと思っています。 欲を言うと、印刷と同時にウィンドウ画面が閉じるのが理想です。
guest

回答1

0

ベストアンサー

HTMLファイルは一度画面に表示しないと印刷は無理ではないでしょうか。
印刷が終わったら自動で閉じるようにするか、同じウインドウを印刷用に使い回すのが良いかと思います。
別ウインドウが駄目なら一覧表ページから印刷用ページに遷移し、「一覧表に戻る」ボタンをおいておき印刷後に一覧表に戻れるようにしたらどうでしょうか。(ボタンは印刷時非表示設定。)

5年ぐらい前に24時間中無人でも稼働する受注管理システムを作った時には常駐ツールも使って受注伝票などを自動印刷していました。

cssでは、ページの幅には72dpiで用紙幅に合わせたピクセル数を設定しておきます。
画面表示の中で印刷したくないブロックはcssの@media print{} でdisplay: none;と指定しておきます。

PHPで作成した一覧表をクリックまたは一定間隔で自動更新して新規受注を発見したら、印刷サイズに合わせたHTMLページを別ウインドウで開き、onloadイベントでwindow.print()で印刷ダイアログを表示します。

HTML

1<body onload="window.print()"> 2

ブラウザからwidnows.print()を実行すると印刷ダイアログが出てきて手動で押さないといけません。
セキュリティー上の問題で、ブラウザからそのままでは印刷出来ないようです。
どこかのサイトを開いた途端に勝手に印刷されても困りますから。

IE限定であればactiveXで印刷ダイアログを非表示にしたりするものもあるかもしれません。

自分の場合はC++でタスクトレイ常駐ツールを作って印刷ダイアログのボタンを自動押しするようにしていました。

印刷ダイアログの検索とボタン自動押しの処理は以下のようになります。

(1) win32APIのEnumWindows()からコールバックでウインドウハンドルを取得。
(2) タイトルが「印刷」という印刷ダイアログを見つけたらEnumChildWindows()からコールバックで列挙し、GetWidnowText()でボタン類のテキストを取得。
(3) 取得したテキストが「OK」や「印刷」や「印刷(&P)」だったらPostMessage()でBN_CLICKED をポスト。
(4) タイマー処理で5~30秒で再度(1)から実行する。

javascriptからWin32APIが操作出来るか判りませんが、Googleで検索するとそれらしいライブラリもあるようです。

【参考】
SFC mini http://sfcmini.osdn.jp/help/
Win32api.js http://itmst.blog71.fc2.com/blog-entry-139.html

投稿2016/03/07 10:41

編集2016/03/07 11:19
chinyato

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xxhiroxx_chan

2016/03/22 09:00

回答ありがとうございました。返信が遅くなり申し訳ありません。 今回は、社内用のシステムなので、シンプルに 印刷用のwindowを作って<body onload="window.print()"> で印刷ダイアログが出てくるようにしました。 ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問