html 在线打开pdf文件,Html打开pdf、word、xls等文件_写手一条城的博客-程序员秘密

技术标签: html 在线打开pdf文件  

1、前端实现pdf文件在线预览功能

方式一、pdf文件理论上可以在浏览器直接打开预览但是需要打开新页面。在仅仅是预览pdf文件且UI要求不高的情况下可以直接通过a标签href属性实现预览

方式二、通过jquery插件jquery.media.js实现 这个插件可以实现pdf预览功能(包括其他各种媒体文件)但是对word等类型的文件无能为力。 实现方式: js代码:

html结构:

调用方式:

$('#handout_wrap_inner').media({

width: '100%',

height: '100%',

autoplay: true,

src:'http://storage.xuetangx.com/public_assets/xuetangx/PDF/PlayerAPI_v1.0.6.pdf',

});

方式三、直接通过页面内嵌iframe

$("").appendTo($(".video-handouts-preview"));

此外还可以在iframe标签之间提供一个提示类似这样

This browser does not support PDFs. Please download the PDF to view it: Download PDF

方式四、通过标签嵌入内容

此标签h5特性中包含四个属性:高、宽、类型、预览文件src! 与< iframe > < / iframe > 不同,这个标签是自闭合的的,也就是说如果浏览器不支持PDF的嵌入,那么这个标签的内容什么都看不到!

方式五、标签和iframe使用差别较小

This browser does not support PDFs. Please download the PDF to view it: Download PDF

除方式二以外其他都是直接通过标签将内容引入页面实现预览

方式六、PDFObject

PDFObject实际上也是通过标签实现的直接上代码

Show PDF

html,body,#pdf_viewer{

width: 100%;

height: 100%;

margin: 0;

padding: 0;

}

if(PDFObject.supportsPDFs){

// PDF嵌入到网页

PDFObject.embed("index.pdf", "#pdf_viewer" );

} else {

location.href = "/canvas";

}

复制代码

还可以通过以下代码进行判断是否支持PDFObject预览

if(PDFObject.supportsPDFs){

console.log("Yay, this browser supports inline PDFs.");

} else {

console.log("Boo, inline PDFs are not supported by this browser");

}

方式七、PDF.js

PDF.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件,非常强大,能将PDF文件渲染成Canvas。PDF.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,一个负责API解析,一个负责核心解析。

2、word、xls、ppt文件在线预览功能

word、ppt、xls文件实现在线预览的方式比较简单可以直接通过调用微软的在线预览功能实现 (预览前提:资源必须是公共可访问的)

src就是要实现预览的文件地址 具体文档看这微软接口文档

补充:google的文档在线预览实现同微软(资源必须是公共可访问的)

3、word文件

XDOC可以实现预览以DataURI表示的DOC文档,此外XDOC还可以实现文本、带参数文本、html文本、json文本、公文等在线预览,具体实现方法请看官方文档

下面这种方式可以实现快速预览word但是对文件使用的编辑器可能会有一些限制

XDOC

4、excel文件

目前excel文件已经有了类似pdf.js那样的解析sheet.js

总结:

1、免费纯前端方式实现在线预览word、excel、ppt最优选择微软在线预览(不可编辑)

2、利用后端将文件转为图片,前端以图片形式预览(可行方案)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_32244597/article/details/117720846

智能推荐

指定MessageBox所属父窗口(使用AfxGetMainWnd())_父级 messagebox_春夜喜雨的博客-程序员秘密

参考:MSDN在一些情况里:例如 回掉函数 中,我们可能不知道所属的父窗口:int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);  当hWnd使用NULL的时候:If this parameter is NULL, the message box h

CMake学习笔记_AI吃大瓜的博客-程序员秘密

Cmake构建项目:项目结构:https://github.com/PanJinquan/opencv-learning-tutorials/tree/master/cmakeDemo根目录CmakeLists.txt:cmake_minimum_required(VERSION 3.5)# 参考资料:# http://www.hahack.com/codes/cmake/# https://blog.csdn.net/weicao1990/article/details/72844

