首页 > 其他分享 >使用pdf.js渲染pdf文件,并修改iframe的样式

使用pdf.js渲染pdf文件,并修改iframe的样式

时间:2024-03-23 16:33:19浏览次数:21  
标签:style const iframeDocument js iframe pdf iframeBody

<template>
  <div v-loading="loading">
    <iframe :src="pdfUrl" :style="styles"
            style="border: none;width:100%"
            @load="setPdfStyle"   // load事件是在ifram完全加载完后的时期执行的函数ref="pdfContainer"></iframe>
  </div>
</template>

<script>

function fillPublicPath(path) {
    const serverPath = process.env.BASE_URL + path     return serverPath.replace('//', '/')   }
export default {
  name: 'DocxPdfRender',
  computed: {
    styles() {
      let style = {}
      if (this.minHeight) {
        style.minHeight = `${this.minHeight}px`
      }
      if (this.height) {
        style.height = `${this.height}px`
      }
      return style
    }
  },
  data() {
    return {
      pdfUrl: undefined,
      loading: false
    }
  },
 mounted(){
  this.getPdfUrl()
 }, methods: { getPdfUrl() { const urlPath = fillPublicPath('/static/plugins/pdf/web/viewer.html') const urlCode = encodeURIComponent(this.url) this.pdfUrl = `${urlPath}?file=${urlCode}&source=detail` }, setPdfStyle() { // 在此时期才能获取到正确的iframe,nextTick时期获取到的iframe是空iframe,修改空iframe是生效不了的 const iframe = this.$refs.pdfContainer // 获取ref const iframeDocument = iframe.contentDocument || iframe.contentWindow.document // 获取document才能对获取该文档下的所有元素 const iframeBody = iframeDocument.getElementsByTagName('body')[0] if (iframeBody) { iframeBody.style.backgroundColor = 'transparent' iframeBody.style.backgroundImage = 'none' const iframeToolbar = iframeDocument.getElementsByClassName('toolbar')[0] if (iframeToolbar) { iframeToolbar.style.display = 'none' } const iframeViewerContainer = iframeDocument.getElementById('viewerContainer') // 通过id则非数组 if (iframeViewerContainer) { iframeViewerContainer.style.top = '0' } } } } } </script>

 

标签:style,const,iframeDocument,js,iframe,pdf,iframeBody
From: https://www.cnblogs.com/LylePark/p/18091275

相关文章

  • 基于ssm+vue.js的游戏销售系统附带文章和源代码设计说明文档ppt
    文章目录前言详细视频演示具体实现截图技术栈后端框架SSM前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于ssm+vue.js的中学课内小说阅读与学习系统附带文章和源代码设计说明文档ppt
    文章目录前言详细视频演示具体实现截图技术栈![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/26c90735e94d4c69bdcaca3dff0c2d21.png)后端框架SSM前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参......
  • 基于ssm+vue.js的网络音乐系统附带文章和源代码设计说明文档ppt
    文章目录前言详细视频演示具体实现截图技术栈后端框架SSM前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • Python常用模块(random随机模块&json序列化模块)
    1.random随机模块返回两数之间的随机数,不包括尾数:random.randrange()importrandomprint(random.randrange(1,10))#3返回两数之间的随机数,包括尾数:random.randint()importrandomprint(random.randint(1,10))#返回1-10之间的一个随机数,包括10#7随机选取0到100间......
  • 文件上传一-WEB攻防-PHP应用&文件上传&函数缺陷&条件竞争&二次渲染&黑白名单&JS绕过9
    演示案例:PHP-原生态-文件上传-前后端验证PHP-原生态-文件上传-类型文件头验证PHP-原生态-文件上传-后缀黑白名单验证PHP-原生态-文件上传-解析配置&二次渲染PHP-原生态-文件上传-逻辑缺陷&函数缺陷#学习前必读:1、课前一定要明白:无文件解析安全问题上,格式解析是一......
  • 奇客PDF评论:优点、缺点和个人的结论
    作为一个在职业中接触大量PDF文档的人,PDF编辑器对我来说是基本必需品。我希望我的PDF编辑器使用起来非常简单,同时还提供普通的编辑和转换功能。我对功能足够强大、又不失简单性的PDF编辑器的追求最初让我想到了奇客PDF。在过去的1年里我一直在使用奇客PDF,并且一直发现它......
  • Java中使用fastJson
     FastJson简介Fastjson是阿里巴巴开发的一个开源Java库,用于处理JSON数据,广泛应用于Web服务、API接口、数据交换等多个场景。FastJson的作用主要作用是用于将Java对象转换为JSON格式,或将JSON字符串转换为Java对象。它可以操作任何Java对象。主要特性有:.a.高性能:采......
  • 我用 Nextjs 十分钟搭建了一个展示955公司网站
    前言打工人终极梦想就是能够955吧!一年之前看到过955公司名单,最近偶然又看到一篇955不加班的公司名单推文,发现名单上的公司大都是外企,而且相比一年之前又少了几个。于是想将目前还在榜955名单上的公司记录在网站上,一是方便随时查看,二是想看有哪些公司会在什么时候下线,也一......
  • 【React】使用 JSX 为 JavaScript 添加标签
    使用JSX为JavaScript添加标签实际上是将JSX语法与JavaScript代码结合使用,以描述用户界面。JSX允许你在JavaScript中编写类似HTML的结构,并最终由React库将其转换为真正的DOM元素。以下是将标签引入JavaScript以及将HTML转化为JSX的步骤和JSX的一些基本......
  • node.js是什么怎么用常用方法
    什么是node.jsNode.js是一个基于ChromeV8JavaScript引擎的服务器端运行环境。它允许使用JavaScript来开发高性能的网络应用程序。Node.js采用事件驱动、非阻塞式I/O模型,使其能够处理大量并发请求而不会出现阻塞。Node.js最初是由RyanDahl于2009年创建的,旨在使JavaScrip......