(choco/印刷対応案 より移動)
PukiWiki 1.3.xでの印刷対策についての試案
印刷時の対象要素を細かく制御できるようにするために、PukiWikiのページの構成要素にそれぞれ名前をつける。
例えばこのPukiWiki.orgのスキンであれば、
のように分割できる。
具体的にはskinのファイルのそれぞれの要素を囲むように
<div class="header_logo"> ... </div>
をいれていく。
body_subとbody_mainについてだけは特別で、tdのクラスとして 指定する必要がある(body_subのtdはwidth=120としてあるので、 tdの中身を印刷しないようにしても白い空間になってしまうため、 tdごと印刷対象から外す必要がある)。
skinでCSSを指定している場所の、
<link rel="stylesheet" href="skin/default.ja.css" type="text/css" media="screen,print" charset="shift_jis">
の次の行に
<link rel="stylesheet" href="skin/default.print.css" type="text/css" media="print" charset="shift_jis">
を追加する。
こんな感じで、印刷したくない要素を指定するだけのCSSになる。
div.header_logo {display: none;} div.header_url {display: none;} div.header_menu {display: none;} td.body_sub {display: none;} div.footer_attach {display: none;} ...
# 個人的には今のスキンだとアンカー文字列が印刷時に判別できないので
a:link {text-decoration: underline;} a:visited {text-decoration: underline;}
# も追加しています。
私が印刷する時は、極端な話、
以下の内容はちょっと古いです
普段の見た目は変わりませんが、印刷した時だけ、Menuなど本体以外の部分の出力が抑制されます。
なんでこんなものをアップしてるのかというのは dev:BugTrack/110 をご覧ください。
質問箱でこの話に答えたものですが、通常の画面構成を印刷する場合と本文のみを印刷する場合の両方に対応したいときは alternate stylesheet の機能を使ってスタイルシートを切り替えてから印刷するしかないように思います。
ただ、そうした場合、IE など標準でスタイルシートを切り替える機能を持っていないブラウザでの扱いが面倒になります。
IE用プラグイン「ス切リボ」を組み込めば、IE5/6でもスタイルシートを切り換えることが可能です。
そうなんですけど、共有スペースとしての Wiki を活用するためにわざわざインストールしてもらわなきゃいけないってとこがネックじゃないかと。新たに参加する人が増えるたびに「やってもらわないといけない」わけで。だから正しくは「標準でスタイルシートを切り替える機能を持っていないブラウザへの対応が面倒」ってことですね。実際、自分は最初 alternate stylesheet でやってたんですけど、ここに書かれている方法に変更しました。(自分は Mozilla なんで関係ないんですが。)
スキンそのものを切り替える機能があれば [印刷バージョン] ボタンをつけて全然違うスキンにしてしまうという方法もあるのですが。
ところで、とてもいい内容なので、もっと分かりやすいページ名に変更しませんか?(^^;
「印刷用CSS」とかが分かりやすいですかね。
書いたら、印刷したい。(人間の本能だと思う。)