常见文件预览实现

2023-11-12

一:word文档预览

1:使用文档预览服务预览

  • 使用微软链接:https://view.officeapps.live.com/op/view.aspx?src=文档http地址
  • 使用XDOC链接:http://view.xdocin.com/xdoc?_xdoc=文档http地址

(1):HTML

<iframe src="" frameborder="0" id='word'></iframe>

(2):JS

var url = 'http://XXXX';
//微软的链接:文件地址得是公网的
let wordUrl = "https://view.officeapps.live.com/op/view.aspx?src=" + url;
//XDOC的链接:文件地址可以是非公网
var wordUrl='http://view.xdocin.com/xdoc?_xdoc=' + url;

// js写法
var url = document.getElementById('word');
url.src = wordUrl;
// jquery写法
$("#word").attr('src',wordUrl);

注意:

提示:because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'frame-src' was not explicitly set, so 'default-src' is used as a fallback.

解决方案:修改html的head部分的meta

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content: https://*; media-src * blob: 'self' http://* 'unsafe-inline' 'unsafe-eval'; style-src * 'self' 'unsafe-inline'; img-src * 'self' data: content:; connect-src * blob:;">

2:使用vue-office/docx预览

(1):安装

npm install @vue-office/docx vue-demi

(2):引入

import VueOfficeDocx from "@vue-office/docx";

(3):使用

 <vue-office-docx
     :src="文档地址"
     @rendered="rendered"//word加载结束的事件
/>

3:使用mammoth.browser.js预览

(1):JS引入

<script src="https://cdn.bootcss.com/mammoth/1.4.8/mammoth.browser.js"></script>

(2):HTML

<iframe src="" frameborder="0" id="container"></iframe>

(3):JS

var xhr = new XMLHttpRequest();
xhr.open(
        "GET",
        `文档地址`
);
        xhr.responseType = "arraybuffer";
        xhr.send()
        xhr.onload = function (e) {
            console.log(xhr.response);
            let content = xhr.response;
            let blob = new Blob([content], {
                type: "application/docx"
            });
            let reader = new FileReader();
            reader.readAsArrayBuffer(blob);
            reader.onload = function (loadEvent) {
                var arrayBuffer = xhr.response; //arrayBuffer
                mammoth
                .convertToHtml({
                    arrayBuffer: arrayBuffer
                })
                .then(displayResult)
                .done();
        };
        function displayResult(result) {
            document.getElementById("container").innerHTML = result.value;
        }
};

注意:mammoth.browser.js只可预览后缀为docx的文件且是将文件转化为html形式展示

二:PDF文档预览

1:使用iframe预览

<iframe src="文档地址" frameborder="0"></iframe>

2:使用vue-pdf预览

(1):安装

npm install vue-pdf

(2):引入

import pdf from "vue-pdf";

(3):使用

<pdf v-for="i in numPages" :key="i" :src="viewUrl" :page="i"></pdf>
data() {
  return {
    // 当前页数
    numPages: 1,
    // 预览路径
    viewUrl:"文档地址",
  };
},
mounted() {
  this.getNumPages();
},
methods: {
  async getNumPages() {
    let loadingTask = pdf.createLoadingTask(this.viewUrl);
    loadingTask.promise
      .then((pdf) => {
        this.numPages = pdf.numPages;
    })
    .catch(() => {
      console.error("pdf加载失败");
    });
  },
}

3:使用vue-pdf-embed预览

(1):安装

npm install vue-pdf-embed

(2):引入

import VuePdfEmbed from "vue-pdf-embed/dist/vue2-pdf-embed";

(3):使用

<vue-pdf-embed :source="文档地址"></vue-pdf-embed>

4:使用pdfh5.js预览

(1):引入

pdfh5.js下载地址:

链接:https://pan.baidu.com/s/1gTWUCe7xt3om14lU3g1GjQ 
提取码:yune

// 引入css
<link rel="stylesheet" href="pdf/pdfh5.css">
// 引入js
<script src="pdf/pdf.js"></script>
<script src="pdf/pdf.worker.js"></script>
<script src="pdf/pdfh5.js"></script>

(2):HTML

<div id="demo"></div>

(3):JS

var pdfh5 = new Pdfh5('#demo', {
        pdfurl: '文档地址'
});

三:txt文档预览

1:使用textarea实现预览

(1):读取txt内容

let xhr = new XMLHttpRequest();
xhr.open("get", '文档地址', true);
xhr.responseType = "blob";
xhr.onload = (e) => {
    if (e.currentTarget.status == 200) {
        const reader = new FileReader();
        reader.readAsText(e.currentTarget.response);//非常重要
        reader.onload = () => {
            txtContain = reader.result;
        };
    }
};
xhr.send();

(2):预览HTML

<textarea :value="txtContain" readonly></textarea>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见文件预览实现 的相关文章

