详解html实现在线预览word、excel、pdf等文件的功能「附代码」

背景

在Web开发中,有时需要实现在线预览各种文件的功能,如Word、Excel、PDF等。传统的做法是,先在服务器端将文件转换成HTML格式,然后在客户端以HTML的方式打开,这种方式虽然可行,但是需要服务器的大量计算资源,在大量文件上传的情况下,服务器压力会很大。这里介绍一种新的方式,即使用HTML5提供的object标签,让浏览器自己渲染文件,而不需要依赖服务器的转换。

技术方案

实现在线预览Word、Excel和PDF等文件的核心就是object标签,这个标签可以将不同种类的文件以嵌入方式呈现在HTML页面上。object标签如下:

<object data="文件路径" type="文件类型">

  <embed src="文件路径" type="文件类型"></embed>

</object>

其中,data属性指定文件路径,type属性指定文件类型。如果浏览器不支持object标签,那么就使用embed标签来替代渲染。

Word文件预览

如果要预览Word文件,需要使用微软提供的Office Web Viewer,该工具可以将Word、Excel、PowerPoint等各种文件转换成HTML格式,可以通过简单的URL就能访问。下面是一个使用object标签和Office Web Viewer预览Word文件的示例代码:

<object data="https://view.officeapps.live.com/op/view.aspx?src=http://example.com/example.docx" type="application/vnd.ms-word">

  <embed src="https://view.officeapps.live.com/op/view.aspx?src=http://example.com/example.docx" type="application/vnd.ms-word"></embed>

</object>

注意,为了安全起见,需要将src参数的值设置为一个绝对路径,否则可能会因为浏览器的安全限制无法访问资源。

Excel文件预览

如果要预览Excel文件,同样需要使用Office Web Viewer,只需要将类型参数修改成application/vnd.ms-excel即可。示例代码如下:

<object data="https://view.officeapps.live.com/op/view.aspx?src=http://example.com/example.xlsx" type="application/vnd.ms-excel">

  <embed src="https://view.officeapps.live.com/op/view.aspx?src=http://example.com/example.xlsx" type="application/vnd.ms-excel"></embed>

</object>

PDF文件预览

如果要预览PDF文件,可以使用pdf.js,这是一个由Mozilla开发的用于在浏览器中渲染PDF文件的JavaScript库。下面是一个使用object标签和pdf.js预览PDF文件的示例代码:

<object data="https://example.com/example.pdf" type="application/pdf">

  <embed src="https://example.com/example.pdf" type="application/pdf"></embed>

</object>

同时,还需要在页面中引用pdf.js库:

<script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>

其他文件预览

对于其他类型的文件,可以使用Google提供的Google Docs Viewer,大部分文件类型都能够通过这个工具进行预览,使用方式与Office Web Viewer类似,示例代码如下:

<object data="https://docs.google.com/viewer?url=http://example.com/example.zip" type="application/octet-stream">

  <embed src="https://docs.google.com/viewer?url=http://example.com/example.zip" type="application/octet-stream"></embed>

</object>

需要注意的是,Google Docs Viewer最多只能预览20MB大小的文件。

总结

使用HTML5提供的object标签,可以很方便地实现在线预览各种文件的功能,避免了服务器的大量计算,同时也减轻了服务器的压力。理解这种实现方式的原理,能够为Web开发者提供更多的解决方案。