当前位置:首页 > VUE

vue页面实现打印功能

2026-01-22 04:38:11VUE

使用window.print()实现基础打印

在Vue组件中直接调用浏览器原生打印API是最简单的方式。通过window.print()会触发浏览器打印对话框,打印当前页面全部内容。

<template>
  <div>
    <button @click="handlePrint">打印页面</button>
    <div class="print-content">需要打印的内容区域</div>
  </div>
</template>

<script>
export default {
  methods: {
    handlePrint() {
      window.print()
    }
  }
}
</script>

<style>
@media print {
  /* 隐藏不需要打印的元素 */
  button {
    display: none;
  }

  /* 调整打印样式 */
  .print-content {
    font-size: 12pt;
  }
}
</style>

使用vue-print-nb插件

安装专门的Vue打印插件可以更灵活地控制打印内容:

npm install vue-print-nb --save

在项目中使用:

vue页面实现打印功能

import Print from 'vue-print-nb'

Vue.use(Print)

模板中使用v-print指令:

<template>
  <div>
    <button v-print="printObj">打印指定区域</button>
    <div id="printArea">
      <!-- 需要打印的内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      printObj: {
        id: 'printArea',
        popTitle: '打印标题', // 打印标题
        extraCss: 'https://example.com/print.css', // 附加CSS
        extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>' // 附加HEAD
      }
    }
  }
}
</script>

打印样式优化

通过CSS媒体查询专门设置打印样式:

vue页面实现打印功能

@media print {
  body * {
    visibility: hidden;
  }

  #printSection, #printSection * {
    visibility: visible;
  }

  #printSection {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }

  /* 移除背景色和图片 */
  * {
    background-color: transparent !important;
    color: #000 !important;
    background-image: none !important;
  }

  /* 调整边距 */
  @page {
    size: A4;
    margin: 0;
  }
}

打印分页控制

使用CSS控制打印分页:

.page-break {
  page-break-after: always;
}

.avoid-break {
  page-break-inside: avoid;
}

生成PDF打印

使用html2pdf.js等库生成PDF:

import html2pdf from 'html2pdf.js'

export default {
  methods: {
    generatePDF() {
      const element = document.getElementById('pdf-content')
      const opt = {
        margin: 1,
        filename: 'document.pdf',
        image: { type: 'jpeg', quality: 0.98 },
        html2canvas: { scale: 2 },
        jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }
      }

      html2pdf().from(element).set(opt).save()
    }
  }
}

标签: 页面功能
分享给朋友:

相关文章

vue页面分离的实现

vue页面分离的实现

Vue页面分离的实现方法 将Vue页面分离为多个组件或模块,有助于提升代码可维护性和复用性。以下是几种常见的实现方式: 组件化拆分 通过将页面拆分为多个子组件,每个组件负责特定功能或UI部分。使用…

vue发布动态功能实现

vue发布动态功能实现

实现Vue动态发布功能 前端实现 使用Vue.js构建动态发布表单,包含文本输入和图片上传功能 <template> <div> <textarea v-…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mo…

vue实现转页面

vue实现转页面

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式完成,具体取决于项目结构和需求。 使用 router-link 组件 router-link 是 Vue Router…

vue实现页面定位

vue实现页面定位

Vue 实现页面定位的方法 在 Vue 中实现页面定位通常可以通过以下几种方式完成,包括使用原生 JavaScript 的 scrollIntoView 方法、Vue Router 的滚动行为配置,以…

php实现页面跳转

php实现页面跳转

PHP实现页面跳转的方法 在PHP中,可以通过多种方式实现页面跳转,以下是几种常用的方法: header函数跳转 header("Location: target_page.php"); ex…