当前位置:首页 > VUE

VUE实现PDF打印页面

2026-01-23 09:48:38VUE

使用vue-pdf-embed组件实现PDF打印

安装vue-pdf-embed依赖包

npm install vue-pdf-embed

在Vue组件中引入并使用

<template>
  <div>
    <vue-pdf-embed :source="pdfUrl" ref="pdfRef" />
    <button @click="printPDF">打印PDF</button>
  </div>
</template>

<script>
import VuePdfEmbed from 'vue-pdf-embed'

export default {
  components: {
    VuePdfEmbed
  },
  data() {
    return {
      pdfUrl: '/path/to/your/file.pdf'
    }
  },
  methods: {
    printPDF() {
      window.print()
    }
  }
}
</script>

使用PDF.js库实现自定义打印

安装pdfjs-dist库

npm install pdfjs-dist

实现PDF渲染和打印功能

<template>
  <div>
    <div ref="pdfContainer"></div>
    <button @click="printPDF">打印</button>
  </div>
</template>

<script>
import * as pdfjsLib from 'pdfjs-dist'
import 'pdfjs-dist/web/pdf_viewer.css'

export default {
  data() {
    return {
      pdfUrl: '/path/to/your/file.pdf'
    }
  },
  methods: {
    async loadPDF() {
      const loadingTask = pdfjsLib.getDocument(this.pdfUrl)
      const pdf = await loadingTask.promise

      for (let i = 1; i <= pdf.numPages; i++) {
        const page = await pdf.getPage(i)
        const viewport = page.getViewport({ scale: 1.0 })

        const canvas = document.createElement('canvas')
        const context = canvas.getContext('2d')
        canvas.height = viewport.height
        canvas.width = viewport.width

        await page.render({
          canvasContext: context,
          viewport: viewport
        }).promise

        this.$refs.pdfContainer.appendChild(canvas)
      }
    },
    printPDF() {
      const printWindow = window.open('', '_blank')
      printWindow.document.write('<html><head><title>打印PDF</title></head><body>')
      printWindow.document.write(this.$refs.pdfContainer.innerHTML)
      printWindow.document.write('</body></html>')
      printWindow.document.close()
      printWindow.focus()
      printWindow.print()
    }
  },
  mounted() {
    this.loadPDF()
  }
}
</script>

使用iframe嵌入PDF实现打印

创建iframe组件打印PDF

<template>
  <div>
    <iframe 
      ref="pdfFrame" 
      :src="pdfUrl" 
      style="width: 100%; height: 800px; border: none;"
    ></iframe>
    <button @click="printPDF">打印</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      pdfUrl: '/path/to/your/file.pdf'
    }
  },
  methods: {
    printPDF() {
      this.$refs.pdfFrame.contentWindow.print()
    }
  }
}
</script>

使用CSS优化打印样式

添加打印样式表

<style scoped>
@media print {
  body * {
    visibility: hidden;
  }
  .pdf-container, .pdf-container * {
    visibility: visible;
  }
  .pdf-container {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
  button {
    display: none;
  }
}
</style>

处理PDF文件下载与打印

从后端API获取PDF并打印

<template>
  <div>
    <button @click="fetchAndPrintPDF">下载并打印PDF</button>
  </div>
</template>

<script>
export default {
  methods: {
    async fetchAndPrintPDF() {
      const response = await fetch('/api/get-pdf')
      const blob = await response.blob()
      const url = URL.createObjectURL(blob)

      const iframe = document.createElement('iframe')
      iframe.style.display = 'none'
      iframe.src = url
      document.body.appendChild(iframe)

      iframe.onload = () => {
        setTimeout(() => {
          iframe.contentWindow.print()
          URL.revokeObjectURL(url)
          document.body.removeChild(iframe)
        }, 500)
      }
    }
  }
}
</script>

VUE实现PDF打印页面

标签: 页面VUE
分享给朋友:

相关文章

vue 实现页面注册

vue 实现页面注册

Vue 实现页面注册功能 创建注册表单组件 在 Vue 项目中创建一个注册表单组件,通常命名为 Register.vue。该组件包含用户名、邮箱、密码等输入字段,以及提交按钮。 <templ…

vue实现页面属性修改

vue实现页面属性修改

Vue 实现页面属性修改的方法 Vue 提供了多种方式来动态修改页面属性,包括数据绑定、计算属性、侦听器等。以下是几种常见的方法: 数据绑定 通过 v-bind 指令或简写 : 实现动态绑定 HT…

vue实现动态显示页面

vue实现动态显示页面

动态显示页面的实现方法 在Vue中实现动态显示页面通常涉及数据绑定、条件渲染、列表渲染以及动态组件等技术。以下是几种常见的实现方式: 数据驱动视图 Vue的核心思想是数据驱动视图,通过修改数据自动…

js实现页面跳转

js实现页面跳转

使用 window.location.href 通过修改 window.location.href 属性实现页面跳转: window.location.href = 'https://exampl…

h5实现页面跳转

h5实现页面跳转

使用 <a> 标签实现跳转 通过 HTML5 的 <a> 标签实现页面跳转是最基础的方法,适用于静态页面或简单的导航需求。示例代码如下: <a href="target…

h5实现页面跳转页面

h5实现页面跳转页面

H5 实现页面跳转的方法 在 H5(HTML5)中,实现页面跳转可以通过多种方式完成,以下是常见的几种方法: 使用 <a> 标签 通过 HTML 的 <a> 标签实现页面跳…