vue-print如何實(shí)現(xiàn)打印功能
更新時(shí)間:2025年04月24日 10:52:22 作者:小泡泡c
這篇文章主要介紹了vue-print如何實(shí)現(xiàn)打印功能問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
一、安裝
1. Vue2
npm install vue-print-nb --save
import Print from 'vue-print-nb'
// Global instruction
Vue.use(Print);
//or
// Local instruction
import print from 'vue-print-nb'
directives: {
print
}2. Vue3
npm install vue3-print-nb --save
// Global instruction
import { createApp } from 'vue'
import App from './App.vue'
import print from 'vue3-print-nb'
const app = createApp(App)
app.use(print)
app.mount('#app')
//or
// Local instruction
import print from 'vue3-print-nb'
directives: {
print
}二、基本使用
1. 直接打印頁(yè)面HTML
1)方法
- ① 給要打印的部分設(shè)置一個(gè)
id - ② 在打印按鈕中添加
v-print="'#id名'"
2)代碼(以表格為例)
<template>
<div>
<a-button v-print="'#printMe'">打印</a-button>
<a-table :columns="columns" :data-source="data" bordered id="printMe">
</a-table>
</div>
</template>
<script>
const columns = [
{
title: 'Name',
dataIndex: 'name',
},
{
title: 'Cash Assets',
className: 'column-money',
dataIndex: 'money',
},
{
title: 'Address',
dataIndex: 'address',
},
];
const data = [
{
key: '1',
name: 'John Brown',
money: '¥300,000.00',
address: 'New York No. 1 Lake Park',
},
{
key: '2',
name: 'Jim Green',
money: '¥1,256,000.00',
address: 'London No. 1 Lake Park',
},
{
key: '3',
name: 'Joe Black',
money: '¥120,000.00',
address: 'Sidney No. 1 Lake Park',
},
];
export default {
data() {
return {
data,
columns,
};
},
};
</script>2. 個(gè)性化設(shè)置
1)方法
打印按鈕的 v-print 綁定一個(gè)對(duì)象
2)代碼
<template>
<div class="box">
<a-table :columns="columns" :data-source="data" bordered id="printMe"></a-table>
<a-button v-print="printContent" class="btn no-print">打印</a-button>
</div>
</template>
<script>
const columns = [
{
title: 'Name',
dataIndex: 'name',
},
{
title: 'Cash Assets',
className: 'column-money',
dataIndex: 'money',
},
{
title: 'Address',
dataIndex: 'address',
},
];
const data = [
{
key: '1',
name: 'John Brown',
money: '¥300,000.00',
address: 'New York No. 1 Lake Park',
},
{
key: '2',
name: 'Jim Green',
money: '¥1,256,000.00',
address: 'London No. 1 Lake Park',
},
{
key: '3',
name: 'Joe Black',
money: '¥120,000.00',
address: 'Sidney No. 1 Lake Park',
},
];
export default {
data() {
return {
data,
columns,
tableHead: '測(cè)試表格',
printContent: {
id: "printMe", // 打印的區(qū)域
preview: false, // 預(yù)覽工具是否啟用
previewTitle: '這是預(yù)覽標(biāo)題', // 預(yù)覽頁(yè)面的標(biāo)題
popTitle: '', // 打印頁(yè)面的頁(yè)眉
extraCss: "https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
previewBeforeOpenCallback() {
console.log('正在加載預(yù)覽窗口')
},
previewOpenCallback() {
console.log('已經(jīng)加載完預(yù)覽窗口')
},
beforeOpenCallback(vue) {
vue.printLoading = true
console.log('打開之前')
},
openCallback(vue) {
vue.printLoading = false
console.log('執(zhí)行了打印')
},
closeCallback() {
console.log('關(guān)閉了打印工具')
},
clickMounted(vue){
console.log('點(diǎn)擊了打印按鈕');
vue.printContent.popTitle = vue.tableHead // 動(dòng)態(tài)設(shè)置頁(yè)眉
}
}
}
}
};
</script>3)效果展示
① 預(yù)覽工具

