使用PDF.js踩坑记~

想要查看前面的笔记请翻阅我的CSDN博客,作者码字不易,喜欢的话点赞,加个关注吧,后期还有很多干货等着你!

项目场景:

目前遇到需求,需要在pc端打开pdf预览


解决方案:

发现有许多成熟的方案,最终决定使用PDF.js进行开发

首先先在官网下载

http://mozilla.github.io/pdf.js/getting_started/#download

在这里插入图片描述
下载完成后目录结构是这样:

在这里插入图片描述
我们打开web后点击:
在这里插入图片描述

这里有一个坑,我怎么都打不开,结果最后发现是因为需要启动服务才能使用这里我使用的是live-server这个npm组件启动

这时候他会有个默认的pdf展示:compressed.tracemonkey-pldi-09.pdf
在这里插入图片描述

默认读取的是这里,如果我们要使用自己的文件需要把这个地方删除为空

删除后回读取url上的文件地址:web/viewer.html?file=XXX
在这里插入图片描述

如果需要加载远程服务器的pdf文件,远程服务器返回pdf文件流,然后在viewer.html的url后面添加file=http://127.0.0.1:8020/PDF/test,但是pdf.js不支持跨域请求,所以会报错:file origin does not match viewer’s,试了很多种方法仍然报错,所以简单粗暴的方法就是把viewer.js的判断远程地址的代码注释掉即可。

注释viewer.js的代码:

    if (fileOrigin !== viewerOrigin) {
      throw new Error('file origin does not match viewer\'s');
 }

这里我的pdf文件不是放在静态目录中,而是根据接口动态获取,我的下载方法是有两个参数的如:

http://127.0.0.1/downloadfile?fileid=123&fileName=XXX.pdf

那么就导致链接中会有两个问号导致一直获取不到文件

http://127.0.0.1:8080/web/index.html?file=http://127.0.0.1/downloadfile?fileid=123&fileName=XXX.pdf

最后我是改造了接口,坑~

http://127.0.0.1:8080/web/index.html?file=http://127.0.0.1/downloadfile/123/XXX.pdf
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Django 是一个常用的 Python Web 框架,而 pdf.js 是一个 JavaScript 库,用于在 Web 页面中渲染和交互式展示 PDF 文档。想要在 Django 中使用 pdf.js,需要进行以下步骤。 首先,我们需要在 Django 的项目中安装 pdf.js。可以通过下载 pdf.js 的代码,然后将其作为静态文件存放在 Django 项目的静态文件夹中,或者直接使用第三方库安装。 接下来,在 Django 的视图函数中,我们可以获取到需要展示的 PDF 文件的路径或者二进制数据。可以通过请求参数、数据库查询或其他方式来获取。 然后,在视图函数中,我们可以将获取到的 PDF 文件路径或者二进制数据传入到模板中,在模板中使用 pdf.js 提供的 JavaScript 函数进行渲染和展示。可以通过创建一个 HTML 页面,使用 pdf.js 提供的 `<canvas>` 标签来渲染 PDF 内容,然后使用 JavaScript 调用 pdf.js 的函数来加载和显示 PDF 文件。 在模板中,可以使用 Django 的模板语法将 PDF 文件的路径或者二进制数据传递给 JavaScript 函数。可以通过定义一个 JavaScript 函数来接收参数,然后在函数中调用 pdf.js 的函数进行 PDF 文件的加载和展示。 最后,在 Django 的路由配置中,需要定义一个 URL 用于访问对应的视图函数。可以通过配置一个路由规则,将 URL 映射到对应的视图函数上,这样当用户访问该 URL 时,会触发对应的视图函数,进而渲染并展示 PDF 文件。 总结起来,想要在 Django 中使用 pdf.js,首先需要安装 pdf.js,并将其作为静态文件存放在项目中。然后,在视图函数中获取到 PDF 文件的路径或者二进制数据,并传递给模板。在模板中使用 pdf.js 提供的 JavaScript 函数进行渲染和展示。最后,在路由配置中定义 URL 映射到对应的视图函数上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alaia.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值