首页 > 其他分享 >去除iframe下载和打印

去除iframe下载和打印

时间:2023-11-03 14:13:13浏览次数:28  
标签:flex center 打印 width iframe 去除 type String

最近项目开发中,有需求提出去除浏览器浏览PDF时的打印和下载按钮,网上查询后,大多是使用了第三方插件pdf.js,而本人也是用此插件实现了。

但是甲方还是希望保持浏览器自带的浏览,于是我又想办法进行处理,最终从元素覆盖 下载和打印 按钮 的方式来进行处理。

基本思路:使用定位覆盖 + 根据浏览器中的工具栏布局,自己在写一套覆盖到上面,这样网页改变时,同样能做到自适应 +  load事件监听,可添加loading层优化体验

<template>
    <div class="pdfcontainer">
        <div class="toolbar" v-if="toolShow && type=='pdf'">
            <div class="start"></div>
            <div class="center"></div>
            <div class="end"></div>
        </div>
        <iframe :id="id" style="width: 100%;height: 100%;" :src="src"></iframe>
    </div>
</template>
<script>
export default {
    name: "PdfIframe",
    props: {
        src: {
            type: String,
            default: ""
        }, 
        id: {
            type: String,
            deafault: "myiframe"
        },
        type: {
            type: String,
            default: "web"
        }
    },
    data(){
        return {
            toolShow: false
        }
    },
    mounted(){
        let iframe = document.getElementById(this.id)
        iframe.addEventListener("load", this.iframLoaded)
    },
    methods: {
        iframLoaded(){
            this.toolShow = true
            this.$emit("onload")
        }
    },
    beforeDestroy(){
        let iframe = document.getElementById(this.id)
        iframe.removeEventListener("load", this.iframLoaded)
    }

}
</script>
<style scoped>
.pdfcontainer{
    position: relative;
}
.toolbar{
    display: flex;
    padding: 0 16px;
    width: 100%;
    height: 45px;
    position: absolute;
    left: 0;
    top: 5px;
    pointer-events: none;
}
.start{
    flex: 1;
}
.center{
    width: 289px;
}
.end{
    flex: 1;
    pointer-events: all;
    background: #323639;
}
@media (max-width: 600px){ 
    .center{
        width: 240px;
    }
}
@media (max-width: 530px){ 
    .start {
        display: none;
    }
    .center{
        width: 190px;
    }
}
@media (max-width: 420px){
    .start, .center {
        display: none;
    }
}
</style>

 

标签:flex,center,打印,width,iframe,去除,type,String
From: https://www.cnblogs.com/zeosky-zhe/p/17807463.html

相关文章

  • 水仙花数的打印(仅个人探索)
             详解在代码中已标示,数据范围可更改            //自己摸索的水仙花数(φ(◎ロ◎;)φ)#include<tgmath.h>#include<math.h>intmain(){ intsum=0; inti=0;//floor为向下取整符号,对数函数算出的指数即位数减一 头......
  • 使用Chrome的Element Inspector在打印预览模式下?
    内容来自DOChttps://q.houxu6.top/?s=使用Chrome的ElementInspector在打印预览模式下?我正在开发一个网站,需要在打印预览模式下进行工作。通常,当我遇到布局问题时,我会使用Chrome的ElementInspector。然而,在打印预览模式下并不存在ElementInspector。是否有Chrome插件或其......
  • c++ 程序打印 core dump 信息
    linux环境下c++程序打印coredump信息linux信号机制c++打印堆栈信息#include<signal.h>#include<execinfo.h>#include<dlfcn.h>#include<cxxabi.h>#include<QFile>#include<QTextStream>//捕获信号,对于这些信号都执行coreDumpHandlesignal(SIG......
  • 去除WinForm程序中的Devexpress弹窗
    去除WinForm程序中的Devexpress弹窗///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){if(!CheckInstance()){Application.Exit();......
  • WSD、USB 和 TCP/IP 端口是连接和使用打印机的三种不同方法
    WSD、USB和TCP/IP端口是连接和使用打印机的三种不同方法,各自的特点如下:WSD(WebServicesonDevices)端口:WSD是一种基于网络的打印服务,允许计算机和打印机在局域网中通过网络发现彼此。它使用的是一种标准的网络协议,支持动态设备发现和配置。通常用于无线和有线的网络打......
  • vue3 google浏览器格式化控制台打印的数据
    ......
  • for语句练习(打印1-10)
    #include<stdio.h>#include<stdlib.h>intmain(){  inti=0;  for(i=1;i<=10;i++)//i=1为初始化部分;i<=10为判断部分;i++为调整部分  {    printf("%d",i);  }  return0;}......
  • for语句与while语句对比(打印1-10)(加入continue)
    //for#include<stdio.h>intmain(){  inti=0;  for(i=1;i<=10;i++)  {    if(i==5)      continue;    printf("%d",i);  }  return0;}//结果为1234 678910//while#include<stdio.h>intmain(){ ......
  • do...while循环语句练习(打印1-10)
    #include<stdio.h>intmain(){  inti=1;  do         //do表示将数字带入入口  {    printf("%d",i);//在此打印    i++;  }  while(i<=10);   //满足该条件进行循环打印  return0;}......
  • 如何去除水印?3款简单实用的手机去水印软件推荐
    你有没有拍了一些特别好看的照片或者视频,然后却发现它们被水印搞得一团糟?这种感觉真是让人崩溃!别着急我这就告诉你一个超简单的方法!今天我给大家推荐几款超级简单好用的手机去水印软件,让你在几分钟内轻松搞定如何去除水印的问题。而且,就算是小白或者新手,也能够轻松操作哦!以下是几款......