Làm cách nào để hiển thị tài liệu Word (.doc, .docx) trong trình duyệt bằng JavaScript?


146

Tôi đã thực hiện thành công mã để hiển thị tệp PDF trong trình duyệt thay vì hộp thoại "Mở / Lưu". Bây giờ, tôi bị kẹt khi cố gắng hiển thị một tài liệu Word trong trình duyệt. Tôi muốn hiển thị một tài liệu Word trong Firefox, IE7 +, Chrome, v.v.

Có ai giúp được không? Tôi luôn nhận được hộp thoại "Mở / Lưu" trong khi hiển thị tài liệu Word trong trình duyệt. Tôi muốn thực hiện chức năng này bằng JavaScript.



bạn có thể sử dụng syncfusion-document-Editor trong phản ứng để hiển thị và chỉnh sửa các tệp docx
Yusuf Mohammad

Câu trả lời:


224

Hiện tại không có trình duyệt nào có mã cần thiết để hiển thị Tài liệu Word và theo như tôi biết, không có thư viện phía máy khách nào hiện đang tồn tại để hiển thị chúng.

Tuy nhiên, nếu bạn chỉ cần hiển thị Tài liệu Word, nhưng không cần chỉnh sửa nó, bạn có thể sử dụng Trình xem tài liệu của Google thông qua một <iframe>để hiển thị lưu trữ từ xa .doc/ .docx.

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

Giải pháp được điều chỉnh từ " Cách hiển thị tài liệu từ bằng Fancybox ".

Thí dụ:

Câu đố

Tuy nhiên, nếu bạn muốn có hỗ trợ riêng, trong hầu hết, nếu không phải tất cả các trình duyệt, tôi khuyên bạn nên lưu lại .doc/ .docxdưới dạng tệp PDF. Chúng cũng có thể được kết xuất độc lập bằng PDF.js của Mozilla.

Biên tập:

Rất cảm ơn fatbotdesigns đã đăng trình xem Microsoft Office 365 trong các bình luận.

<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>

Một lưu ý quan trọng hơn cần ghi nhớ, như được chỉ ra bởi lightwitch05 , là điều này sẽ tải tài liệu của bạn lên máy chủ của bên thứ ba. Nếu điều này là không thể chấp nhận, thì phương pháp hiển thị này không phải là quá trình hành động thích hợp.

Ví dụ trực tiếp:

Trình xem Google Docs

Trình xem Microsoft Office


2
@Pankaj Bạn không cần phải tải nó lên Google Drive. Bạn chỉ có thể thay đổi thông số urlthành URL đầy đủ thành tệp .doc, được lưu trữ trên máy chủ của bạn hoặc bất kỳ nơi nào có thể được liên kết trực tiếp. Google Docs xử lý việc chuyển đổi sang định dạng mà trình duyệt có thể xử lý nhanh chóng và không yêu cầu phải tải lên hoặc lưu trữ trên Google Docs, thay vào đó thực hiện yêu cầu phía máy chủ để lấy tệp.
Brandon Anzaldi

3
@Pankaj Ngay cả khi bạn đang lưu trữ một máy chủ cục bộ, Google không thể truy cập localhost. Nó cần một URL có thể truy cập công khai. Bạn có thể sử dụng một dịch vụ chuyển tiếp cơ bản như Finch .
Brandon Anzaldi

11
Bạn cũng có thể sử dụng trình xem ứng dụng trực tiếp của văn phòng: //view.offic OKs.live.com/op/embed.aspx?src=your_url_here đặt url này vào iframe
fatbotdesigns

1
@BonifacePereira Nếu bạn đang thiết lập mạng nội bộ, có thể bạn sẽ phải thực hiện một số chuyển đổi cục bộ, vì cả GDocs và Live đều phải lấy tài liệu từ đâu đó. Nếu bạn có thể, bạn có thể thiết lập một máy chủ để chuyển đổi với OpenOffice hoặc một cái gì đó: stackoverflow.com/questions/5538584/iêu
Brandon Anzaldi 17/07/17

18
Chỉ muốn chỉ ra rằng cả hai phương pháp này chắc chắn tải các tệp lên máy chủ của Google và của Microsoft. Nếu bạn đang xử lý thông tin nhạy cảm cần có quyền truy cập hạn chế - đừng làm điều này. Sử dụng giải pháp thay thế với PDF.js để tạo phiên bản PDF của tệp để xem trong trình duyệt và cung cấp liên kết để tải xuống các phiên bản excel / doc khác nhau.
lightwitch05

30

Các câu trả lời của Brandon và fatbotdesign đều đúng, nhưng khi triển khai bản xem trước tài liệu Google, chúng tôi đã tìm thấy nhiều tệp .docx không thể xử lý bởi Google. Chuyển sang xem trước MS Office Online và các tác phẩm thích một sự quyến rũ.

Đề xuất của tôi sẽ là sử dụng URL Xem trước MS Office trên Google.

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

1
Có bất kỳ hạn chế để sử dụng này? support.microsoft.com/en-us/help/2769380/ Mạnh
Vishnu

