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 ホスト名設定の詳細な紹介

目次1. Linuxホスト名を設定するクライアントホストを構成するサーバーホストを構成する2. ホス...

Vueはアップロードコンポーネントを実装します

目次1. はじめに2. アイデアファイルをアップロードする2つの方法3. ライフサイクル4. コード...

HTMLページ内の検索機能を完了する

最近、たくさんの人に改変してもらったフレームワークに取り組んでいます。毎日コードを見ていると目が回り...

Nginx リバース プロキシを使用して go-fastdfs を実行する例

背景go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプ...

Linux FTP匿名アップロードとダウンロードが自動的に開始される問題を解決する

勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...

Dockerコンテナのログ処理の詳細な説明

Docker には多くのログ プラグインがあります。デフォルトでは json-file を使用します...

Vue 学習 - VueRouter ルーティングの基礎

目次1. Vueルーター1. 説明2. 選択したルートのレンダリング: 3. 基本的な動作原理2. ...

a href=# と a href=javascript:void(0) の違いの詳細な説明

a href="#"> リンクをクリックすると、ページがページ上部までスク...

SSHを使用してDockerサーバーに接続する方法

初めて docker に触れたときは本当に戸惑いました。初心者向けのチュートリアルを長い間読みました...

js データ型とその判定方法の例

js データ型基本データ型: 数値、文字列、ブール値、未定義、null、シンボル、参照データ型: オ...

js でオブジェクトとオブジェクト メソッドを作成するいくつかの方法の詳細な説明

この記事は、JS レッドブックの第 8 章に記載されているオブジェクトに関する 2 番目の記事です。...

VMware仮想マシンにLinux(CentOS)をインストールするための詳細な構成手順

CentOS7をダウンロード私がダウンロードしたイメージはCentOS-7-x86_64-DVD-1...

JavaScript Sandboxについての簡単な説明

序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...

WindowsシステムでPhPStudy MySQLの起動に失敗する問題を解決する

エラーを報告するApache\Nginx サービスは正常に起動しましたが、MySQL は起動に失敗し...

phpstudy から Linux への MySQL の移行に関するチュートリアル

プロジェクトの目的元のWindows環境でphpstudyを使用して構築されたMySQL 5.5.5...