印刷ボタンを押すと JavaScript が実行されるようにリンクを設置し、JavaScript では、window
オブジェクトの print
メソッドを呼び出すようにします。印刷ボタンをクリックすると、Web ブラウザの印刷用ダイアログを表示されるようになります。ダイアログが表示されるだけで、実際に印刷を行うには、ユーザーが用紙サイズなどを選択して、ダイアログの実行ボタンを押す必要があります。
上のサンプルで使用しているアイコンは Tango Icon Gallery から頂きました。
<a href="#" onclick="window.print();return false;"> <img src="document-print.png" alt="プリンタのアイコン" title="このページを印刷する" /> このページを印刷する </a>
GMail での実装を見るとwindow.print();
の直前に document.body.offsetHeight;
と書かれていますがこの部分の意図は不明。何かのhack?
Web制作者にはCSSの画面上での見栄えだけでなく、印刷された時の見栄えも気にして欲しいですね。印刷するとサイドバーやAdSenseだけで1ページもって行かれたり、記事本文がページ末端でブチ切れて肝心の部分が見えなかったりと悲惨なページに遭遇することがあります。記事以外の広告やブログパーツ、最近のコメント一覧などのユーザの印刷物にとって不要な部分には display:none;
を指定した印刷用の CSS を用意するだけでとりあえずは十分です。自分のサイトをお持ちの方は一度、印刷プレビューでどのように見えるかチェックしてみるとよいかもしれません。
加えてヘッダの直後やテーブル組みの途中での改ページを制御すれば完璧でしょう。このサイトでもテーブルの途中で改ページされたりする記事があるので後で対応しようと思います。
寄せられたコメント (全 3 件中、最新 5 件まで表示しています)
ブログに掲載した画像のみを設置した印刷ボタンで印刷することは可能でしょうか?
いろいろ調べて、このページ(http://www.nextftp.com/laputa/imgprint.html)を参考に下記のようなソースを作ってみましたが、できません・・・。
<img src="掲載する画像のURL"><br><br>
<input type="button" onclick="newopen('印刷したい画像のURL')" value="↑ print ">
指定した任意のIFRAME内のページだけを印刷,というのは現状では無理ではないかと思います。
もしかすると何か方法があるのかもしれませんが私も知りません。
勉強中のものです。
TOPページにINFRAMEで表示している別ページのみ印刷できるように
したいのですが、勉強不足でわかりません。
ご教授頂けると助かります。
どうぞよろしくお願い致します。