ホームページの印刷対策

まめわざの印刷用ヘルプを用意しました

まめわざのヘルプページが印刷に対応しました。印刷ボタンから、章・節ごとの印刷が可能です。
ここでは、ヘルプページの印刷方法の紹介のほか、ホームページの印刷対応策について考えてみます。

まめわざのヘルプの印刷方法

ヘルプページの章・節の見出しに設置された「印刷用」リンクを押すと印刷ページに移動します。
印刷ページは章・節に分かれており、必要な章・節のみを印刷できます。
また、上部の選択欄で文字サイズを変更できます。

ホームページの印刷対応策

ホームページを閲覧するブラウザ(インターネットエクスプローラーなど)には印刷機能が備わっています。
画面で見るのに最適なホームページの印刷対策はどのようなものでしょうか。ここでは大局的な視点から、4つの方法にまとめます。

対応方法メリットデメリット
1.何もしない作業不要
設定次第で見たまま印刷ができる
印刷ページが読みづらい可能性がある
2.印刷用CSSを用意する比較的対応が楽画面上のページと印刷ページの差異が大き過ぎる場合がある
印刷ページの一部が読みづらい可能性がある
3.印刷用のページを用意する画面上のページと印刷ページの差異が少ない
印刷用に最適化できる
作成・管理が面倒
4.印刷用のPDFを用意する印刷用に最適化できる
ダウンロードしてオフラインで閲覧できる
作成・管理がとても面倒

選択肢1)印刷対策を何もしない

ホームページをはじめて印刷する、という方は今となっては少数のはずです。
ホームページを印刷する人のほとんどが、過去に印刷した経験を持ち、画面上のページと印刷したページとの差異に落胆したことがあるでしょう。
「ホームページが印刷向けではない」あるいは「印刷したホームページは画面上と違う」ことは広く認知されていると思われます。

一方で、スマホの普及により、ホームページを手に持ったり、外に持ち出すことが可能になりました。
「手に持って読みたい」「パソコンのないところで読みたい」という理由で印刷していた人に、スマホは印刷しない選択肢を与えたと言えます。

更に、昨今のブラウザは印刷時にページを自動で縮小するなど、最低限の印刷対応を自動で行います。

以上のような理由から、印刷用ページの需要がどれほどかを考え、「印刷対策をしない」という選択肢も検討しましょう。
「印刷対策をしない」ことで、設定によっては見たままで印刷することも可能になるという思わぬ副産物もあります。

選択肢2)印刷用CSSを用意する

ホームページのデザイン部分を司るCSSだけを、画面用・印刷用で使い分けることが可能です。代表的な方法としては次の2つがあります。

linkタグのmedia属性で外部スタイルシートを切替

<link rel="stylesheet" type="text/css" media="print" href="印刷用のスタイルシート.css" /> 

media queryで印刷用定義を付記

@media only print {
印刷用のスタイル定義
} 

画面で見るページと印刷用ページが大きく異ると、困惑させてしまうデメリットがあります。
「印刷プレビュー」ボタンを押さないと印刷前に内容確認ができないIEでは特にそうです。
印刷用のCSSをオフにすることも容易ではありません。
最も手軽な方法のため、開発者が採用しやすい方法ですが、逆に最も中途半端な対策という見方もできます。この対策だけをするのであれば、「何もしない」という選択肢や、後述するサーバーサイドでのCSSの切り替えも検討しましょう。

選択肢3)印刷用のページを用意する

HTMLとCSSの両方を印刷に最適化します。作成の手間がありますが、ホームページを印刷対応させたい場合はベストの選択肢と言えます。
CSSだけを印刷対応させる場合と違い、画面上のページと印刷したページの差異が少なく、印刷した方の要求を満たすことができます。

サーバーサイドスクリプトが使えるのであれば、引数によってCSSを切り替えることで、CSSを印刷対応させるだけにもかかわらず、印刷用ページを用意することも可能です。これにより、事前に中身を確認してから印刷が可能です。

印刷用のスタイルシートを用意する(選択肢2)

<link rel="stylesheet" type="text/css" media="print" href="印刷用のスタイルシート.css" /> 

印刷用のスタイルシートを切り替える(選択肢3)

PHPでのサンプル

<link rel="stylesheet" type="text/css" href="<?php echo $_GET["print"] ? "印刷用" : "画面用"; ?>のスタイルシート.css" /> 

まめわざでは今回、選択肢3を採用し、印刷用のページでのみ「文字サイズの変更」が容易にできるようにしました。

選択肢4)印刷用のPDFを用意する

PDFを作成することで、レイアウトや改ページの位置を完全に制御できます。
更にHTMLでは対応が難しいヘッダー・フッターも指定できます。
新しくページを作成するほどの手間がかかるため、印刷されやすいページ(アクセス・地図のページなど)だけ印刷用のPDFを用意するのがおすすめです。