để cung cấp bản tường thuật phản đối - chúng tôi đã chọn phiên bản google vì trình kết xuất microsoft mất nhiều thời gian hơn để tải cả chrome và ff
David Holiday

13

Dường như có một số thư viện js có thể xử lý .docx (không phải .doc) sang phía máy khách chuyển đổi html (không theo thứ tự cụ thể):

Lưu ý: Nếu bạn đang tìm kiếm cách tốt nhất để chuyển đổi tệp doc / docx ở phía máy khách, thì có lẽ câu trả lời là không làm điều đó . Nếu bạn thực sự cần phải làm điều đó thì hãy thực hiện phía máy chủ, tức là với libreoffice ở chế độ không đầu , apache-poi (java) , pandoc hoặc bất kỳ thư viện nào khác phù hợp nhất với bạn.


1
Tôi sẽ lưu ý rằng thư viện của tôi là hoàn toàn không rõ ràng. Nó có thể chuyển đổi các tệp docx thành một cái gì đó có thể được hiển thị trong trình duyệt. Tôi không biết điều này có đúng nữa không.
artburkart

2

Tôi nghĩ rằng tôi có một ý tưởng. Điều này cũng đã được thực hiện và tôi vẫn gặp khó khăn khi hiển thị nó trong Chrome.

Lưu tài liệu (name.docx) trong word dưới dạng trang web tệp đơn (name.mht) Trong sử dụng html của bạn

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

Thay đổi chiều cao và chiều rộng khi bạn thấy phù hợp.


6
@guidomocha Đừng chỉ bình luận rằng, hãy đưa ra lý do tại sao đây là một cách tiếp cận tồi.
J. Louw

2

ViewerJS rất hữu ích để xem / nhúng định dạng openoffice như odt, odp, ods và cả pdf.

Đối với tài liệu pdf / openoffice nhúng

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

/ViewerJS/ là đường dẫn của ViewerJS

#../demo/ohm2013 là đường dẫn tệp của bạn muốn nhúng


Tôi có thể sử dụng url liên kết từ aws s3
Vishnu

Không, bạn chỉ cung cấp liên kết địa phương
NaveenDA

1
Cảm ơn phản hồi của bạn
Vishnu

Thật không may trong bối cảnh định dạng microsoft của tôi là phổ biến hơn.
guettli

1

Tài liệu gốc (trong đó tôi có sở thích) làm cho người xem (và biên tập viên) đặc biệt dành cho tài liệu Word (cả định dạng nhị phân .doc và định dạng docx hiện đại). Nó làm như vậy mà không mất chuyển đổi sang HTML. Dưới đây là cách bắt đầu https://github.com/NativeDocument/nd-WordFileEditor/blob/master/README.md


2
Nó không có bất kỳ thông tin về giá cả. Trình soạn thảo / Trình xem tập tin Word có miễn phí không?
Bắn súng vào

Phần mềm thương mại của nó, nhưng chúng tôi có một gói miễn phí cho các doanh nghiệp mới thành lập / doanh nghiệp nhỏ và cho những người khác, một gói miễn phí tuân theo giới hạn sử dụng. Chúng tôi sẽ sớm công bố chi tiết.
JasonPlutext

cái này có thể chạy trên một trang serverless không, ví dụ như trên aws s3?
Graham Chiu

phía máy chủ, chúng tôi đóng gói nó dưới dạng các Docker bạn cần chạy ở đâu đó (ví dụ ECS). (Về nguyên tắc chúng tôi có thể chạy một số thứ này trên Lambda, nhưng bạn vẫn muốn có một kho tài liệu liên tục, có thể là S3)
JasonPlutext

3
@JasonPlutext Điều này có vẻ thú vị. Nhưng tôi sẽ nói thẳng: Tôi sẵn sàng trả một khoản phí nhỏ hợp lý cho một gói hoặc dịch vụ tốt - nhưng "gửi thông tin của bạn và chúng tôi sẽ cho bạn biết chi phí là bao nhiêu" là KHÔNG CÓ .
manassehkatz-Di chuyển 2 Codidact

0

Nếu bạn muốn xử lý trước các tệp DOCX của mình, thay vì đợi đến khi chạy, trước tiên bạn có thể chuyển đổi chúng thành HTML bằng cách sử dụng API chuyển đổi tệp như Zamzar . Bạn có thể sử dụng API để chuyển đổi theo chương trình từ DOCX sang HMTL, lưu đầu ra vào máy chủ của bạn và sau đó phân phát HTML đó cho người dùng cuối của bạn.

Chuyển đổi khá dễ dàng:

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

Điều này sẽ loại bỏ mọi phụ thuộc thời gian chạy trên các dịch vụ của Google và Microsoft (ví dụ: nếu chúng bị hỏng hoặc bạn bị giới hạn bởi tốc độ của chúng).

Nó cũng có lợi ích là bạn có thể mở rộng sang các loại tệp khác nếu bạn muốn (PPTX, XLS, DOC, v.v.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.