This is a directive wrapper for printed, Simple, fast, convenient, light.
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
}
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
}
Support two printing methods, direct printing page HTML, and printing URL
It's easy to use, Support Vue compatible browser version
<button v-print>Print the entire page</button>
HTML:
<div id="printMe" style="background:red;">
<p>葫芦娃,葫芦娃</p>
<p>一根藤上七朵花 </p>
<p>小小树藤是我家 啦啦啦啦 </p>
<p>叮当当咚咚当当 浇不大</p>
<p> 叮当当咚咚当当 是我家</p>
<p> 啦啦啦啦</p>
<p>...</p>
</div>
<button v-print="'#printMe'">Print local range</button>
Pass in a string type directly
id
: ID of local print range
HTML:
<button v-print="printObj">Print local range</button><div id="loading" v-show="printLoading"></div>
<div id="printMe" style="background:red;">
<p>葫芦娃,葫芦娃</p>
<p>一根藤上七朵花 </p>
<p>小小树藤是我家 啦啦啦啦 </p>
<p>叮当当咚咚当当 浇不大</p>
<p> 叮当当咚咚当当 是我家</p>
<p> 啦啦啦啦</p>
<p>...</p>
</div>
JavaScript:
export default {
data() {
return {
printLoading: true,
printObj: {
id: "printMe",
popTitle: 'good print',
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"/>',
beforeOpenCallback (vue) {
vue.printLoading = true
console.log('打开之前')
},
openCallback (vue) {
vue.printLoading = false
console.log('执行了打印')
},
closeCallback (vue) {
console.log('关闭了打印工具')
}
}
};
}
}
You can also pass in an object type Objcet
If you need to print the specified URL, you can use the following method: (Ensure that your URL is the same source policy)
HTML:
<button v-print="printObj">Print local range</button>
JavaScript:
export default {
data() {
return {
printObj: {
url: 'http://localhost:8080/'
beforeOpenCallback (vue) {
console.log('打开之前')
},
openCallback (vue) {
console.log('执行了打印')
},
closeCallback (vue) {
console.log('关闭了打印工具')
}
}
};
}
}
Support print preview, pass inpreview:true
, All printing methods are supported
HTML:
<button v-print="printObj">Print local range</button>
JavaScript:
export default {
data() {
return {
printObj: {
url: 'http://localhost:8080/'
preview: true,
previewTitle: 'Test Title', // The title of the preview window. The default is 打印预览
previewBeforeOpenCallback () {
console.log('正在加载预览窗口')
},
previewOpenCallback () {
console.log('已经加载完预览窗口')
},
beforeOpenCallback (vue) {
console.log('打开之前')
},
openCallback (vue) {
console.log('执行了打印')
},
closeCallback (vue) {
console.log('关闭了打印工具')
}
}
};
}
}
HTML:
<button v-print="printObj">Print local range</button><div id="loading" v-show="printLoading"></div>
<div id="printMe" style="background:red;">
<p>葫芦娃,葫芦娃</p>
<p>一根藤上七朵花 </p>
<p>小小树藤是我家 啦啦啦啦 </p>
<p>叮当当咚咚当当 浇不大</p>
<p> 叮当当咚咚当当 是我家</p>
<p> 啦啦啦啦</p>
<p>...</p>
</div>
JavaScript:
export default {
data() {
return {
printLoading: true,
printObj: {
id: "printMe",
preview: true,
previewTitle: 'print Title', // The title of the preview window. The default is 打印预览
popTitle: 'good print',
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('正在加载预览窗口')
},
previewOpenCallback () {
console.log('已经加载完预览窗口')
},
beforeOpenCallback (vue) {
vue.printLoading = true
console.log('打开之前')
},
openCallback (vue) {
vue.printLoading = false
console.log('执行了打印')
},
closeCallback (vue) {
console.log('关闭了打印工具')
}
}
};
}
}
Perhaps, your URL is obtained asynchronously. You can use the following method
HTML:
<button v-print="printObj">Print local range</button>
JavaScript:
export default {
data() {
return {
printObj: {
asyncUrl (reslove, vue) {
setTimeout(() => {
reslove('http://localhost:8080/')
}, 2000)
},
previewBeforeOpenCallback () {
console.log('正在加载预览窗口')
},
previewOpenCallback () {
console.log('已经加载完预览窗口')
},
beforeOpenCallback (vue) {
console.log('打开之前')
},
openCallback (vue) {
console.log('执行了打印')
},
closeCallback (vue) {
console.log('关闭了打印工具')
}
}
};
}
}
Finally, use reslove()
to return your URL
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 | <head></head> Add DOM nodes in the node, and separate multiple nodes with , (Print local range only) |
String | — | — |
extraCss | <link> New CSS style sheet , and separate multiple nodes with , (Print local range only) |
String | — | - |
popTitle | <title></title> 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()' | Function | - | - |
preview | Preview tool | Boolean | - | false |
previewTitle | Preview tool Title | String | - | '打印预览' |
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 |
- |
License: