A5かA4用紙の縦に印刷する想定。HTML内で任意の月を指定し、JavaScriptが自動的に月末まで、曜日を付けて1日ごとの行を作ります。ブラウザからPDF出力したサンプル(33KB)。これを印刷したのが上の画像です。今日はとりあえず1ヶ月分だけ、明日は複数月を1回で作るようにします。
以下ソース。HTML、CSS、JavaScriptを適当なローカルフォルダに置き、ブラウザでHTMLを開きます。動作はWindows7 32bit + Chorme43、Firefox40で確認しました。年・月の指定は暫定的にmetaタグで。どちらも省略でき、デフォルトは現在時刻の年・月です。
JavaScriptで当該月の日数を得るところで、PostgreSQLでよくやるように「翌月1日の前日の日付」を出すのが結構面倒でした。まだ不十分だったり、もっといい方法があるかもしれません。
仕上りサイズは、CSSでA5に指定しました。なぜか縦をぴったり210mm(余白込み)にすると1頁に収まらなかったので、微妙に小さく調整。A4等にする場合は印刷時に拡大して下さい。あとフォントは、上のソースではCambriaにしています。
↓ Chromeで全体を表示した様子。右・下の薄いグレーはA5から外の部分で、カレンダーがはみ出ないよう確認するため。下余白がぎりぎりで、31日の月だとはみ出そうに思えますが、実際印刷すると余裕があります(2枚目の印刷プレビューの画像を参照)
↓ Firefoxでの表示と印刷プレビュー。表示の縦サイズは、Chromeと比べれば少し印刷時に近いです。印刷プレビューは罫線が間引かれますが、実際にPDF出力したら正常でした。
明日、複数月版を作ったら今日のは不要になりますが、とりあえず作業経過の記録まで。