VUE中:printJS使用,附带JsBarcode条码生成器,网页转图片html2canvas,base64上传保存处理,二维码生成库qrcode,二维码/条码扫描识别,domtoimage

官网
JsBarcode官网
JsBarcode的GitHub-WIKI
我的项目需求只需要将配置好的HTML与CSS样式传入进去就好,较为简单。

九个月后html2canvas出现线上问题 设置了跨域但依然出现跨域问题,尝试解决失败,换用domtoimage

安装: npm install print-js --save
使用: import print from 'print-js'

printJS函数封装:

print (ref, title, style, type, jsonData, borderHeadStyle, gridStyle, css) {
   
         printJS({
   
            printable: ref,// 要打印内容的id
            type: type || 'html', // 可以打印html,img详细的可以在官方文档
            style: style || '@page{size:auto;margin: 0cm 1cm 0cm 1cm;}', // 打印的内容是没有css样式的,此处需要string类型的css样式
            header: title || null,https://printjs.crabbly.com/中查询
            headerStyle: 'font-size:6px;font-weight:600;text-align:center;padding:15px 0 10px 0;', // 标题设置
            properties: jsonData || [], // json数据元
            gridHeaderStyle: borderHeadStyle || 'font-size:6px;font-weight:400;height:40px;line-height:40px;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', // json格式表头样式
            gridStyle: gridStyle || 'font-size:1px;font-weight:200;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', // json各式表哥央视
            scanStyles: false, // 不适用默认样式
           repeatTableHeader: false, // 打印json表头只显示在第一页
            css: css || null // css url
        });
     },

但在实际开发过程中遇到了:直接传入DOM节点 CSS样式全部失效的问题,由于显示内容多,自己手写JS会非常麻烦。故引入第二个库,网页转图片:
安装:npm install --save html2canvas
使用:import html2canvas from 'html2canvas';
使用代码:

html2canvas(this.$refs.printContent).then(canvas => {
   
            let dataURL = canvas.toDataURL('image/png');
            this.imgUrl = dataURL;
            printJS({
   
                printable: dataURL,
                type: 'image'
            });
        });

若打印的图片不清晰请戳这里
或这里
🔺🔺html2canvas只适用于页面截图,若是需要将元素隐藏再父元素中点击按钮打印而不是跳转新页面的话,隐藏元素会导致不能转换图片
🔺🔺且不支持部分CSS样式(例如float浮动样式)。当元素内容打印不出来时注意在这里插入图片描述也可以选择生成二维码而不是条码:qrcode下载源:参考案例在项目文件夹内执行:npm install --save qrcode全局安装:npm install -g qrcode在需要的页面引入 import QRcode from "qrcode";使用:

//canvas是HTML的绘图标签,省略返回新绘图
//sample text:输入你需要转换为二维码的字符串,可以是网址链接
//function在执行完成时的回调函数
QRCode.toCanvas(canvas, 'sample text', function (error) {
   
  if (error) console.error(error)
  console.log('success!');
})

开发代码实例:


        async createImg(){
   
            await this.$nextTick();// this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行
            this.imgUrl = await this.makeImg();
            printJS({
   
                printable: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 使用 pdf-lib 和 html2canvas 生成 PDF 文件需要进行以下几个步骤: 1. 安装依赖 在项目使用 npm 或者 yarn 安装 pdf-lib 和 html2canvas 依赖。 2. 引入依赖 在需要使用Vue 组件引入 pdf-lib 和 html2canvas 依赖。 ```javascript import { PDFDocument, StandardFonts } from 'pdf-lib'; import html2canvas from 'html2canvas'; ``` 3. 创建 PDF 文档对象 使用 pdf-lib 的 PDFDocument 类来创建 PDF 文档对象,并添加需要生成 PDF 的内容。 ```javascript const pdfDoc = await PDFDocument.create(); const page = pdfDoc.addPage([595.28, 841.89]); // 设置页面大小 const font = await pdfDoc.embedFont(StandardFonts.HelveticaBold); // 在页面上添加文本内容 page.drawText('Hello, PDF!', { x: 50, y: 700, size: 24, font: font, color: rgb(0, 0, 0), }); ``` 4. 将 HTML 元素换为 Canvas 使用 html2canvas 的 toCanvas 方法将需要生成 PDF 的 HTML 元素换为 Canvas 对象。 ```javascript const canvas = await html2canvas(document.getElementById('pdf-content')); ``` 5. 将 Canvas 对象换为 PNG 图片 将上一步得到的 Canvas 对象换为 PNG 格式的图片。 ```javascript const pngUrl = canvas.toDataURL('image/png'); ``` 6. 添加 PNG 图片到 PDF 文档 将上一步得到的 PNG 图片添加到 PDF 文档对象。 ```javascript const pngImage = await pdfDoc.embedPng(pngUrl); page.drawImage(pngImage, { x: 50, y: 450, width: 500, height: 250, }); ``` 7. 导出 PDF 文件 使用 pdf-lib 的 save 方法将生成的 PDF 文件导出。 ```javascript const pdfBytes = await pdfDoc.save(); const blob = new Blob([pdfBytes], { type: 'application/pdf' }); saveAs(blob, 'example.pdf'); // 将 PDF 文件保存到本地 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳动的世界线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值