U盘安装Win7操作系统_Destiny_Demo的博客-程序员秘密

玩转Windows7系统镜像四部曲Step 1: 下载Win7 ISO系统镜像温馨提示:请您尽量选用Win7之家​提供的官方原版镜像安装,因为正版比各种所谓的“精简版、纯净版”等修改过的系统更安全!那么该如何选择32位和64位呢?如果您内存小于4GB,一般选择32位版;如果内存大于4GB,则选择64位版。Windows 7 With SP1 32位简体中文旗舰版

python numpy常用函数_sinat_33700790的博客-程序员秘密

一、数组方法创建数组:arange()创建一维数组;array()创建一维或多维数组,其参数是类似于数组的对象,如列表等反过来转换则可以使用numpy.ndarray.tolist()函数,如a.tolist()创建数组:np.zeros((2,3)),或者np.ones((2,3)),参数是一个元组分别表示行数和列数对应元素相乘,a * b,得到一个新的矩阵,形状要一致;但是允许a是向量...

jquery ui中 accordion的问题及我的解决方法_chen_xizhang的博客-程序员秘密

jquery有一套所谓的ui组件,很不错的。如果有兴趣的朋友,可以参考http://jqueryui.com/ 但其中的accordion,我使用的时候发现一些问题。如果按照demo那样,写一些静态内容,倒也正常。但如果每个面板里面的内容是动态绑定的,则会发生高度变小,然后出现滚动条的诡异现象   li.formli { list-style-type: none; width

随便推点

Centos7.6部署.net 6.0webApi服务和C++ so库_Chasmれ的博客-程序员秘密

windows为 public const string DLL = "ChannelModelDLL.dll"如图,linux为 public const string DLL = "libChannelModel.so";其他注意事项,如图,文件地址用反斜杠。访问接口查看,测试显示成功。安装.net6.0sdk。使更改的环境变量生效。执行webApi服务。

Jupyter kernel 报错: ModuleNotFoundError: No module named 'win32api'_椰汁菠萝的博客-程序员秘密

开发环境: Anaconda + Jupyter notebook windows 下开发,运行报错ModuleNotFoundError: No module named 'win32api'需要安装pypiwin32pip install pypiwin32如果安装过慢或下载失败,可以使用国内镜像pip install -i http://pypi.douban.co...

linux启动spark命令,在linux上安装spark_貔蚯的博客-程序员秘密

第一、通过xftp工具将spark安装包上传到linux上第二、解压spark到指定目录:tar -zxf /opt/software/spark-2.1.0-bin-hadoop2.7.tgz -C /opt/module/第三、配置1、在spark安装路径配置spark-env.sh,我的路径是/opt/module/spark-2.1.0-bin-hadoop2.7/conf输入命令:vi ...

nginx php-frm,docker配置nginx+php各种坑_黄羽明的博客-程序员秘密

docker部署nginx+php的介绍很多,我也是安装上面的来部署,发现各种坑,在这给列举下,供大家参考。1、安装好docker的nignx 和php2、修改nginx.conf配置,加上php解析其中location ~ .php$ {include fastcgi_params;fastcgi_param SCRIPT_FILENAME documentrootdocument_rootdo...

动态库dll加载_chenchenlin0811的博客-程序员秘密

Windows DLL基本原理Windows系统平台上,你可以将独立的程序模块创建为较小的DLL(Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。Microsoft

Linux 中对 SSD 的优化 Discard,类 TRIM 的功能_choucankua9416的博客-程序员秘密

我现在使用的是一个三星的 SSD的硬盘.SSD有一个通用的问题,就是使用久了,会变慢,因为一些 SSD本身的设计问题.详细原因各位 google 一下. 我们知道,常用的解决方法是 win7 支持的 TRIM .在 Linux 以前一直没有很好的解决方法,当然,因为 ext* 的...

推荐文章

热门文章

相关标签