楽天KC e-NAVI のご請求明細を印刷しても強制改ページさせないブックマークレット

症状

楽天KC カードのオンラインサービス「e-NAVI」。

ここで、カードの請求明細を印刷することができるのだけれど。

いざ印刷してみると、たいした量じゃないのに3枚に分かれて印刷されてしまう。

#いやん!地球にキビシイ!!アンチ・エコ!!!

原因

該当ページの HTML ソースを確認すると、スタイルシートによって意図的に改ページさせてるみたい。

具体的には HTML ソースのこの部分。

<div class="pb"></div>

そしてクラス名 "pb" は、このページからリンクされているスタイルシートにこう定義されている。

div.pb {
	page-break-before: always;
}

というわけで、スタイルシートで改ページが指定されていたというわけです。

問い合わせ

e-NAVI を使い始めて一年以上。

ずっと気になっていたのだけど、一向に修正される様子もなく。

えいやっ!とばかり、問い合わせてみた。

問い合わせのポイントは2点。

  • 1ページで収まる量なら、1ページで印刷されるように修正してほしい。
  • 改ページする意図があるのなら教えてほしい。

回答

回答は翌朝に届いた。すばやい対応。

しかし、内容はある意味予想通りであった。

3枚に分けて印刷物が出てくるのは、弊社仕様となっております。

仕方がないので

仕方がないので DIY (Do It Yourself)。

ブックマークレットを作ってみた。

ブックマークレット

javascript:(function(){var d=document.getElementsByTagName('div');for(var i=d.length-1;i>=0;--i){if(d[i].className=='pb'){d[i].className='';}}})()

ブックマークレットとは何ぞや?については、各自調べていただくとして。

#……はてなダイアリーって、ブックマークレットをリンクの形で置いとけない……のかな?自分が無知なだけ??

[e-NAVI トップ]から、[ご請求明細] → [○月度] → [ご請求明細の印刷(画面印刷方式)] と進むと、別ウィンドウで表示される「ご利用代金請求明細書」。

このウィンドウに対して前述のブックマークレットを実行する *1 と……見た目はまったく変化しませんが、印刷してみると(印刷プレビューでも可)……

なんということでしょう!!

あの忌々しい改ページはどこへやら。ちゃんと1ページに収まって印刷されるではありませんか。
(内容量によっては次のページにまたぐことはあります。そりゃもちろん。)

参考

参考までに単行化前のソースも。

function () {
	var d = document.getElementsByTagName('div');
	for (var i = d.length - 1; i >= 0; --i)
	{
		if (d[i].className == 'pb')
		{
			d[i].className = '';
		}
	}
}

考察

なんで改ページされるのが「仕様」なのか?考えてみると……

できるだけ利用明細の表組みの途中で改ページされないように、見出しの手前で強制改ページしてるのかな?と。

表組みの途中で改ページすると、プリンタの設定によっては下の行が印刷可能域をはみ出したりして、数行抜けてしまう可能性があるから……かな??

まあ、あくまで推測でしかありませんが。

個人的には、PDF で(も)出力してもらうのがありがたいです。こういう明細書とかは。きれいに印刷したいので。

あまり、adobe のフォーマットに頼るのはどうかというご意見もありましょうが。

かくゆう私は

普段 Opera ブラウザを使用している私。

この件は、ブックマークレットではなく、ユーザー JavaScript で処理することにしましたとさ。

https 内のユーザー JavaScript。ご利用は自己責任で)

*1:ここでは、URLアドレス欄に入力する、または事前にブックマークしておいたブックマークレットを選択することなどを指します