vue3+ts+element plus开发的web项目,想针对客户的table查询结果导出打印需求,实现前端打印功能,请问有什么比较好的插件或者实现代码思路推荐嘛?
之前.net mvc开发的web项目,报表是使用rdlc插件来实现的。现在这种前后端分离,纯vue开发的前端有无好的实现插件或者思路呢。
不考虑表格分页可以使用:vue-print-nb,在线DEMO,
常规就是生成图片后然后转pdf打印:截图可以使用插件html2canvas,dom-to-image
html2canvas截图
import html2canvas from "html2canvas";const dom = document.getElementById("");html2canvas(dom, { width: '', //宽度 height: '', //高度 backgroundColor: "#fff", //背景色,设置null为透明 allowTaint: false, //是否允许跨域图片 useCORS: true, //是否尝试使用CORS从服务器加载图像 scale: 2, //渲染的比例,默认为浏览器设备像素比例 logging: false //启用日志进行调试 foreignObjectrendering: false, //如果浏览器支持,使用ForeignObject渲染} as any).then((canvas) => { let base64 = canvas.toDataURL("image/png"); console.log("====base64===", base64);});
dom-to-image截图
var node = document.getElementById("my-node");domtoimage .toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendChild(img); }) .catch(function (error) { console.error("oops, something went wrong!", error); });
jsdpf生成pdf
// 创建一个新的 jsPDF 实例var doc = new jsPDF();var imgData = 'data:image/jpeg;base64,/veryLongBase64Encode....';doc.setFontSize(40);doc.addImage(imgData, 'JPEG', 15, 40, 180, 160);doc.text(30, 20, 'Hello world!');doc.save('example.pdf');
分页可以考虑使用, puppeteer写一个导出脚本,一个简单的Node.js应用,参考案例:Puppeteer截图demo
或者可以使用前后对结合:使用wkhtmltopdf
方案很多,总有适合你的
A4纸的尺寸的图像的像素是794x1123
基于 html2canvas 和 jspdf 的前端 pdf 打印下载方案(代码解析)
在Vue3+TypeScript+Element Plus的项目中,实现前端导出打印功能,你可以考虑使用以下几个插件或方法:
vue-print-nb
是一个基于Vue的前端打印插件,支持Vue3和TypeScript。它使用简单,并且可以与Element Plus很好地配合使用。你可以通过安装和引入该插件,然后在需要打印的组件中使用相应的指令来实现打印功能。
安装命令:
npm install vue-print-nb
使用示例:
<template> <div> <el-table :data="tableData"> <!-- 表格内容 --> </el-table> <button v-print="'#print-area'">打印</button> </div></template><script lang="ts">import { defineComponent } from 'vue';import VuePrintNB from 'vue-print-nb';export default defineComponent({ components: { VuePrintNB, }, data() { return { tableData: [/* 数据内容 */], }; },});</script><style scoped>#print-area { /* 打印区域样式 */}</style>
jsPDF
是一个用于生成PDF文件的JavaScript库,而html2canvas
可以将HTML元素转换为Canvas,从而可以进一步转换为图片或PDF。你可以结合这两个库来实现将表格数据导出为PDF并打印的功能。
安装命令:
npm install jspdf html2canvas
使用示例:
<template> <div> <el-table :data="tableData" ref="printTable"> <!-- 表格内容 --> </el-table> <button @click="exportToPdf">导出PDF</button> </div></template><script lang="ts">import { defineComponent, ref } from 'vue';import jsPDF from 'jspdf';import html2canvas from 'html2canvas';export default defineComponent({ setup() { const tableData = ref([/* 数据内容 */]); const printTable = ref(null); const exportToPdf = async () => { const element = printTable.value.$el as HTMLElement; const canvas = await html2canvas(element); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF(); const imgProps = pdf.getImageProperties(imgData); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save('table.pdf'); }; return { tableData, printTable, exportToPdf, }; },});</script>
你也可以选择使用浏览器的默认打印功能来实现打印需求。这种方法不需要额外的插件,但可能需要你手动处理一些样式和布局问题。
示例代码:
<template> <div> <el-table :data="tableData"> <!-- 表格内容 --> </el-table> <button @click="window.print()">打印</button> </div></template><script lang="ts">import { defineComponent } from 'vue';export default defineComponent({ data() { return { tableData: [/* 数据内容 */], }; },});</script>
以上三种方法都可以实现Vue3+TypeScript+Element Plus项目中的前端导出打印功能。你可以根据自己的需求和项目的实际情况选择最适合的方法。
谁知道这是哪个开源项目搭建的 项目技术 Vue3+elementPULS java端也有的 去找过 但是没找 有知道的告诉一下
本文向大家介绍JS实现快递单打印功能【推荐】,包括了JS实现快递单打印功能【推荐】的使用技巧和注意事项,需要的朋友参考一下 最近做项目需要打印快递单,在网上搜索了一下发现直接给出代码的比较少。 首先说一下js网页打印的几种方法: 1.window.print() 会弹出打印对话框 2.使用html 标签引入Webbrowser控件 这种方式是其只兼容IE10以下的浏览器,其他浏览器不可使用 3
这是我写的html ipv6地址的时候,前面的图标显示的特别小 应该怎么解决这个问题了?
火狐低版本浏览器打不开 vue3 + vite 开发的项目?
本文向大家介绍Java Web项目中实现文件下载功能的实例教程,包括了Java Web项目中实现文件下载功能的实例教程的使用技巧和注意事项,需要的朋友参考一下 需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 其中day06/download是文档路径,本实例的程序结构如下: 程序运行后,可以通
本文向大家介绍Android实现PDF预览打印功能,包括了Android实现PDF预览打印功能的使用技巧和注意事项,需要的朋友参考一下 最近在做一个项目,需要用到android手机连接打印机进行打印的功能,目前在网上找到的教程介绍的都是蓝牙连接热敏打印机(pos机大小的打印机)和蓝牙打印机,如果连接日常所见到的网络打印机,进行打印,很显然这些教程是做不到的。 由于android没有提供任何标准,都