pdfjs 基础使用教程(二)

上文说的展示pdf我们所用的网页自带的网页viewer.html这个网页是谷歌做的使用pdf.js的一个demo,如果我们自己要使用pdf.js自定义渲染我们的固定页怎么做呢?我们来开始码代码。

首先我们创建一个基础的html模版

<!DOCTYPE html>
<html>
    <head>
        <title>自定义渲染pdf页demo</title>
    </head>
    <body>
        
    </body>
</html>

然后呢 pdfjs他是怎样解析的我们不需要管他, 那么他是怎样显示的呢?实际上他是利用了html的canvas画布,把pdf内容绘制上面的那么我们需要一个canvas.

<!DOCTYPE html>
<html>
    <head>
        <title>自定义渲染pdf页demo</title>
    </head>
    <body>
        <canvas id="canvas"></canvas>
    </body>
</html>

我们要显示pdf 当然需要pdfjs pdf.worker.js 和pdf文件这里面我们之间用他官网的

<!DOCTYPE html>
<html>
    <head>
        <title>自定义渲染pdf页demo</title>
    </head>
    <body>
        <canvas id="canvas"></canvas>
        <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>
        <script>
            var pdfjsLib = window['pdfjs-dist/build/pdf'];

            var pdfurl = 'https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf';
            pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://mozilla.github.io/pdf.js/build/pdf.worker.js';
        </script>
    </body>
</html>

然后就是我们解析pdf文件了首先拿到pdf

<!DOCTYPE html>
<html>
    <head>
        <title>自定义渲染pdf页demo</title>
    </head>
    <body>
        <canvas id="canvas"></canvas>
        <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>
        <script>
            var pdfjsLib = window['pdfjs-dist/build/pdf'];

            var pdfurl = 'https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf';
            pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://mozilla.github.io/pdf.js/build/pdf.worker.js';
            
            //异步下载pdf
            var loadingTask = pdfjsLib.getDocument(pdfurl);
            //加载pdf
            loadingTask.promise.then(function(pdf) {

            }, function(reason){
                //pdf加载错误 原因有很多 比如文件错误这种的话属于不可解决问题  比如pdf有密码 这种就可以在这里处理
                console.log('loading error')
                //pdfjs 自己编辑的错误码        
                console.error(reason);
            })
        </script>
    </body>
</html>

然后我们开始解析pdf对应页面  代码如下

<!DOCTYPE html>
<html>
    <head>
        <title>自定义渲染pdf页demo</title>
    </head>
    <body>
        <canvas id="canvas"></canvas>
        <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>
        <script>
            var pdfjsLib = window['pdfjs-dist/build/pdf'];

            var pdfurl = 'https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf';
            pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://mozilla.github.io/pdf.js/build/pdf.worker.js';
            
            //异步下载pdf
            var loadingTask = pdfjsLib.getDocument(pdfurl);
            //加载pdf
            loadingTask.promise.then(function(pdf) {
                console.log('PDF loaded');
  
                //这里定义的pdf页面 我们选择的是第一页
                var pageNumber = 1;
                //这里面来调用getPage方法获取对应的页面
                pdf.getPage(pageNumber).then(function(page) {
                    //这个是倍数
                    var scale = 1.5;
                    //这个是展示的倍数viewer.html的倍数就是改的这个东西
                    var viewport = page.getViewport({scale: scale});
                    
                    //这里面开始真的的绘制 获取canvas id这里面我定义的就叫canvas
                    var canvas = document.getElementById('canvas');
                    //这里面获得一个画笔
                    var context = canvas.getContext('2d');
                    //这里面定义canvas的宽高
                    canvas.height = viewport.height;
                    canvas.width = viewport.width;

                    
                    var renderContext = {
                    canvasContext: context,
                    viewport: viewport
                    };
                    //真正的渲染
                    var renderTask = page.render(renderContext);
                    renderTask.promise.then(function () {
                        console.log('渲染完毕');
                    });
                });
            }, function(reason){
                //pdf加载错误 原因有很多 比如文件错误这种的话属于不可解决问题  比如pdf有密码 这种就可以在这里处理
                console.log('loading error')
                //pdfjs 自己编辑的错误码        
                console.error(reason);
            })
        </script>
    </body>
</html>

最后我们打开我们写的html 

pdf第一页就完美渲染了。

好的今天就到这。基础交流群 799827663

Vue2中使用pdf.js的方式主要涉及以下几个步骤: 1. 安装pdf.js: 首先,你需要在你的项目中安装pdf.js。可以通过npm来安装: ```bash npm install pdfjs-dist ``` 如果你想使用在线版本的pdf.js,可以通过添加script标签的方式引入。 2. 引入pdf.js: 在你的Vue组件中引入pdf.js的Worker和PDF文档解析器。 ```javascript import { getDocument } from 'pdfjs-dist/legacy/build/pdf'; ``` 3. 创建Vue组件: 在Vue组件中,你可能需要一些数据属性来存储PDF文件以及页面渲染状态,以及一些方法来处理PDF文件的加载和渲染。 ```javascript <template> <div> <canvas ref="pdfCanvas" style="width: 100%; height: 100vh;"></canvas> </div> </template> <script> export default { data() { return { pdf: null, pdfCanvas: null, }; }, methods: { loadPDF(url) { getDocument(url).promise.then((pdf) => { this.pdf = pdf; this.renderPDF(1); }); }, renderPDF(pageNumber) { const page = this.pdf.getPage(pageNumber); const viewport = page.getViewport({ scale: 1.5 }); const canvas = this.$refs.pdfCanvas; const context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; const renderContext = { canvasContext: context, viewport: viewport, }; page.render(renderContext).promise.then(() => { // Page rendering is now done. }); } }, mounted() { const pdfUrl = 'path/to/your/pdf/file.pdf'; this.loadPDF(pdfUrl); } }; </script> ``` 4. 使用组件: 在模板中使用你的Vue组件,并确保有合适的引用指向pdf.js。 以上代码只是一个基本的示例,实际使用时可能需要考虑更多的细节,比如PDF页面的翻页功能、缩放控制、导航等等。你需要根据实际需要扩展这个基础组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值