首先下载 pdfjs-dist 这个插件在然后在 component 里面添加一个 空白的.vue文件复制下面的代码注意:url 是在public 里面的 静态资源 访问 public 里面的 资源 不需要跨域templatediv class=canvas-contai...
                
首先下载 pdfjs-dist 这个插件
在然后在 component 里面添加一个 空白的.vue文件
复制下面的代码
注意:url 是在public 里面的 静态资源
访问 public 里面的 资源 不需要跨域
<template>
     <div class="canvas-container">
        <canvas v-for="page in pages" :id="'the-canvas'+page" :key="page">
        </canvas>
    </div>
</template>
<script>
import PDFJS from 'pdfjs-dist';
import workerSrc from 'pdfjs-dist/build/pdf.worker.entry'
PDFJS.workerSrc = workerSrc;
export default {
    name: 'Pdf',
    data() {
        return {
            pages: []
        };
    },
    // props:{
    //     str:String,
    // },
    created() {
        let url = "/report.pdf"
       this._loadFile(url);
    },
    methods: {
        _renderPage (num) {
            this.pdfDoc.getPage(num).then((page) => {
                let canvas = document.getElementById('the-canvas' + num)
                var vp = page.getViewport({scale: 1});
                let ctx = canvas.getContext('2d')
                let dpr = window.devicePixelRatio || 1
                let bsr = ctx.webkitBackingStorePixelRatio ||
                    ctx.mozBackingStorePixelRatio ||
                    ctx.msBackingStorePixelRatio ||
                    ctx.oBackingStorePixelRatio ||
                    ctx.backingStorePixelRatio || 1
                let ratio = dpr / bsr
                let viewport = page.getViewport({scale: window.innerWidth / vp.width});
                canvas.width = viewport.width * ratio
                canvas.height = viewport.height * ratio
                canvas.style.width = viewport.width + 'px'
                ctx.setTransform(ratio, 0, 0, ratio, 0, 0)
                let renderContext = {
                    canvasContext: ctx,
                    viewport: viewport
                }
                page.render(renderContext)
                if (this.pages > num) {
                    this._renderPage(num + 1)
                }
            })
        },
        _loadFile (url) {
            PDFJS.getDocument(url).promise.then((pdf) => {
                this.pdfDoc = pdf
                this.pages = this.pdfDoc.numPages
                this.$nextTick(() => {
                    this._renderPage(1);
                });
            });
        }
    }
};
</script>
<style lang="scss" scoped>
.canvas-container{
    margin: 0 auto;
    canvas{
        height: 100vh;
    }
}
</style>
				 沃梦达教程
				
			本文标题为:如何在vue项目里面展示 pdf文件
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - JS前端广告拦截实现原理解析 2024-04-22
 - vue离线环境如何安装脚手架vue-cli 2025-01-19
 - js禁止页面刷新与后退的方法 2024-01-08
 - Ajax实现动态加载数据 2023-02-01
 - 浅析canvas元素的html尺寸和css尺寸对元素视觉的影响 2024-04-26
 - this[] 指的是什么内容 讨论 2023-11-30
 - 基于Vue制作组织架构树组件 2024-04-08
 - 关于文字内容过长,导致文本内容超出html 标签宽度的解决方法之自动换行 2023-10-28
 - 浅谈Vue2和Vue3的数据响应 2023-10-08
 - CSS3的几个标签速记(推荐) 2024-04-07
 
    	
    	
    	
    	
    	
    	
    	
    	
						
						
						
						
						
				
				
				
				