miya

特定エリアのみをプリントしたい

特定範囲のみをプリントできるようにしたい、という依頼がありましたので調べてみました。

▼サンプル
「個別印刷」ボタンをクリックすると、クリックしたエリアをプリント。
「一括印刷」ボタンをクリックすると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」

新しいウェブ体験を作ろう TAMのPWA開発
お問い合わせはこちら