印刷用CSSを作るときの注意点

ページのサイズと印刷サイズ

印刷サイズの調査
IE11EdgeChromeFirefoxSafari(OSX)
印刷用紙を超えるwidth指定時の挙動全体を縮小
@pageの指定××××

ページ内の要素(タグ)に印刷用紙を超えるwidthが指定されている場合、主要なブラウザは全体を縮小して印刷します。
これは、印刷すると読みづらくなる元凶の1つであり、印刷に最適化する場合は避けなければいけません。
最も簡単なのは、レイアウトとしてwidthを使わず、リキッドレイアウト(画面幅いっぱいに広がるレイアウト)で作成することです。
また、width指定が必要が画像タグは、mmでも設定できるので、少なくともA4の短辺である210mm(余白を考慮すれば150mmほど)を超えないサイズで指定しましょう。

一方、CSSで
@page { size: A5 landscape; }
のようにすると「A5の横」で印刷することを指定できます。
この指定は多くのブラウザで無視されたり(印刷設定が優先されたり)、印刷ページの指定変更によって変更されます。よって、@page{}に依存してページを構成するのは避けましょう。

背景・画像

背景・画像の印刷についての調査
IE11EdgeChromeFirefoxSafari(OSX)
背景色××××
背景画像××××
imgタグ

背景色・背景画像は多くのブラウザで無視されます。
ブラウザの設定によって背景色・背景画像を印刷することは可能です(特にChromeでは容易)。しかし、印刷する方に設定を求めるのは得策ではないので、「背景色・背景画像は使わない」を前提に作成するのがおすすめです。
一方、imgタグはいずれのブラウザでも印刷されるので、印刷対象の画像はimgタグで設置します。

画像の途中で改ページが入らないようにブラウザが自動で調整をしてくれます。
しかし、画像にfloatを入れたり、display:flexやtableで並列にしたりすると、この調整が効かなくなります。
画像はなるべく縦列配置で使用し、並列の際は画像のサイズをあまり大きくしない(改ページが入りづらくする)のがおすすめです。

文字

文字サイズの調査
IE11EdgeChromeFirefoxSafari(OSX)
文字色○(自動補正あり)
字体
CSSによる文字サイズの指定
ブラウザによる文字拡大×
印刷ページでの拡大

文字色・字体はいずれも指定が可能です。
モノクロ印刷を考えれば、色に意味を持たせることは避けたほうが良いでしょう(「赤字の箇所に注目」などはやめる)。
背景に暗い色を配置し、文字色を明るい色にしている場合、背景色がなって文字が読みづらくなるため、文字色が自動補正されます。それでも依然として読みづらい場合もあるため、「背景色・背景画像は使わない」を前提に、明るい文字の色は避けましょう。

CSSによる文字の拡大は有効です。
ブラウザの拡大機能は無視されますが、印刷設定ページで文字サイズを指定できます。しかし、設定を求めることは得策ではないので、アクセシビリティに配慮した文字サイズの調整機能を提供する場合は、CSS側で行うのがおすすめです。
まめわざの印刷用ヘルプでは、選んだ文字サイズをbodyタグに適用して全体の文字サイズを変えるJavascriptを設置しています。

改ページ

CSSでは、ある要素の前後に改ページを入れるpage-break-before・page-break-after、ある要素内での改ページを避けるために利用するpage-break-inside:avoidが用意されています。
しかし、印刷ページで文字を拡大することによって、改ページが意図しない場所に挿入されてしまいます。
改ページに頼らずにページを構成した方が汎用性が高まります。

まとめ

  • レイアウト用にwidthを使わない(印刷用紙を超えるwidthを指定しない)
  • 背景色・背景画像は使わなず、印刷させたい画像はimgタグで設置する
  • 画像(imgタグ)はなるべく縦列配置にする
  • imgタグには、印刷用紙を超えないようにmmでwidthを指定する(150mmなど)
  • 文字色に意味を持たせない(「赤字の箇所に注目」などはやめる)

スマホと印刷

「スマホからの直接印刷への対策は?」
それを考える前にスマホから直接印刷をする需要があるのか考えてみます。
まめわざでは、次の2点の理由から、スマホからの直接印刷はほとんど需要がなく、現在のところ対策は考えなくてもいいとではないかと考えています。

  • 図のように、「PCを持っていないけれどプリンターを持っているスマホユーザー」は極めて少ないと思われ、スマホユーザーでもPCから印刷するのが一般的と予想される
  • スマホから直接印刷する場合は、一般的にアプリのインストールが必要で面倒
2018/2/27