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


146

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

有人可以帮忙吗?在浏览器中显示Word文档时,总是会出现“打开/保存”对话框。我想使用JavaScript实现此功能。



您可以在显示和编辑docx文件的反应中使用syncfusion-document-editor
Yusuf Mohammad

Answers:


224

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

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

<iframe src="https://docs.google.com/gview?url=http://remote.url.tld/path/to/document.doc&embedded=true"></iframe>

解决方案改编自“ 如何使用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>

lightswitch05所指出的,要记住的另一个重要警告是,这会将您的文档上载到第三方服务器。如果这是不可接受的,则此显示方法不是正确的操作方法。

现场示例:

Google文件检视器

Microsoft Office查看器


2
@Pankaj您不必将其上传到Google云端硬盘。您可以将url参数更改为.doc文件的完整URL,该文件可以托管在服务器上,也可以直接链接到任何位置。Google Docs处理转换为可以由浏览器即时处理的格式,不需要将其上传或存储在Google Docs上,而是执行服务器端请求以获取文件。
布兰登·安扎尔迪

3
@Pankaj即使您托管本地服务器,Google也无法访问localhost。它需要一个公共可访问的URL。您可以使用Finch之类的基本转发服务。
布兰登·安扎尔迪

11
您还可以使用Office Live应用查看器://view.officeapps.live.com/op/embed.aspx?src=your_url_here将该网址放入iframe
fatbotdesigns

1
@BonifacePereira如果要设置Intranet,则可能必须在本地进行一些转换,因为GDocs和Live都必须从某个位置获取文档。如果可以,您可以设置服务器以通过OpenOffice或其他方式进行转换:stackoverflow.com/questions/5538584/…–
布兰登·安扎尔迪

18
只想指出,这两种方法肯定会将文件上传到Google和Microsoft的服务器。如果您正在处理应该具有有限访问权限的敏感信息,请不要这样做。将替代解决方案与PDF.js结合使用,以生成文件的PDF版本以在浏览器中查看,并提供下载各种excel / doc版本的链接。
lightswitch05

30

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

我的建议是在Google上使用MS Office预览URL。

https://view.officeapps.live.com/op/embed.aspx?src=http://remote.url.tld/path/to/document.doc' 

1
使用此功能有任何限制吗?support.microsoft.com/en-us/help/2769380/...
毗湿奴

提供反叙述-我们选择Google版本是因为Microsoft渲染器需要更长的时间才能在chrome和ff中加载
David Holiday

13

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

注意:如果您正在寻找在客户端转换doc / docx文件的最佳方法,那么答案可能是不这样做。如果您确实需要这样做,则可以在服务器端进行操作,即在无头模式下使用libreofficeapache-poi(java)pandoc或其他最适合您的库。


1
我会注意到我的图书馆完全没有维护。它能够将docx文件转换为可以在浏览器中呈现的文件。我不知道这是否是真的。
artburkart

2

我想我有个主意。这也一直困扰着我,但仍无法在Chrome中显示它。

用文字将文档(name.docx)保存为单个文件网页(name.mht)在HTML中使用

<iframe src= "name.mht" width="100%" height="800"> </iframe>

根据需要更改高度和宽度。


6
@guidomocha不仅要评论,还应提供为什么这是一个不好的方法的理由。
J. Louw

2

ViewerJS有助于查看/嵌入openoffice格式,例如odt,odp,ods以及pdf。

用于嵌入openoffice / pdf文档

<iframe src = "/ViewerJS/#../demo/ohm2013.odp" width='700' height='550' allowfullscreen webkitallowfullscreen></iframe>

/ViewerJS/ 是ViewerJS的路径

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


难道我能够使用从AWS S3链接网址
毗湿奴

不,您只提供本地链接
NaveenDA '18

1
谢谢您的回应
Vishnu

不幸的是,在我看来,Microsoft格式更为普遍。
guettli

1

本机文档(我很感兴趣)使查看器(和编辑器)专门用于Word文档(旧式二进制.doc和现代docx格式)。这样做不会有损转换为HTML。这是开始使用的方法https://github.com/NativeDocuments/nd-WordFileEditor/blob/master/README.md


2
它没有任何价格信息。“ Word文件编辑器/查看器”免费吗?
FiringBlanks

它是商业软件,但对于初创公司/小型企业,我们有免费计划;对于其他公司,我们有使用限制的免费计划。我们将尽快发布详细信息。
JasonPlutext

可以在没有AWS的单页无服务器上运行吗?
Graham Chiu

在服务器端,我们将其打包为需要在某个地方(例如ECS)运行的Docker容器。(原则上,我们可以在Lambda上运行其中的一些功能,但是您仍然需要一个持久的文档存储,也许是S3)
JasonPlutext

3
@JasonPlutext这看起来很有趣。但是我会直言不讳:我愿意为优质的套餐或服务支付一小笔合理的费用-但是“提交您的信息,我们会让您知道它的成本”是不行的
manassehkatz-Moving 2 Codidact '19

0

如果要预处理DOCX文件,而不是等到运行时,可以先使用Zamzar之类的文件转换API将它们转换为HTML 。您可以使用API​​以编程方式从DOCX转换为HMTL,将输出保存到服务器,然后将该HTML提供给最终用户。

转换非常简单:

curl https://api.zamzar.com/v1/jobs \
-u API_KEY: \
-X POST \
-F "source_file=@my.docx" \
-F "target_format=html5"

这将删除对Google&Microsoft服务的所有运行时依赖项(例如,如果它们已关闭,或者您受到它们的速率限制)。

它还具有一个好处,您可以根据需要扩展到其他文件类型(PPTX,XLS,DOC等)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.