如何使用JavaScript在浏览器中呈现Word文档(.doc,.docx)?

Pan*_*kaj 120 javascript browser ms-word

我已成功完成代码以在浏览器中显示PDF文件,而不是"打开/保存"对话框.现在,我一直试图在浏览器中显示Word文档.我想在Firefox,IE7 +,Chrome等中显示Word文档.

任何人都可以帮忙吗?在浏览器中显示Word文档时,我总是收到"打开/保存"对话框.我想使用JavaScript实现此功能.

Bra*_*ldi 198

目前没有浏览器具有呈现Word文档所需的代码,据我所知,目前还没有用于呈现它们的客户端库.

但是,如果您只需要显示Word文档,但不需要对其进行编辑,则可以通过<iframe>a 使用Google文档查看器来显示远程托管.doc/.docx.

<iframe src="https://docs.google.com/gview?url=http://remote.url.tld/path/to/document.doc&embedded=true"></iframe>
Run Code Online (Sandbox Code Playgroud)

解决方案改编自" 如何使用fancybox显示word文档 ".

例:

的jsfiddle

但是,如果您更喜欢本机支持,在大多数情况下,如果不是所有浏览器,我建议将.doc/ 重新保存.docx为PDF文件.这些也可以使用Mozilla的PDF.js独立呈现.

编辑:

非常感谢fatbotdesigns在评论中发布Microsoft Office 365查看器.

<iframe src='https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' width='1366px' height='623px' frameborder='0'>This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank' href='http://office.com/webapps'>Office Online</a>.</iframe>
Run Code Online (Sandbox Code Playgroud)

正如lightswitch05所指出的,要记住的另一个重要警告是,这会将您的文档上传到第三方服务器.如果这是不可接受的,那么这种显示方法不是正确的行动方案.

实例:

Google文档查看器

Microsoft Office Viewer

  • 只是想指出这两种方法都肯定会将文件上传到Google和Microsoft的服务器.如果您正在处理应该限制访问的敏感信息,请不要这样做.使用PDF.js的替代解决方案生成要在浏览器中查看的文件的PDF版本,并提供下载各种excel/doc版本的链接. (12认同)
  • 您还可以使用office live apps viewer://view.officeapps.live.com/op/embed.aspx?src=your_url_here将此网址放入iframe (9认同)
  • @Pankaj即使您正在托管本地服务器,Google也无法访问`localhost`.它需要一个可公开访问的URL.您可以使用[Finch](https://meetfinch.com/)等基本转发服务. (3认同)
  • @lightswitch05 嘿,只是偶然发现了这一点,我在阅读您的评论后查看了 pdf.js,但找不到任何有关将 doc / xls 文件转换为 pdf 以在浏览器中显示它们的文档,这到底是如何工作的? (3认同)
  • @Pankaj您无需将其上传到Google云端硬盘.您只需将`url`参数更改为.doc文件的完整URL,该文件可以托管在您的服务器上,也可以更改为可以直接链接到的任何位置.Google文档处理转换为可由浏览器动态处理的格式,并且不需要将其上传或存储在Google文档上,而是执行服务器端请求以获取文件. (2认同)
  • 遗憾的是,现在已经 2021 年了,但仍然没有解决方案! (2认同)

小智 25

Brandon和fatbotdesigns的答案都是正确的,但实施了Google文档预览后,我们发现了Google无法处理的多个.docx文件.切换到MS Office Online预览,工作就像一个魅力.

我的建议是在Google上使用MS Office预览网址.

https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' 
Run Code Online (Sandbox Code Playgroud)

  • 发生错误 很抱歉,由于某种原因,我们无法为您打开此文件。我在使用这个时遇到这个错误 (2认同)

Mas*_*iri 25

如果您的数据属于机密,这是一个很好的解决方案

由于这些文件是保密的,因此不应在第三方资源上进行处理。
该解决方案是开源的

  1. 在服务器端:使用Gotenberg将word和excel文件转换为PDF。
    注意:Gotenberg 的工作方式就像一个魅力,它基于 LibreOffice 引擎。
  2. 在前端:使用 javascript 渲染 PDF 文件非常容易。(您可以使用以下库:pdf.jsreact-pdf等)

  • 这是独立渲染器的最佳解决方案! (2认同)

ccp*_*zza 9

似乎有一些js库可以处理.docx(非.doc)到html转换客户端(没有特定的顺序):

注意:如果您正在寻找在客户端转换doc/docx文件的最佳方法,那么可能答案是不要这样做.如果你真的需要这样做,那就去服务器端,即无头模式下的libreoffice,apache-poi(java),pandoc或者其他最适合你的库.

  • 我会注意到我的图书馆完全没有维护。它能够将 docx 文件转换为可以在浏览器中呈现的文件。我不知道这是否属实了。 (3认同)

Nav*_*nDA 5

ViewerJS有助于查看/嵌入 openoffice 格式,如 odt、odp、ods 和 pdf。

用于嵌入 openoffice/pdf 文档

<iframe src = "/ViewerJS/#../demo/ohm2013.odp" width='700' height='550' allowfullscreen webkitallowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

/ViewerJS/是ViewerJS的路径

#../demo/ohm2013是您要嵌入的文件的路径