teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

内容の追加

2016/03/07 11:19

投稿

chinyato
chinyato

スコア241

answer CHANGED
@@ -1,7 +1,8 @@
1
1
  HTMLファイルは一度画面に表示しないと印刷は無理ではないでしょうか。
2
2
  印刷が終わったら自動で閉じるようにするか、同じウインドウを印刷用に使い回すのが良いかと思います。
3
+ 別ウインドウが駄目なら一覧表ページから印刷用ページに遷移し、「一覧表に戻る」ボタンをおいておき印刷後に一覧表に戻れるようにしたらどうでしょうか。(ボタンは印刷時非表示設定。)
3
4
 
4
- 5年ぐらい前に24時間中無人でも稼働する受注管理システムを作った時にはツールもって自動印刷していました。
5
+ 5年ぐらい前に24時間中無人でも稼働する受注管理システムを作った時には常駐ツールも使って受注伝票などを自動印刷していました。
5
6
 
6
7
  cssでは、ページの幅には72dpiで用紙幅に合わせたピクセル数を設定しておきます。
7
8
  画面表示の中で印刷したくないブロックはcssの@media print{} でdisplay: none;と指定しておきます。

5

誤記の修正

2016/03/07 11:19

投稿

chinyato
chinyato

スコア241

answer CHANGED
@@ -23,7 +23,7 @@
23
23
  印刷ダイアログの検索とボタン自動押しの処理は以下のようになります。
24
24
 
25
25
  (1) win32APIのEnumWindows()からコールバックでウインドウハンドルを取得。
26
- (2) タイトルが「印刷」という印刷ダイアログを見つけたらEnumChiledWindows()からコールバックで列挙し、GetWidnowText()でボタン類のテキストを取得。
26
+ (2) タイトルが「印刷」という印刷ダイアログを見つけたらEnumChildWindows()からコールバックで列挙し、GetWidnowText()でボタン類のテキストを取得。
27
27
  (3) 取得したテキストが「OK」や「印刷」や「印刷(&P)」だったらPostMessage()でBN_CLICKED をポスト。
28
28
  (4) タイマー処理で5~30秒で再度(1)から実行する。
29
29
 

4

内容の修正

2016/03/07 11:12

投稿

chinyato
chinyato

スコア241

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  cssでは、ページの幅には72dpiで用紙幅に合わせたピクセル数を設定しておきます。
7
7
  画面表示の中で印刷したくないブロックはcssの@media print{} でdisplay: none;と指定しておきます。
8
8
 
9
- PHPで一覧表をクリックしたらcssで印刷サイズに合わせたHTMLページを開き、onloadイベントでwindow.print()で印刷ダイアログを表示します。
9
+ PHPで作成した一覧表をクリックまたは一定間隔で自動更新て新規受注を発見したら印刷サイズに合わせたHTMLページを別ウインドウで開き、onloadイベントでwindow.print()で印刷ダイアログを表示します。
10
10
 
11
11
  ```HTML
12
12
  <body onload="window.print()">

3

誤記の修正

2016/03/07 11:00

投稿

chinyato
chinyato

スコア241

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  <body onload="window.print()">
13
13
 
14
14
  ```
15
- ブラウザからwidnows.print()を実行するとダイアログが出てきて手動で押さないといけません。
15
+ ブラウザからwidnows.print()を実行すると印刷ダイアログが出てきて手動で押さないといけません。
16
16
  セキュリティー上の問題で、ブラウザからそのままでは印刷出来ないようです。
17
17
  どこかのサイトを開いた途端に勝手に印刷されても困りますから。
18
18
 
@@ -25,6 +25,7 @@
25
25
  (1) win32APIのEnumWindows()からコールバックでウインドウハンドルを取得。
26
26
  (2) タイトルが「印刷」という印刷ダイアログを見つけたらEnumChiledWindows()からコールバックで列挙し、GetWidnowText()でボタン類のテキストを取得。
27
27
  (3) 取得したテキストが「OK」や「印刷」や「印刷(&P)」だったらPostMessage()でBN_CLICKED をポスト。
28
+ (4) タイマー処理で5~30秒で再度(1)から実行する。
28
29
 
29
30
  javascriptからWin32APIが操作出来るか判りませんが、Googleで検索するとそれらしいライブラリもあるようです。
30
31
 

2

誤記の修正

2016/03/07 10:57

投稿

chinyato
chinyato

スコア241

answer CHANGED
@@ -9,7 +9,7 @@
9
9
  PHPで一覧表をクリックしたらcssで印刷サイズに合わせたHTMLページを開き、onloadイベントでwindow.print()で印刷ダイアログを表示します。
10
10
 
11
11
  ```HTML
12
- <body onload="widnow.print()">
12
+ <body onload="window.print()">
13
13
 
14
14
  ```
15
15
  ブラウザからwidnows.print()を実行するとダイアログが出てきて手動で押さないといけません。

1

内容の追加

2016/03/07 10:55

投稿

chinyato
chinyato

スコア241

answer CHANGED
@@ -1,3 +1,6 @@
1
+ HTMLファイルは一度画面に表示しないと印刷は無理ではないでしょうか。
2
+ 印刷が終わったら自動で閉じるようにするか、同じウインドウを印刷用に使い回すのが良いかと思います。
3
+
1
4
  5年ぐらい前に24時間中無人でも稼働する受注管理システムを作った時にはツールも作って自動印刷にしていました。
2
5
 
3
6
  cssでは、ページの幅には72dpiで用紙幅に合わせたピクセル数を設定しておきます。