随机推荐

  • pyautogui快捷键自动点击

    一个小玩意 本意是知云翻译完可以更方便地读出单词 Path是要识别的按钮的图片 import pyautogui import keyboard def Nonetype return None if name main Path D sp
  • linux设备驱动入门1

    一 如何让驱动程序运行起来 1 1 linux中驱动程序和应用程序的区别 linux系统中驱动程序运行在内核空间而应用程序运行在用户空间 他们之间有着很多的不同之处 应用程序是无后缀的 而驱动程序是带后缀 ko 比如hello ko是驱动成
  • js向对象中添加元素(对象,数组)

    一 添加一个元素 对象名 属性名 值 值 可以是一个值 可以是一个对象 也可以是一个数组 这样添加进去的元素 就是一个值 或 对象 或 数组 var obj name leo console log obj obj age 16 conso
  • 错误排查

    1 报错以后 错误要从后面的错误往前读 2 标签别写错了 3 resource绑定mapper 路径要写 4 程序配置文件必须符合规范 5 NullPointerException 没有注册到资源 6 输出的xml文件中存在中文乱码问题 7
  • 使用两个栈实现一个队列

    使用两个栈实现一个队列 栈的特点 后进先出 队列的特点 先进先出 那么如何用两个栈实现一个队列呢 我们可以将两个栈进行拼接 一个当做队头 一个当做队伍 例如下面的例子 由上图我们可以看到 stack1中入栈的顺序是4 3 2 1 其中 4
  • C++:删除map元素,当value值为指针时,如何释放内存。

    class A map lt string A gt stoaMap 1 通过迭代器遍历删除 map lt string A gt iterator iter stoaMap begin while iter stoaMap end 1 注
  • c++第十五课--set/multiset的简介

    1 set是一个集合容器 其中所包含的元素是唯一的 集合中的元素按一定的顺序排列 元素插入过程是按排序规则插入 所以不能指定插入位置 2 set采用红黑树变体的数据结构实现 红黑树属于平衡二叉树 在插入操作和删除操作上比vector快 3
  • html项目开发过程中遇到的问题(1)

    1 hgroup标签 该标签主要针对各个标题进行组合 多用在header导航栏标题中 2 section标签 该标签定义页眉页脚 或页面中的其他部分 通常与标签article连用 3 clearfix与 clear after 1 clea
  • tomcat+nginx实现项目部署

    本文主要讲述的项目部署方面的一些基础知识 tomcat nginx的环境 nginx是常用的web服务器 用于获取静态资源 类似的服务器还有apache tomcat是基于java servlet 的 web 容器 用于获取动态资源 一般的
  • 首家!亚信科技AntDB数据库完成中国信通院数据库迁移工具专项测试

    近日 在中国信通院 可信数据库 数据库迁移工具专项测试中 湖南亚信安慧科技有限公司 简称 亚信安慧科技 数据库数据同步平台V2 1产品依据 数据库迁移工具能力要求 结合亚信科技AntDB分布式关系型数据库产品 成为首款完成标准所规定的测试产
  • java如何开启远程调试服务端口_java – 是否可以在JSVC中启用端口进行远程调试?...

    我正在运行一个jsvc应用程序 它工作得很好 但现在我需要在我的应用程序上启用一个端口 以便我可以进行远程调试 我正在使用 java执行上述任务 这是添加jsvc参数的代码 private List getJSVCArgs List jsv
  • 作为科技迷,你必须要了解的乐高机器人常识!

    Source by Fans 主要材料 乐高机器人常识 所需工具 乐高机器人常识 制作步骤 第1步 从今天起 给大家盘点一下主流的机器人开发套件 谈及机器人套件 乐高是回避不掉的 既然这样 那我们索性从乐高机器人套件开始说起 第2步 乐高
  • 网络***实用战术手册(UNIX)

    摘要 一个系统有很多步骤 阶段性很强的 工作 其最终的目标是获得超级用户权限 对目标系统的绝对控制 从对该系统一无所知开始 我们利用其提供的各种网络服务收集关于它的信息 这些信息暴露出系统的安全脆弱性或潜在入口 然后我们利用这些网络服务固有
  • 基于正点原子STM32F103ZET6工程文件修改成C8T6工程文件

    1 打开一个正点原子的工程 点击魔术棒 2 修改芯片型号为STM32F103C8 3 修改宏定义ZET6是大容量产品用的是STM32F10X HD C8T6是中容量产品 用的是STM32F10X MD 3 更换启动文件将startup st
  • [Vue3+Element-Plus]点击列表中的图片预览时,图片被表格覆盖问题

    问题复现 源代码段
  • matlab simulink 模糊PID控制空调系统温度

    1 内容简介 略 630 可以交流 咨询 答疑 2 内容说明 随着社会不断的发展 能源问题表现的日益突出 因此 节能变得尤其重要 而现 在随着人们物质水平的提高 对中央空调系统的要求也随之提高 希望在耗能最低的情 况下 保持室内合适的温度和
  • 3-Spring笔记

    Spring容器介绍 简介 Spring是一个开源免费的框架 容器 Spring是一个针对bean的生命周期进行管理的轻量级的框架 非侵入式的 控制反转 IoC 面向切面 Aop 对事物的支持 对框架的支持 解决企业应用开发的复杂性 Spr
  • C语言实现离散傅里叶变换DFT

    离散傅里叶变换DFT的计算公式如下 关于对DFT的详细讨论 请阅读前一篇博客基于matlab的FFT分析 include
  • 蓝桥杯C/C++省赛:排它平方数

    目录 题目描述 思路分析 AC代码 题目描述 小明正看着 203879 这个数字发呆 原来 203879 203879 41566646641 这有什么神奇呢 仔细观察 203879 是个6位数 并且它的每个数上的数字都是不同的 并且它平方
  • 常见文件预览实现

    一 word文档预览 1 使用文档预览服务预览 使用微软链接 https view officeapps live com op view aspx src 文档http地址 使用XDOC链接 http view xdocin com xd