当前位置:   article > 正文

vue2中Print.js的使用(pdf、html、json、image)超详细_npm install print-js

npm install print-js

概要

前端实现打印(包含pdf、html、json、image

安装

npm install print-js --save

JSON使用

在项目vue文件中引入

import printJS from "print-js";

点击按钮时调用插件方法

  1. <a-button
  2. class="not-print"
  3. @click="handlePrint"
  4. type="primary"
  5. style="margin-top: 20px"
  6. >打印</a-button
  7. >
  1. handlePrint(data = this.data) {
  2. console.log(data);
  3. printJS({
  4. // header: '表格标题',
  5. type: "json",
  6. properties: [
  7. { field: "age", displayName: "年龄" },
  8. { field: "name", displayName: "姓名" },
  9. { field: "address", displayName: "地址" },
  10. ],
  11. printable: data,
  12. // gridHeaderStyle: 'color: red; border: 2px solid #3971A5;',
  13. // gridStyle: 'border: 2px solid #3971A5;'
  14. header: `<h3 class="custom-h3">${this.title}</h3>`,
  15. style: ".custom-h3 { color: red;text-align:center}",
  16. });
  17. },

type:类型(可以是html pdf image json)

properties:配置json相关的内容(filed要跟json的字段必须一样!!!)

displayName:就是表格的表头信息

printable:需要打印的数据

header:可以在表格上方增加一个类似标题信息

style:配置样式

图片使用

 printJS({printable: 'images/print-01-highres.jpg', type: 'image', header: 'My image header'})

配置都是类似的,单张写图片路径,多张写成数组就可以了

Pdf使用

  1. <button type="button" onclick="printJS('docs/printjs.pdf')">
  2. Print PDF
  3. </button>

还可以为base64格式

  1. <button type="button" onclick="printJS({printable: base64, type: 'pdf', base64: true})">
  2. Print PDF with Message
  3. </button>

最实用的来了

        小编在工作需求中是遇到了打印各种混合的类型,比如说一个表格里面有图片,其他信息等。因为图片是后端返回来的链接,一开始用JSON格式打印出来是表格的形式,图片这一块就是个链接地址,并没有跟我们想的一样是图片

        后来参考Print.js的官网,研究了一下,发现以html形式打印,它会将你整个页面打印出来。这才是我们想要的格式

Print.js官网:

Print.js官网:https://printjs.crabbly.com/

  1. <button type="button" onclick="printJS({ printable: 'printJS-form', type: 'html', header: 'PrintJS - Form Element Selection' })">
  2. Print Form with Header
  3. </button>

注意此时的printable配置不再是跟JSON、image一样的数据了。这里需要的是一个唯一的元素id,

例如 

  1. <a-drawer title="Basic Drawer" placement="right" :closable="false" :visible="visibleD"
  2. :after-visible-change="afterVisibleChange" @close="onClose" width="50%" :maskClosable="true">
  3. <div id="basic">
  4. <div v-for="item in 4">
  5. <a-card hoverable style="width: 240px">
  6. <img slot="cover" alt="example" src="https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png" />
  7. <a-card-meta title="Europe Street beat">
  8. <template slot="description">
  9. www.instagram.com
  10. </template>
  11. </a-card-meta>
  12. </a-card>
  13. </div>
  14. </div>
  15. <div>
  16. <a-button @click="printSure">确定打印</a-button>
  17. </div>
  18. </a-drawer>

这里的basic就是我要打印的一个id,可以将需要打印的页面写在这个地方,循环遍历渲染数据,这样就很方便了。

demo示例

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/171312
推荐阅读
相关标签
  

闽ICP备14008679号