Vue印刷機能を実装する2つの方法の概要

Vue印刷機能を実装する2つの方法の概要

方法1: npm経由でプラグインをインストールする

1. npm install vue-print-nb --save をインストールします。

2. インストール後、main.jsファイルにインポートします。

import Print from 'vue-print-nb' Vue.use(Print); //登録

3. これで使えるようになりました

<div id="printTest">

  <p>月が山々を照らしている</p>

    <p>そよ風は川から吹いてくる</p>

</div>

<button v-print="'#printTest'">印刷</button>

4. リンク アドレス経由で印刷するには: window.location.href = airway_bill; airway_bill はリンク アドレスです。

5. コンテンツが完全に印刷されない場合は、印刷操作中に「詳細設定」をクリックし、ズームを設定します。

2番目の方法:プラグインをローカルに手動でダウンロードする

プラグインアドレス:

https://github.com/xyl66/vuePlugs_printjs

1. srcの下に新しいフォルダplugsを作成し、ダウンロードしたprint.jsをplugsフォルダに入れて、次の操作を行います。

'@/plugs/print' から Print をインポートします
Vue.use(Print) // <template> を登録する
  <セクションref="印刷">
    コンテンツを印刷する <div class="no-print">印刷しない</div>
  </セクション>
</テンプレート>
this.$print(this.$refs.print) // 使用法

2. 注意: DOM ノードを取得するには、ref を使用する必要があります。id または class で直接取得すると、webpack のパッケージ化とデプロイ後に出力されるコンテンツは空になります。

3. 印刷しない領域を指定する

方法1. 非印刷スタイルクラスを追加する

<div class="no-print">印刷しないでください</div>

方法2. カスタムクラス名

<div class="do-not-print-me-xxx">印刷しないでください</div>this.$print(this.$refs.print,{'no-print':'.do-not-print-me-xxx'}) // 使用

バッチ印刷

ここでのバッチ印刷は、実際には純粋な js 記述を使用しているので、コードに直接進みましょう。

<テンプレート>
    <div>
        <ul class="print-ul">
            <li v-for="(item,index) of tableData" :key="index" 
                :id="'printDiv' + インデックス" style="page-break-after:always;">
                <div>
                    <p>{{item.date}}</p>
                    <p>{{アイテム名}}</p>
                    <p>{{item.province}}</p>
                    <p>{{item.city}}</p>
                    <p>{{item.address}}</p>
                    <p>{{item.zip}}</p>
                </div>
            </li>
        </ul>
        <div @click="handlePrint">印刷</div>
    </div>
</テンプレート>

<スクリプト>
    エクスポートデフォルト{
        データ() {
            戻る {
                テーブルデータ: [{
                    日付: '2016-05-03'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }, {
                    日付: '2016-05-02'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }, {
                    日付: '2016-05-04'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }, {
                    日付: '2016-05-01'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }, {
                    日付: '2016-05-08'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }, {
                    日付: '2016-05-06'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }, {
                    日付: '2016-05-07'、
                    名前: 王小湖、
                    省: '上海'、
                    都市: 普陀区、
                    住所: '上海市普陀区金沙江路1518号'、
                    郵便番号: 200333
                }]
            }
        },
        メソッド: {
            ハンドルプリント() {
                var newWin = window.open(""); // 新しい空のウィンドウを開く for (var i = 0; i < this.tableData.length; i++) {
                    var imageToPrint = document.getElementById("printDiv" + i); // 印刷するコンテンツを取得します newWin.document.write(imageToPrint.outerHTML); // 印刷するコンテンツを新しいウィンドウに追加します}
                const styleSheet = `<style>li{list-style:none}</style>`; 
                newWin.document.head.innerHTML = styleSheet; //印刷コンテンツにスタイルを追加します newWin.document.close(); //IEブラウザで使用する場合はこの文を追加する必要があります newWin.focus(); //IEブラウザで使用する場合はこの文を追加する必要があります setTimeout(function() {
                    newWin.print(); //印刷 newWin.close(); //ウィンドウを閉じる }, 100);
            }
        }
    }
</スクリプト>

<スタイル>
    .print-ul {
        幅: 600ピクセル;
        リストスタイル: なし;
        境界線: 1px 実線 #e8e8e8;
    }
</スタイル>

要約する

これで、vue 印刷機能の実装に関するこの記事は終了です。より関連性の高い vue 印刷機能のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueで印刷機能を実装する2つの方法
  • vue で vue-print.js を使用して複数ページの印刷を実現する
  • vue 印刷プラグイン vue-print-nb の実装コード
  • vue で vue-print-nb を使用してページを印刷する方法

<<:  Apache FlinkCEP でタイムアウトステータス監視を実装するための詳細な手順

>>:  MySQL サービスを完全に削除する方法 (レジストリをクリーンアップする)

推薦する

LinuxのCentos7でmysql5.7.29を構築する詳細なプロセス

1. MySQLをダウンロードする1.1 ダウンロードアドレスhttps://downloads.m...

Vue+webrtc (Tencent Cloud) ライブブロードキャスト機能の実装実践

目次1. 生放送効果2. ライブストリーミングを開始する手順2.1 Tencent Web(高速ライ...

Deepin で virtualenv をインストールして使用するチュートリアル

virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...

LinuxでRPMを使用してmysql5.7.17をインストールする

LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...

Nginx は https ウェブサイト構成コード例を実装します

https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...

MySQL でスロークエリログを有効にする方法

1.1 はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメ...

JDBCデータベースリンクと関連メソッドのカプセル化の詳細な説明

JDBCデータベースリンクと関連メソッドのカプセル化の詳細な説明MySQL データベースを使用して、...

ウェブページ制作でウェブフォントファイルにベクターアイコンを追加する方法

ご存知のとおり、コンピューターには 2 種類の画像があり、1 つはビットマップ、もう 1 つはベクタ...

Docker mongoDB 4.2.1 をインストールし、Springboot ログを収集する詳細な手順

1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...

MySQL マスタースレーブ遅延問題の解決方法

今日は、マスタースレーブ遅延が発生する理由とその対処方法について説明します。しっかり座って出発の準備...

Vue で棒グラフを使用し、自分で設定を変更する方法

1. HTMLファイルでechartをインポートする <!-- echarts をインポート ...

InnoDB エンジンのパフォーマンスを最適化するための my.cnf パラメータ構成

私はインターネット上で数え切れないほどの my.cnf 構成を読みましたが、言及されている構成のほと...

IEではボタンが両側に伸びる

ボタン (input, button) を記述すると、IE では次のようになります。単語数が増えると...

Dockerがコンテナを作成した後にホスト名を変更する詳細なプロセス

後悔を癒す薬は世の中にある、考えてみる気さえあれば!コンテナを再作成する必要はもうありません。 m2...