当前位置:首页 > VUE

vue实现打印图片

2026-02-18 00:07:49VUE

使用vue-html-to-paper插件

安装插件:

npm install vue-html-to-paper

在main.js中引入并配置:

import VueHtmlToPaper from 'vue-html-to-paper';
Vue.use(VueHtmlToPaper);

组件中使用:

this.$htmlToPaper('printContainer', {
  name: '_blank',
  specs: ['fullscreen=yes','titlebar=yes','scrollbars=yes'],
  styles: ['https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css']
});

使用window.print()方法

创建打印区域:

<div id="printArea">
  <img src="your-image.jpg" alt="Print Image">
</div>

添加打印按钮:

vue实现打印图片

methods: {
  printImage() {
    const printContent = document.getElementById('printArea');
    const WindowObject = window.open('', "PrintWindow");
    WindowObject.document.writeln(printContent.innerHTML);
    WindowObject.document.close();
    WindowObject.focus();
    WindowObject.print();
    WindowObject.close();
  }
}

使用CSS媒体查询控制打印样式

添加打印样式:

@media print {
  body * {
    visibility: hidden;
  }
  #printArea, #printArea * {
    visibility: visible;
  }
  #printArea {
    position: absolute;
    left: 0;
    top: 0;
  }
}

使用html2canvas和jsPDF库

安装依赖:

npm install html2canvas jspdf

实现代码:

vue实现打印图片

import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';

methods: {
  async printWithCanvas() {
    const element = document.getElementById('printArea');
    const canvas = await html2canvas(element);
    const imgData = canvas.toDataURL('image/png');
    const pdf = new jsPDF();
    pdf.addImage(imgData, 'PNG', 0, 0);
    pdf.save('print.pdf');
  }
}

注意事项

图片需要完全加载后才能打印,可以在img标签上添加@load事件监听:

<img @load="imageLoaded = true" :src="imageUrl">

对于跨域图片,需要确保服务器允许CORS:

html2canvas(element, {
  useCORS: true
});

打印时可能需要调整边距和缩放比例:

const pdf = new jsPDF({
  orientation: 'portrait',
  unit: 'mm',
  format: 'a4'
});
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);

标签: 图片vue
分享给朋友:

相关文章

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue实现评分

vue实现评分

Vue 实现评分功能 使用组件库实现 安装 element-ui 或 ant-design-vue 这类 UI 库,它们已经内置了评分组件。 以 element-ui 为例: <te…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…

vue实现hexo

vue实现hexo

Vue 集成 Hexo 的实现方法 Hexo 是一个静态博客框架,而 Vue 是一个前端框架。将 Vue 集成到 Hexo 中可以通过以下方式实现: 在 Hexo 中使用 Vue 组件 通过 Hex…

vue实现回复

vue实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及前端表单交互、数据绑定和后端通信。以下是实现回复功能的详细步骤: 数据绑定与表单设计 使用 Vue 的 v-model 绑定回复框的输入内容,…

vue实现投票

vue实现投票

Vue实现投票功能 数据准备 在Vue组件的data中定义投票相关数据,包括选项列表和当前选中状态: data() { return { options: [ { id: 1…