特定範囲のみをプリントできるようにしたい、という依頼がありましたので調べてみました。
▼サンプル
「個別印刷」ボタンをクリックすると、クリックしたエリアをプリント。
「一括印刷」ボタンをクリックするとareaA、areaBの両方をプリントします。
See the Pen print by miya (@tam_miya) on CodePen.
■JavaScript
※jQueryを使用しています。
$(function(){
//個別印刷ボタンをクリックした時
$('.print-btn').on('click', function(){
//プリントしたいエリアの取得
var printPage = $(this).closest('.print-page').html();
//プリント用の要素「#print」を作成
$('body').append('<div id="print"></div>');
$('#print').append(printPage);
//「#print」以外の要素に非表示用のclass「print-off」を指定
$('body > :not(#print)').addClass('print-off');
window.print();
//window.print()の実行後、作成した「#print」と、非表示用のclass「print-off」を削除
$('#print').remove();
$('.print-off').removeClass('print-off');
});
//一括印刷ボタンをクリックした時
$('.print-all').on('click', function(){
window.print();
});
});
プリントしたいエリアのみのHTMLをJavaScriptで作成し、プリント実行後に元に戻しています。
処理自体は単純ですが、とても勉強になりました!
■参考サイト
【jQuery】指定した個所のみ印刷する | 忘却の彼方 | 560Days
以下のようなプラグインを使用する方法もあるようですので、参考にどうぞ。
指定範囲を簡単に印刷するjQueryプラグイン jPrintArea.js が便利な件
印刷画面不要!指定範囲のみ印刷できるjQueryプラグイン「jPrintArea.js」