精华内容
下载资源
问答
  • Vue源码详细解析.pdf

    2021-09-14 14:42:44
    Vue源码详细解析.pdf
  • Vue.js 源码解析.pdf

    2021-09-14 14:33:51
    Vue.js 源码解析.pdf
  • vue源码解析(每一个功能全部包含在内),所有功能讲解,如果遇到下载问题可以加我QQ (2268846315),想了解vue2.0源码的可以下载下来。
  • VueRouter 源码深度解析.pdf
  • Vue2.x源码解析系列.pdf

    2021-09-14 14:34:02
    Vue2.x源码解析系列.pdf
  • Vue源码学习系列01——全局工具函数解析.pdf
  • 深入解析Vue开始到结束过程中发生了什么, 组件内的数据是怎样支持双向绑定以及如何刷新视图的。
  • Vue源码的执行过程,源码的注释,源码的示例
  • Vue.js3.0核心源码解析

    2020-11-12 09:39:53
    核心源码解析的的pdf版,具体的内容可以自行查看。
  • 前段时间有个支持在线学习功能的项目,有需要在线预览pdf格式课件的功能,我就想在线预览pdf多简单,因为大部分浏览器都支持打开pdf文件,所以直接放个iframe然后src是pdf文件的地址不就行了吗,so easy!...

    前段时间有个支持在线学习功能的项目,有需要在线预览pdf格式课件的功能,我就想在线预览pdf多简单,因为大部分浏览器都支持打开pdf文件,所以直接放个iframe然后src是pdf文件的地址不就行了吗,so easy!!(什么?兼容性?兼容性是什么东西?(づ ̄3 ̄)づ不是Chrome别跟我说话)

    本来以为就这样了,可惜,天不遂人愿,领导来提需求了,我们这是支持教学、学习的平台,所以pdf的内容需要支持复制的,并且因为老师要讲课,最好能够支持类似PPT播放的功能......相顾无言,浏览器直接打开的就支持复制,但是播放功能是什么鬼哟!(我好惨一男的)

    c0246d7ad8fbf75776d478d44e0af20a 吐槽一番,还是老老实实去实现功能吧,但是GitHub找了一圈vue项目的pdf轮子,基本都是大同小异,基本思想就是使用canvas把pdf内容绘制出来,但是这样最大的一个问题就是pdf的内容完全没办法复制了,第一个需求就不满足了,没办法只能扩大搜索范围,最终瞄准了pdf.js,在官网的

    demo

    里试了下,领导的需求完全满足,所以只能排除万难把pdf.js引入项目了。

    导入pdf.js插件

    1.官网下载源包

    贴上地址,不想踩坑就老老实实下载稳定版本吧

    34ffbe5c7727d0ad52cb53856241ab1e

    2.放入项目

    放在vue项目static目录下,目录结构如下:

    2849fc453e58715328827a51f0c9f298

    3.修改一些源码配置

    因为pdf.js是不支持跨域文件加载的 直接加载是不会成功的。会报 “file origin doesnot match viewer”错误,所以需要把viewer.js文件内的抛出错误这一行报错注释掉,这个修改是看了这位老哥的博客,贴上他的文章地址:链接

    7d86474c7f1d60ed261f4138c48fb8db

    项目使用

    使用的话很简单,页面放一个iframe,然后src等于到viewer.html的相对路径,然后file=后端返回的文件路径 '/static/pdfjs/web/viewer.html?file=' + pdfVisitUrl ,这样就大功告成了..........才怪!!!坑还是要爬的,当然后端返回流文件形式前端解析打开当然是更好了,这个可以看一下上面贴的那个博客

    坑1

    因为服务端返回的是文件链接,但是为了保证文件的保密性,防止链接直接复制给其他人其他人就可以随便打开使用这个问题,后端开发人员在文件链接后面添加了一些具有时效性的token之类的东西,然后文件链接就变成这样了 http://10.20.124.151/group1/M00/00/02/ChR8l1zBdSuAXoATAAvc4itpNIU648.pdf?token=ee94d7d3b3452c62b18364698839834b ,但是pdf.js默认只允许传简单路径,因为pdf.js无法判断token是viewer.html的参数还是所要预览文件的参数,所以需要先对返回的文件链接进行encodeURIComponent编码

    :src="`/static/pdfjs/web/viewer.html?file=${encodeURIComponent(pdfVisitUrl)}`"

    frameborder="0"

    class="pdf-window"

    >

    复制代码

    这样的话这个坑算是爬过了

    坑2

    解决了上面的问题,是不是觉得差不多了,我能说到这个时候我程序都还没法运行,页面还是黑的吗?因为pdf.js作为静态资源根本没被识别打包,相对路径根本找不到,我使用npm run build打包尝试了一下发现打包后的文件中根本找不到pdf.js

    3a3b1bbbca33fa813f3a69a880a51b5d

    后来研究了webpage,发现针对静态资源打包主要是使用一个copy-webpack-plugin的插件,所以在webpack.prod.conf.js和webpack.dev.conf.js两个文件中加上下面代码

    const CopyWebpackPlugin = require('copy-webpack-plugin')

    new CopyWebpackPlugin([

    {

    from: path.resolve(__dirname, '../src/static'), // 这个路径使用的是static目录相对于当前js文件的相对路径

    to: config.dev.assetsSubDirectory,

    ignore: ['.*'] // 匹配所有,把static目录下文件一股脑全部作为静态资源打包,省的一些幺蛾子

    }

    ])

    复制代码

    保存,重新npm run dev,这次终于ojbk了,可以洗洗睡了

    但是,后面我看了一下其他版本的vue-cli发现很多版本的都能够直接把pdf.js作为静态资源正常打包,可能就我们项目使用的这个版本是个坑吧,所以如果你在开发中发现静态资源可以正常打包就忽略坑2吧。

    看看时间也差不多了,准备下班

    下班我是一定要走的,耶稣都拦不住,我说的!!

    6bfea81372b7ef2f7d9cb9999094e082

    展开全文
  • VUE源码详细分析文件,让你清晰了解vue数据绑定原理,模板解析原理。让你更加充分的认识到VUE,了解MVVM模式。
  • vue项目中使用pdf.js预览pdf文件

    万次阅读 多人点赞 2018-05-02 20:44:06
    项目要求需要预览pdf文件,网上找了很久,大多数都是推荐pdf.js,自己先了解了一下,最后决定用pdf.... 搜多了你就发现有几个封装pdf.js的vue组件,个人试验了其中一个,效果不是很好,所以,当然啊,用原生 的是最...

        项目要求需要预览pdf文件,网上找了很久,大多数都是推荐pdf.js,自己先了解了一下,最后决定用pdf.js,

    但是发现,在vue中使用这个很少!!!!!所以我就写这一篇帮助一下vue使用pdfjs的朋友!

    其实 这和前端框架无关的,直接使用pdf.js原生

         搜多了你就发现有几个封装pdf.js的vue组件,个人试验了其中一个,效果不是很好,所以,当然啊,用原生

    的是最好的啦!

       首先肯定是导入插件,我是从官网直接下载,链接:点击打开链接,注意放在static文件目录下,

    这里面有核心的pdf.js和pdf.worker.js,以及展示pdf的viewer页面把它作为静态资源来编译,基本想要的build和web这两个重要文件夹的东西都正常编译。当然你可以可以npm install一下,整个文件放在static目录下的不好地方就是打包会很大哟(当然你可以选择性的删除里面的文件,比如绝大部分语言包)。目录结构放一下

    其实就可以直接用的,网上很多,viewer.js 里的

     

    代表着文件路径,如果你项目中有个pdf文件,那直接相对路径就可以在页面预览,如果使用远程预览,其实这里的路径会被覆盖,你删不删除它自带的路径都不会影响你的远程预览,so我今天说的是远程预览(服务器端url预览),pdf.js也提供了一种方法,

    用file= 的方式也可以打开哟,放在页面上使用,我是iframe进行嵌套

        用这种方式必不可少的是跨域问题,你存储文件的服务器路径会和项目产生跨域,我的解决办法是,让后台返回流的形式返回文件,后台代码案例:

     

    注意:

     

    1    pdf.js是不支持跨域文件加载的  直接加载是不会成功的。会报  “file origin doesnot match viewer”错误。 所以我们得改变一下源码

    把这句警告直接注释就行了

     

    2    file参数中默认只允许传简单路径比如:http://www.a.com/file.php.  如果你要浏览的pdf路径为http://www.a.com/file.php?id=2001。 这时候直接传入的话会解析出错, 因为pdf.js无法判断id=2001是viewer.html的参数呢还是file.php的参数

     这告诉我们 url必须进行encode编码  把参数file后传入的动态参数中特殊字符转义:

    这里又会有两种方法:

    encodeURI() 把字符串编码为 URI
    encodeURIComponent() 把字符串编码为 URI 组件

    发现        encodeURI不会对:/?&等uri中起分割作用的字符进行编码;

    encodeURIComponent则会。

    所以必须选择 encodeURIComponent 进行对url的编码

    举例

    这样如此就ok

     

    3  

    如果 后台返回给前台的流的url形式 是

    https://xxx.com/api/esm/v1/contractTemplates/load?id=13&access_token=a33e14ef6aba87b593b1aac31e3d97bb

     

    这样pdf.js插件是无法识别的,所以的在最后加上 &.pdf  来骗过插件

    效果图

    上面是pc端的,移动端也同样试用,这里以微信为例,ios可以用自带的微信浏览器来进行pdf的预览,而安卓则必须用pdf.js来预览pdf咯,分辨ios与安卓的方法,我的博客里有哟!谢谢观看,一起交流进步!

    当然这是用iframe打开的,我这里也提供一种不是iframe打开的样式,因为pdf.js本质上是用canvas渲染的,我也是借鉴了他人的代码,具体我也忘了,放一下demo效果,(注意查看服务器返回流,token会失效,你测试的时候会报错,我只是告诉你怎么写而已,谢谢)

    最后补上demo链接 :vue-pdf.js-demo

    如果对你有所帮助的话,欢迎star! 谢谢

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • ⽬前社区有很多 Vue.js 的源码解析⽂章, 但是质量层次不⻬, 不够系统和全⾯, 这本电⼦书的⽬标是 全⽅位细致深度解析 Vue.js 的实现原理, 让同学们可以彻底掌握 Vue.js。 ⽬前分析的版本是 Vue.js 的最 新版本 ...
  • 1. 项目要求需要预览pdf文件 其实 这和前端框架无关的,直接使用pdf.js原生 1.1下载 下载地址 注意放在static文件目录下, 这里面有核心的pdf.js和pdf.worker.js,以及展示pdf的viewer页面把它作为静态资源来...

     1. 项目要求需要预览pdf文件

    其实 这和前端框架无关的,直接使用pdf.js原生

    1.1下载

    下载地址

    注意放在static文件目录下,

    这里面有核心的pdf.js和pdf.worker.js,以及展示pdf的viewer页面把它作为静态资源来编译,基本想要的build和web这两个重要文件夹的东西都正常编译。当然你可以可以npm install一下,整个文件放在static目录下的不好地方就是打包会很大哟(当然你可以选择性的删除里面的文件,比如绝大部分语言包)。目录结构放一下

    用file= 的方式打开哟,放在页面上使用,我是iframe进行嵌套

        <el-dialog :visible.sync="pdfDialogVis" :fullscreen="true">
            <iframe frameborder="0" scrolling="auto" width="100%" height="100%" :src="'static/web/viewer.html?file='+encodeURIComponent(pdfOpen+'?id='+pdfId+'&name='+encodeURIComponent(pdfName)+'&token='+token)"></iframe>
          </el-dialog>

      用这种方式必不可少的是跨域问题,你存储文件的服务器路径会和项目产生跨域,我的解决办法是,让后台返回流的形式返回文件,后台代码案例:

        @RequestMapping(value = "open", method = RequestMethod.GET)
        public void open(String id, String name, HttpServletResponse response) throws Exception {
            FileResource fileResource = resourceService.findOne(id);
            if (fileResource == null) {
                throw new MessageException(id+"文件不存在!");
            }
            String path = fileResource.getUrl();
            String fileName = fileResource.getFileName();
            if (StringUtils.isNotBlank(name)) {
                fileName = name;
            }
            response.reset();
            if (fileResource.getFileExt()!= null && fileResource.getFileExt().equalsIgnoreCase("pdf")) {
                response.setContentType("application/pdf");
            } else {
                response.setContentType("application/octet-stream");
            }
            response.addHeader("Content-Disposition","inline;filename="+ new String(fileName.getBytes("UTF-8"),"iso-8859-1"));
            response.addHeader("Content-Length", "" + fileResource.getFileSize());
            OutputStream out = new BufferedOutputStream(response.getOutputStream());
            fdfsService.downloadFile(path, out);
            out.flush();
            IOUtils.closeQuietly(out);
        }

    注意:

     

    1    pdf.js是不支持跨域文件加载的  直接加载是不会成功的。会报  “file origin doesnot match viewer”错误。 所以我们得改变一下源码

    把这句警告直接注释就行了

    2    file参数中默认只允许传简单路径比如:http://www.a.com/file.php.  如果你要浏览的pdf路径为http://www.a.com/file.php?id=2001。 这时候直接传入的话会解析出错, 因为pdf.js无法判断id=2001是viewer.html的参数呢还是file.php的参数

     这告诉我们 url必须进行encode编码  把参数file后传入的动态参数中特殊字符转义:

    这里又会有两种方法:

    encodeURI() 把字符串编码为 URI
    encodeURIComponent() 把字符串编码为 URI 组件

    发现        encodeURI不会对:/?&等uri中起分割作用的字符进行编码;

    encodeURIComponent则会。

    所以必须选择 encodeURIComponent 进行对url的编码
     

    :src="'static/web/viewer.html?file='+encodeURIComponent(pdfOpen+'?id='+pdfId+'&name='+encodeURIComponent(pdfName)+'&token='+token)"

     

    展开全文
  • vue框架使用pdf.js

    千次阅读 2018-07-21 14:06:52
    选取最新版本直接下载,顺便看看最近的更新日志,源码和dist版本一起下下来,用的时候碰到问题先翻源码是个好习惯。 dist版本只有build和web两个文件夹,build是插件的核心代码库,web是官方demo,主要的页面逻辑在...

    资源下载:pdfjs-releases

    选取最新版本直接下载,顺便看看最近的更新日志,源码和dist版本一起下下来,用的时候碰到问题先翻源码是个好习惯。
    dist版本只有build和web两个文件夹,build是插件的核心代码库,web是官方demo,主要的页面逻辑在viewer.js里面。
    在这里可以按照个人需要,如果你的业务逻辑比较简单,可以直接引用build的pdf.js和pdf.worker.js,因为没有官方API,所以就根据demo来修改即可,这次我要实现的功能需要比较全面,所以直接拿web里面的demo来用了。

    业务需求:在一级页面点击按钮,弹窗显示PDF,同时要根据权限控制所有功能。
    开发环境:vue全家桶 + element ui。
    分析:官方的demo刚好符合我的业务需求实现,那就直接上iframe嵌入demo使用了。

    开撸

    弹窗直接使用el-dialog

    <template>
      <el-dialog title="title" :visible.sync="show" :fullscreen="true" v-loading="loading">
        <iframe
          style="width:100%;height:100%;"
          src="static/PDFViewer/web/viewer.html"
          ref="pdfViewr"
          allowfullscreen
          webkitallowfullscreen
        ></iframe>
      </el-dialog>
    </template>
    <script>
    export default {
      data () {
        return {
          params: {},
          show: false,
          loading: true
        }
      },
      methods: {
        open (params = {}) {
          this.isShow = true
          this.params = params
          this.init().then(response => {
            const frame = this.$refs.pdfViewr
            frame.onload = () => {
              frame.contentWindow.initPDF(response.file, response.power)
              this.loading = false
            }
          })
        },
        init () {
          return new Promise((resolve, reject) => {
            // 弹窗初始化逻辑
          }).catch(e => {
            // 错误处理
          })
        }
      }
    }
    </script>

    子组件定义打开弹窗的方法,让组件自己控制状态,外面不用关心组件内部逻辑,最多给个回调,当然用v-model来传flag也可以,但是组件要做多一些处理代码做双向绑定。
    插件就直接放在static/下面,作为一个静态资源使用。
    找了一下,官方demo的pdf路径定义在viewer.js里面,搜索DEFAULT_URL即可找到,把它删了,在后面重新定义这个参数,以便pdfjs能够按照传入参数的资源解析。(10067行到10177行是插件的初始化配置)
    注意DEFAULT_URL这个参数需要在viewer.js这个js加载之前定义好,否则会找不到参数然后报错。
    在入口文件viewer.html定义一个组件调用的方法,传入了文件和权限控制的阈值,这个方法里面将完成所有渲染pdf的初始化操作。

        <script>
          var initPDF = function (file, power) {
            // 这里判断file是不是URL来决定是直接赋值还是转换pdf.js来可以识别的文件流
            window.DEFAULT_URL = file
            // 按钮权限控制
            const { print, download } = power
            if (!print) {
              document.getElementById('print').style.display = 'none'
            }
            if (!downLoad) {
              document.getElementById('download').style.display = 'none'
            }
            // 最后加载核心初始化脚本
            var viewerjs = document.createElement('script')
            viewerjs.src = 'viewer.js'
            document.body.appendChild(viewerjs)
          }
        </script>

    以上就是简单的实现方法,有后续再来补充。

    后续0:在网上找pdf链接做测试的时候发现报了个错
    Exception: file origin does not match viewer
    定位了一下错误来源于viewer.js 的这几行代码

    1857      var viewerOrigin = new URL(window.location.href).origin || 'null';
    1858      if (HOSTED_VIEWER_ORIGINS.indexOf(viewerOrigin) >= 0) {
    1859        return;
    1860      }
    1861      var fileOrigin = new URL(file, window.location.href).origin;
    1862      if (fileOrigin !== viewerOrigin) {
    1863        throw new Error('file origin does not match viewer\'s');
    1864      }

    应该是检测到跨域了,直接干掉

    展开全文
  • 前言vue中简单使用vue-pdf预览pdf文件,解决打印预览乱码问题vue-pdf 使用安装npm install --save vue-pdf引入import pdf from "vue-pdf自定义封装pdf预览组件:visible.sync="pdfDialog":close-on-click-modal=...
  • 今天又听了一节课,吸收的没那么好,但也是有收获,一直想像看Android 源码那样,研究研究Vue源码,苦于不知道从何下手,听了这节课,大概知道应该从哪里入手了。 项目地址:https://github.com/vuejs/vue 迁出...
  • vue内使用pdf.js

    2021-05-14 13:31:21
    万万没想到我在这里遇到了我最大的一个坑,整整纠结了我一上午 下载的时候我没有选择下载(for old browsers)这个版本,而是下载了左边的版本 由于下错了版本,导致语法不兼容在iframe打开pdf文件时没法解析,于是...
  • VUE,PDF.js在线预览pdf

    千次阅读 2019-03-19 16:01:35
    VUE实现PDF.js的pdf文件在线预览 首先,要实现PDF在线预览功能,需要PDF.js或者PDFObject.js插件,PDF.js可以实现统计阅读进度,PDFObject.js只是显示用的(这里才用的是统计阅读进度的方式实现在线PDF预览)。 1....
  • Vue项目使用pdf.js

    千次阅读 2019-05-13 12:21:29
    前段时间有个支持在线学习功能的项目,有需要在线预览pdf格式课件的功能,我就想在线预览pdf多简单,因为大部分浏览器都支持打开pdf文件,所以直接放个iframe然后src是pdf文件的地址不就行了吗,so easy!...
  • springboot+vue整合pdf.js实现预览pdf

    千次阅读 2020-12-14 17:38:54
    前景回顾: 上一次说到使用浏览器自带的预览pdf功能所遗留的问题...这里推荐一个vue小demo,vue-pdf.js,我会以该demo为基础来实现预览pdf功能。 简单实现: 下载好pdf.js的源码,放到自己的项目中,打开viewer.html会
  • pdf 在线预览之 vue-pdf插件

    千次阅读 2019-09-29 13:21:28
    vue-pdf 支持到ie11npm安装:npm install --save vue-pdf 组件template: <div class="show-pdf"> <div> <pdf v-if="pdfSrc" :src="pdfSrc" :page="cur...
  • Vue.js权威指南 pdf

    2018-04-07 23:00:54
    如果你对Vue.js 基础知识感兴趣,如果你对源码解析感兴趣,如果你对Vue.js 2.0感兴趣,如果你对主流打包工具感兴趣,如果你对如何实践感兴趣,《Vue.js权威指南》都是一本不容错过的以示例代码为引导、知识涵盖全面...
  • 继上一节内容,我们将Vue复杂的挂载流程通过图解流程,代码分析的方式简单梳理了一遍,其中也讲到了模板编译的大致流程,然而在挂载的核心处,我们并没有分析模板编译后函数如何渲染为可视化的DOM节点。这一节,我们...
  • 教你阅读vue源码的正确姿势,看完就学废!

    千次阅读 多人点赞 2021-04-30 16:49:30
    简介一下个人阅读vue源码的姿势,有建议欢迎评论区补充哈~ 一、源码阅读姿势 1. 先整体 - 后细节 先弄清楚源码分为哪几个模块,整套流程是怎么将各个模块串起来的。 然后细化了解每个模块的核心原理。 2. 站在...
  • vue项目中预览pdf文件

    千次阅读 2019-05-09 13:42:59
    一、利用浏览器自带的预览pdf // [pdfUrl] 获取pdf地址 eg:http://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf <iframe ref="mainiframe" :src="pdfUrl" style="height:100%;width:100%...
  • 目前社区有很多 Vue.js 的源码解析文章,但是质量层次不齐,不够系统和全面,这本电子书的目标 是全方位细致深度解析 Vue.js 的实现原理,让同学们可以彻底掌握 Vue.js。 为了把 Vue.js 的源码讲明白,课程设计成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 880
精华内容 352
关键字:

vue源码解析pdf

vue 订阅