Як я можу відобразити документ Word (.doc, .docx) у браузері за допомогою JavaScript?


146

Я успішно зробив код для відображення PDF-файлу у браузері замість діалогового вікна "Відкрити / Зберегти". Тепер я застряг, намагаючись відобразити документ Word у браузері. Я хочу відобразити документ Word у Firefox, IE7 +, Chrome тощо.

Чи може хтось допомогти? Я завжди отримую діалогове вікно "Відкрити / зберегти" під час відображення документа Word у браузері. Я хочу реалізувати цю функціональність за допомогою JavaScript.



ви можете використовувати syncfusion-document-editor для реагування на показ та редагування docx-файлів
Юсуф Мохаммад

Відповіді:


225

Наразі жоден браузер не має коду, необхідного для візуалізації Документів Word, і, наскільки я знаю, для їх надання також не існує бібліотек на стороні клієнта.

Однак якщо вам потрібно лише відобразити документ Word, але редагувати його не потрібно, ви можете скористатися засобом перегляду документів Google через "a" <iframe>для відображення віддаленого розміщення .doc/ .docx.

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

Рішення адаптоване з " Як відобразити документ із словами за допомогою fancybox ".

Приклад:

JSFiddle

Однак, якщо ви бажаєте мати підтримку, в більшості, якщо не у всіх браузерах, я рекомендую зберегти файл .doc/ .docxу форматі PDF. Можливо, їх також можна самостійно надавати за допомогою PDF.js від Mozilla.

Редагувати:

Величезне спасибі 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 Viewer


2
@Pankaj Не потрібно завантажувати його на Google Диск. Ви можете просто змінити параметр urlна повну URL-адресу до .doc-файлу, розміщеного або на вашому сервері, або в будь-якому місці, до якого він може бути безпосередньо пов’язаний. Google Docs обробляє перетворення у формат, який може оброблятися браузером на ходу, і не вимагає його завантаження або зберігання в Google Документах, замість цього виконує запит на сервері, щоб захопити файл.
Брендон Анзалді

3
@Pankaj Навіть якщо ви розміщуєте локальний сервер, Google не може отримати доступ localhost. Для цього потрібна загальнодоступна URL-адреса. Ви можете скористатись базовою послугою переадресації, як Фінч .
Брендон Анзальді

11
Ви також можете скористатися програмою перегляду програм для живих служб Office: //view.officeapps.live.com/op/embed.aspx?src=your_url_туди, де ця URL-адреса розміщена в iframe
fatbotdesigns

1
@BonifacePereira Якщо ви налаштовуєте інтранет, вам, ймовірно, доведеться здійснити локальну конверсію, оскільки GDocs та Live повинні були отримати документ звідкись. Якщо ви в змозі, ви можете бути в змозі налаштувати сервер для перетворення з OpenOffice або що - то: stackoverflow.com/questions/5538584 / ...
Brandon Anzaldi

18
Просто хочу зазначити, що обидва ці способи безумовно завантажують файли на сервери Google та Microsoft. Якщо ви маєте справу з конфіденційною інформацією, яка мала б обмежений доступ, не робіть цього. Використовуйте альтернативне рішення з PDF.js, щоб створити PDF-версію файлу для перегляду в браузері та запропонувати посилання для завантаження різних версій excel / doc.
lightswitch05

30

Відповіді Брендона та fatbotdesigns є правильними, але, застосувавши попередній перегляд документів Google, ми знайшли кілька .docx файлів, з якими Google не може працювати. Переключився на попередній перегляд MS Office Online і працює як шарм.

Я рекомендую використовувати URL-адресу попереднього перегляду MS Office для Google.

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/…
Vishnu

щоб надати зустрічну розповідь - ми вибрали версію google, тому що рендерінг для мікрософт займає набагато більше часу, щоб завантажуватись як у хромі, так і у ff
David Holiday

13

Здається, є декілька js-бібліотек, які можуть обробляти .docx (не .doc) до html-перетворення на стороні клієнта (не в конкретному порядку):

Примітка. Якщо ви шукаєте найкращий спосіб перетворити файл doc / docx на стороні клієнта, то, ймовірно, відповідь не робити цього . Якщо вам справді потрібно це зробити, то робіть це на стороні сервера, тобто з libreoffice в безголовому режимі , apache-poi (java) , pandoc або будь-якою іншою бібліотекою, яка працює найкраще для вас.


1
Зауважу, що моя бібліотека абсолютно бездоганна. Він зміг перетворити docx файли в те, що можна було б винести у браузері. Я не знаю, чи це вже правда.
artburkart

2

Я думаю, що я маю ідею. Це теж робило мої гайки, і я все ще відчуваю проблеми з відображенням його в Chrome.

Збережіть документ (name.docx) словом у вигляді однофайлової веб-сторінки (name.mht) у використанні html

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

Змініть висоту та ширину, як вважаєте за потрібне.


6
@guidomocha Не просто коментуйте це, наведіть міркування, чому це поганий підхід.
Дж. Лув

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 це шлях вашого файлу, який хочете вставити


Чи можу я використати URL-адресу посилання від aws s3
Vishnu

Ні, ви
надаєте

1
Дякую за вашу відповідь
Vishnu

На жаль, в моєму контексті формати мікрософт є більш поширеними.
guettli

1

Рідні документи (в яких я маю інтерес) примушує глядача (і редактора) спеціально для документів Word (як застарілих двійкових .doc, так і сучасних форматів docx). Це робиться без втрати перетворення в HTML. Ось як розпочати роботу https://github.com/NativeDocuments/nd-WordFileEditor/blob/master/README.md


2
У ньому немає жодної інформації про ціноутворення. Чи "Редактор / переглядач файлів Word" безкоштовний?
FitingBlanks

Його комерційне програмне забезпечення, але у нас є вільний план для стартапів / малого бізнесу, а для інших - безкоштовний план з урахуванням лімітів використання. Деталі ми опублікуємо незабаром.
JasonPlutext

чи може це працювати на одній сторінці без сервера, наприклад, на aws s3?
Грем

на стороні сервера ми пакуємо його як контейнери Docker, які вам потрібно буде десь запустити (наприклад, ECS). (В принципі, ми могли б запустити щось із цього в Lambda, але ви все одно хочете зберегти постійний магазин документів, можливо, S3)
JasonPlutext

3
@JasonPlutext Це виглядає цікаво. Але я буду відвертим: я готовий заплатити невеликий розумний гонорар за хороший пакет або послугу - але "подайте свою інформацію, і ми повідомимо вам, що це коштує" - це НЕ ПОДОРОЖЕНО .
manassehkatz-Moving 2 Codidact

0

Якщо ви хотіли попередньо обробити файли DOCX, а не чекати, поки час виконання, ви можете спершу перетворити їх у HTML, використовуючи API для перетворення файлів, такий як Zamzar . Ви можете використовувати 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 тощо)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.