尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包) - 详解

如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包) - 详解
📅 发布时间:2026/6/18 22:00:02

如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包) - 详解

这篇文章只讲一件事:在 Vue 项目里打印,用 web-print-pdf(npm 包)就够了。下面给出做法和可复用代码。

为什么不直接用 window.print

  • 需要用户点确认,不适合静默/批量
  • 不能可靠指定打印机、纸张、边距
  • 多浏览器差异大,行为不稳定

为什么用 web-print-pdf

  • 安装 npm 包,调用 API 即可
  • 支持 PDF / HTML / 图片
  • 可指定打印机、纸张、边距、份数、单双面
  • 支持静默与批量队列
  • 配合本地服务规避浏览器限制

在 Vue 项目中 5 分钟接入

1)安装依赖
npm i web-print-pdf
2)基础用法:打印当前页面渲染的 HTML(优先)

把需要打印的 DOM 转成 HTML 字符串(或独立路由),优先使用 webPrintPdf.printHtml;对于可访问页面也可使用 printHtmlByUrl。

// src/views/Order.vue(示例)
import { printHtml, printHtmlByUrl
} from 'web-print-pdf';
export default {
name: 'OrderView',
methods: {
async handlePrint() {
const target = this.$refs.printArea;
// 需要打印的 DOM 区域
const html = `<!doctype html><html><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/>
<style>/* 可内联必要样式,保证版式一致 */</style>
</head><body>${target.outerHTML
}</body></html>
`;
await printHtml({
content: html,
printer: '', // 不填走系统默认打印机
paper: 'A4',
silent: true,
});
// 或:await printHtmlByUrl({ url: '/print/page.html', paper: 'A4', silent: true });
},
},
};

模板:

订单 #10086
客户:张三
金额:¥199.00
>
3)打印 PDF(推荐生产使用)

将页面数据渲染为 PDF(后端或前端生成),用 printPdfByUrl 输出:

import { printPdfByUrl
} from 'web-print-pdf';
await printPdfByUrl({
url: '/api/order/10086.pdf',
printer: 'HP-LaserJet',
paper: 'A4',
silent: true,
});
4)打印图片/标签
import { printImageByUrl
} from 'web-print-pdf';
await printImageByUrl({
url: '/static/label.png', silent: true
});

样式与排版

  • 准备打印专用 CSS:边距、分页符、隐藏交互元素
  • 字体就近可用:确认中文字体可用;PDF 更稳
  • 纸张与驱动一致:A4、80mm、小标签要匹配

场景举例

  • 面单/拣货单/出库单:批量静默,队列防阻塞
  • 门店小票/价签/标签:默认打印机直打
  • 医疗/政务表单:严格纸张与边距

常见问题

  • 样式错乱?独立模板或内联关键样式,少用复杂动画
  • 要静默?前端调 web-print-pdf,由本地服务执行
  • 选打印机/纸张?用 printer、paper,以驱动能力为准
  • 批量会卡?有队列与并发控制,必要时分批

结语

总结:生产环境建议“后端生成 PDF + 前端用 web-print-pdf 打印”。够稳、够省心。

生成 PDF 的方案对比(后端 vs 前端)

当你选择“打印 PDF”路径时,通常有两类生成方式:

— 后端生成(Puppeteer/Playwright/Electron)

  • 稳定,字体与版式一致;适合批量/离线;可审计
  • 需要规划算力与并发,打包字体与静态资源

— 前端生成(DOM→PDF,如 html2pdf、jsPDF+html2canvas)

  • 前端自给自足,所见即所得
  • 复杂页面有偏差风险;大页面性能有限;浏览器差异明显

结论:生产用后端生成;轻量导出可用前端,但要评估样式与性能。

Vue 2 示例(Options API)

订单 #10086
客户:张三
金额:¥199.00
import { printHtml, printPdfByUrl } from 'web-print-pdf';
export default {
name: 'OrderView',
methods: {
async handlePrint() {
const target = this.$refs.printArea;
const html = `
body{margin:0;padding:0}
.print-container{padding:16px}
${target.outerHTML}`;
await printHtml({ content: html, paper: 'A4', silent: true });
},
async handlePrintPdf() {
await printPdfByUrl({ url: '/api/order/10086.pdf', paper: 'A4', silent: true });
},
},
};
.print-container { background: #fff; color: #222; }

Vue 3 + setup 示例(Composition API)

订单 #10087
客户:李四
金额:¥299.00
import { ref } from 'vue';
import { printHtml, printPdfByUrl } from 'web-print-pdf';
const printArea = ref(null);
async function handlePrint() {
const target = printArea.value;
const html = `
body{margin:0;padding:0}
.print-container{padding:16px}
${target.outerHTML}`;
await printHtml({ content: html, paper: 'A4', silent: true });
}
async function handlePrintPdf() {
await printPdfByUrl({ url: '/api/order/10087.pdf', paper: 'A4', silent: true });
}
.print-container { background: #fff; color: #222; }

相关新闻

  • JavaScript内存泄露原因及解决方案
  • 数据类型扩展
  • P2051 [AHOI2009] 中国象棋 个人题解

最新新闻

  • 绝区零一条龙:让游戏回归乐趣的智能伴侣
  • 终极Markdown Viewer浏览器插件完整指南:让技术文档阅读变得简单高效
  • 深圳配眼镜去哪好?验光专业度是核心考量 - 配眼镜新资讯
  • SAS ODS RTF进阶:巧用转义与编码输出复杂科学符号
  • 连云港GEO服务商代理加盟选型靠谱推荐哪家强?2026年连云港GEO优化服务商代理加盟排名与合作权益深度解析 - 小随科技
  • 2026年6月母线槽厂家推荐,高压型母线槽/封闭型母线槽/铝合金外壳母线槽/防火浇筑型母线槽,母线槽安装门店哪家好 - 品牌推荐师

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号