常见文件预览实现

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(使用前将#替换为@)

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

  • 页面加载时输入触发的 jQuery 更改事件

    为什么是下面这个JQuery当文档在浏览器中准备就绪时触发事件运行 我的经验很少JQuery所以我有点坚持这个
  • 为具有可变内容的内联块元素提供相同的高度?

    我有 4 个宽度固定但内容可变的内联块元素 并且我希望所有这些元素具有相同的高度 最大元素的高度 请参见这个jsfiddle http jsfiddle net kKZXj 我应该如何实现这个目标 如果仅使用 css 无法做到这一点 那么使
  • 大小相同的表格单元格填充包含表格的整个宽度

    有没有办法使用 HTML CSS 具有相对大小调整 使一行单元格拉伸其所在表格的整个宽度 单元格的宽度应该相等 并且外表的大小也是动态的 table width 100 目前如果我不指定固定大小 单元格只是自动调整大小以适应其内容 您甚至不
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 禁用 Materialise Carousel 上的触摸

    看起来以前没有人问过这个问题 因为我几乎在互联网上寻找一个非常简单的答案 如何禁用在物化轮播上向左 向右滑动的功能 在 Materialize js 添加 编辑 var allowCarouselDrag true value functi
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css
  • pdf文件文本阅读和搜索

    我想从 pdf 文件中读取文本并将文本搜索到 pdf 文件中 这是我知道的链接 这些都帮不了我 使用 Quartz 2D 解析 pdf 时获取文本位置 https stackoverflow com questions 3627745 ge
  • 自动更改时 onChange 事件不起作用

    我在一个选择框 usageDisplays 上有一个 onChange 事件 它根据第一个选择框的选定值填充下一个选择框
  • 回显 HTML 并内置 PHP

    请帮助我使用 echo 与 HTML 和 PHP 使用数组范围将其转换为动态
  • 页面其余部分完成加载后延迟加载 html5 视频

    我有一个视频元素用作我正在构建的页面底部部分的背景 我试图通过将 src 存储为 data src 属性并使用 jQuery 在其他资源加载后将其应用到 src 属性 因为它不是英雄图像或任何东西 我想加载海报以节省加载时间 然后稍后加载视
  • 使用 Jquery 更改 css 属性时的事件检测

    有没有办法检测元素的 显示 css 属性是否更改 是否更改为无 块或内联块 如果没有的话有什么插件吗 谢谢 Note 突变事件 https developer mozilla org en US docs Web Guide Events
  • 在 JavaScript 中引用 C# 变量

    我已经阅读了很多线程 但我不明白为什么这不起作用 我正在创建一个将用作导航栏的 SharePoint Web 部件 一切都很顺利 直到我尝试在 JS 代码中引用 C 变量 这是来自 VisualWebPart1UserControl asc
  • JQuery - 如何检测给定 div 中存在给定类的 div 数量?

    我有一个这样的div div class x div 并包含在这个 div 中 我有几个像这样的 div div class y div div class y div div class y div etc 问题1 如何检测容器 div
  • 如何链接到具有特定经度和纬度的 Google 地图?

    我有一个小应用程序 可以提供当前位置 经度和纬度 现在我必须浏览带有经度和纬度的谷歌地图 请建议我如何做到这一点 最好的方法是使用q参数 以便显示带有标记点的地图 例如 https maps google com q
  • 使用数学符号注释 Adob​​e Reader PDF

    我阅读的许多数学教科书和其他文献都是 PDF 格式 因此我经常使用 Adob e Reader 注释工具对它们进行注释 我确实找到了一个有用的指南 http cjasn asnjournals org site misc annotatin
  • 如何使表格单元格的最小宽度为 3 位数字?

    如何使表格中的每个单元格的最小宽度为 3 位数字且不会更大 现在我正在硬编码min width 但我不喜欢硬编码一个值 因为我将来可能想更改字体 如果需要Javascript也没关系 table border 1 tr td 1 td td
  • 将水平线添加到 html rmarkdown 文档隐藏文本部分

    我正在制作一个与 HTML 页面结合的 Rmarkdown 文档 我不想用标题或项目符号分隔某些文本部分 而是想在它们之间绘制水平线 根据http rmarkdown rstudio com authoring basics html ht
  • html 下钻下拉所选值未插入 MYSQL

    我有两个下拉列表 首先从数据库下拉填充 根据第一个下拉列表的选定值从数据库填充第二个下拉列表 document ready function c change function var c1 c selected text if c1 aj
  • 将隐藏(生物识别)数据附加到 pdf 上的数字签名

    我想知道是否可以使用 iText 我用于签名 或 Java 中的其他工具在 pdf 上添加生物识别数据 我会更好地解释一下 在手写板上签名时 我会收集签名信息 例如笔压 签名速度等 我想将这些信息 java中的变量 与pdf上的签名一起存储

随机推荐

  • 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