3. 打印URL
1)方法
- ① 給 打印按鈕的
v-print綁定一個(gè)對(duì)象 - ② 對(duì)象添加
url屬性
2)代碼
<template>
<div class="box">
<a-table :columns="columns" :data-source="data" bordered></a-table>
<a-button v-print="printContent" class="btn no-print" >打印</a-button>
</div>
</template>
<script>
const columns = [
{
title: 'Name',
dataIndex: 'name',
},
{
title: 'Cash Assets',
className: 'column-money',
dataIndex: 'money',
},
{
title: 'Address',
dataIndex: 'address',
},
];
const data = [
{
key: '1',
name: 'John Brown',
money: '¥300,000.00',
address: 'New York No. 1 Lake Park',
},
{
key: '2',
name: 'Jim Green',
money: '¥1,256,000.00',
address: 'London No. 1 Lake Park',
},
{
key: '3',
name: 'Joe Black',
money: '¥120,000.00',
address: 'Sidney No. 1 Lake Park',
},
];
export default {
data() {
return {
data,
columns,
tableHead: '測(cè)試表格',
printContent: {
url: 'http://localhost:8081/', // 打印的url
preview: false, // 預(yù)覽工具是否啟用
previewTitle: '這是預(yù)覽標(biāo)題',
popTitle: '', // 打印頁(yè)面的頁(yè)眉
extraCss: "https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
}
}
},
};
</script>三、API
| Parame | Explain | Type | OptionalValue | DefaultValue | |
|---|---|---|---|---|---|
| id | Range print ID, required value | String | – | – | |
| standard | Document type (Print local range only) | String | html5/loose/strict | html5 | |
| extraHead | Add DOM nodes in the node, and separate multiple nodes with , (Print local range only) | String | – | – | |
| extraCss | New CSS style sheet , and separate multiple nodes with ,(Print local range only) | String | – | – | |
| popTitle | Content of label (Print local range only) | String | – | – | |
| openCallback | Call the successful callback function of the printing tool | Function | Returns the instance of Vue called at that time | – | |
| closeCallback | Close the callback function of printing tool success | Function | Returns the instance of Vue called at that time | – | |
| beforeOpenCallback | Callback function before calling printing tool | Function | Returns the instance of Vue called at that time | – | |
| url | Print the specified URL. (It is not allowed to set the ID at the same time) | String | – | – | |
| asyncUrl | Return URL through ‘resolve()’ and Vue | Function | – | – | |
| preview | Preview tool | Boolean | – | false | |
| previewTitle | Preview tool Title | String | – | ‘打印預(yù)覽’ | |
| previewPrintBtnLabel | The name of the preview tool button | String | – | ‘打印’ | |
| zIndex | CSS of preview tool: z-index | String,Number | – | 20002 | |
| previewBeforeOpenCallback | Callback function before starting preview tool | Function | Returns the instance of Vue | – | |
| previewOpenCallback | Callback function after fully opening preview tool | Function | Returns the instance of Vue | – | |
| clickMounted | Click the callback function of the print button | Function | Returns the instance of Vue | – |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
從零開始在vue-cli4配置自適應(yīng)vw布局的實(shí)現(xiàn)
這篇文章主要介紹了從零開始在vue-cli4配置自適應(yīng)vw布局,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
vue 使用localstorage實(shí)現(xiàn)面包屑的操作
這篇文章主要介紹了vue 使用localstorage實(shí)現(xiàn)面包屑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
在Vue項(xiàng)目中優(yōu)化字體文件的加載和緩存的常用方法
在現(xiàn)代 Web 開發(fā)中,字體文件通常是頁(yè)面加載時(shí)間的重要因素之一,特別是在字體文件較大或網(wǎng)絡(luò)環(huán)境不佳的情況下,用戶體驗(yàn)可能會(huì)受到影響,本文將詳細(xì)探討如何在 Vue.js 項(xiàng)目中優(yōu)化字體文件的加載和緩存,以提高頁(yè)面性能,需要的朋友可以參考下2024-09-09
VUE3項(xiàng)目VITE打包優(yōu)化的實(shí)現(xiàn)
本文主要介紹了VUE3項(xiàng)目VITE打包優(yōu)化的實(shí)現(xiàn),包括使用視圖分析工具、路由懶加載、第三方庫(kù)CDN引入、gzip壓縮、按需引入第三方庫(kù)、TreeShaking、剔除console和debugger、分包策略和圖片壓縮等,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
使用vue中的混入mixin優(yōu)化表單驗(yàn)證插件問題
這篇文章主要介紹了使用vue中的混入mixin優(yōu)化表單驗(yàn)證插件,本文是小編給大家總結(jié)的一些表單插件的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
vue使用video插件vue-video-player詳解
這篇文章主要為大家詳細(xì)介紹了vue使用video插件vue-video-player,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10

