当前位置: 首页 > news >正文

vue3 + antd + print-js 实现打印功能(含输出PDF)

一、背景:在中后台系统中有时需要实现合同打印(包含连接物理打印机、输出PDF等)

二、print-js安装

npm i print-js

三、代码实现

<template><div class="print-container"><!-- 打印按钮 --><a-button type="primary" @click="handlePrint"><PrinterOutlined />打印</a-button><!-- 打印区域 - 只有这个区域的内容会被打印 --><div id="printContent" class="print-area"><h2>员工信息表</h2><!-- Antd表格组件 --><a-table :dataSource="data" :columns="columns" :pagination="false"size="small"><template #footer>共 {{ data.length }} 条记录</template></a-table></div></div>
</template><script setup>
import { ref } from 'vue';
import { Button, Table } from 'ant-design-vue';
import { PrinterOutlined } from '@ant-design/icons-vue';
import printJS from 'print-js';// 表格数据
const data = ref([{ key: '1', name: '张三', age: 25, department: '技术部' },{ key: '2', name: '李四', age: 30, department: '市场部' },
]);// 表格列配置
const columns = ref([{ title: '姓名', dataIndex: 'name' },{ title: '年龄', dataIndex: 'age' },{ title: '部门', dataIndex: 'department' }
]);// 打印功能
const handlePrint = () => {printJS({printable: 'printContent',     // 指定要打印的DOM元素IDtype: 'html',                  // 打印类型为HTMLscanStyles: false,             // 关键:禁用样式扫描,使用组件内的@media print样式});
};
</script><style scoped>
/* 屏幕显示样式 */
.print-container {padding: 20px;
}.print-area {margin-top: 20px;padding: 20px;border: 1px solid #d9d9d9;background: white;
}/* 打印媒体查询 - 只在打印时生效 */
@media print {/* 隐藏打印按钮和其他非打印元素 */.print-container > button {display: none;}/* 打印页面整体设置 */body { margin: 10mm;                   /* 设置打印边距 */font-family: "Microsoft YaHei", sans-serif; /* 设置打印字体 */}/* 打印区域样式调整 */.print-area {margin: 0;                      /* 去除外边距 */padding: 0;                     /* 去除内边距 */border: none;                   /* 去除边框 */}/* 标题打印优化 */h2 { text-align: center;             /* 标题居中 */color: #000;                    /* 确保黑色打印 */}/* 深度选择器:影响Antd子组件样式 */:deep(.ant-table) {border: 1px solid #000;         /* 表格边框 */}:deep(.ant-table-thead > tr > th) {background: #f5f5f5 !important; /* 表头背景色 */}
}
</style>

四、效果图

http://www.dtcms.com/a/605165.html

相关文章:

  • 主动交互和情境感知,AI 硬件是脱离手机屏幕掌控的蓝海机会丨硬件和端侧模型专场@RTE2025 回顾
  • NeurIPS2025丨MIT提出自动化科学发现工具,AutoSciDACT对天文/物理/生物医学等异常数据强敏感
  • Java: 为PDF批量添加图片水印实用指南
  • 使用 Python 将 PDF 转换为 PNG
  • docker desktop 限制wsl使用内存空间
  • 学校网站的建设论文WordPress订阅下载插件
  • 内连接与隐式内连接:SQL连接的本质解析
  • 内存网盘 - Go语言实现的WebDAV内存文件系统
  • 【复习408】操作系统进程描述与控制详解
  • 实战1: worldskills3.vmem
  • redis-manger管理平台
  • 基于SpringBoot与Vue的海外理财系统设计与实现
  • 测开学习DAY28
  • android短视频sdk,灵活集成,快速上线!
  • Android AIDL 的详细讲解和实践指南
  • 制作网站首页教案网站建设外包兼职平台
  • 荆门网站制作网站建设ktv
  • 适合实现多生产者单消费者(MPSC)队列的常见数据结构及其优缺点
  • 【高级机器学习】5. Dictionary learning and Non-negative matrix factorisation
  • PPTX 格式的底层数据结构
  • 前端错误监控与上报:Sentry 接入与自定义告警规则
  • 27.Telnet
  • 多级缓存体系与热点对抗术--速度是用户体验的王道,而缓存是提升速度的银弹
  • CPU 缓存 高并发探索
  • 郑州三牛网站建设企业邮箱号码从哪里查
  • 《C++在量化、KV缓存与推理引擎的深耕》
  • php网站建立教程wordpress 合并js
  • [MSSQL] 读写分离(主从备份)
  • 潮州市住房和城乡建设局网站石英手表网站
  • Spring Boot 应用的云原生 Docker 化部署实践指南