JavaScriptを使用してブラウザーでWord文書(.doc、.docx)をレンダリングするにはどうすればよいですか?


146

「開く/保存」ダイアログの代わりにブラウザでPDFファイルを表示するコードを正常に実行しました。今、私はブラウザでWord文書を表示しようとしています。Firefox、IE7 +、ChromeなどでWord文書を表示したい

誰か助けてもらえますか?ブラウザでWordドキュメントを表示しているときに、常に[開く/保存]ダイアログが表示されます。JavaScriptを使用してこの機能を実装したいと思います。



あなたが使用することができますsyncfusion-ドキュメントエディタを表示し、編集のdocxファイル反応に
ユスフムハンマド

回答:


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を使用してワードドキュメントを表示する方法」からのソリューション。

例:

JSFiddle

ただし、ネイティブサポートが必要な場合は、ほとんどのブラウザではなくても、.doc/ .docxをPDFファイルとして再保存することをお勧めします。これらは、MozillaによってPDF.jsを使用して個別にレンダリングすることもできます。

編集:

Microsoft Office 365ビューアーをコメントに投稿してくれたfatbotdesignsに感謝します。

<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で指摘されているように、もう1つ重要な注意点は、ドキュメントがサードパーティのサーバーにアップロードされることです。これが受け入れられない場合、この表示方法は適切な方法ではありません。

実例:

Googleドキュメントビューア

Microsoft Officeビューア


2
@Pankaj Googleドライブにアップロードする必要はありません。urlパラメータを.docファイルへの完全なURLに変更するだけで、サーバーでホストされているか、直接リンクできる場所であればどこでも実行できます。Googleドキュメントは、オンザフライでブラウザで処理できる形式への変換を処理します。ファイルを取得するためにサーバー側のリクエストを実行する代わりに、Googleドキュメントにアップロードまたは保存する必要はありません。
Brandon Anzaldi、2015年

3
@Pankajローカルサーバーをホストしている場合でも、Googleはにアクセスできませんlocalhost。公的にアクセス可能なURLが必要です。Finchのような基本的な転送サービスを使用できます。
Brandon Anzaldi、2015年

11
また、ビューアオフィスライブのアプリを使用することができます//view.officeapps.live.com/op/embed.aspx?src=your_url_hereはiframe内にこのURLを入れて
fatbotdesigns

1
@BonifacePereiraイントラネットを設定している場合、GDocsとLiveの両方がどこかからドキュメントをフェッチする必要があるため、おそらくローカルで変換を行う必要があります。:あなたがすることができるしている場合は、OpenOfficeのか何かに変換用のサーバを設定することができるかもしれませんstackoverflow.com/questions/5538584/...
ブランドンAnzaldi

18
これらの方法の両方が間違いなくGoogleとMicrosoftのサーバーにファイルをアップロードすることを指摘したいだけです。アクセスを制限する必要がある機密情報を扱う場合は、これを行わないでください。PDF.jsの代替ソリューションを使用して、ブラウザーで表示するファイルのPDFバージョンを生成し、さまざまなExcel / Docバージョンをダウンロードするためのリンクを提供します。
lightswitch05 2017

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/...
ヴィシュヌ

カウンターナラティブを提供するために-Microsoftレンダラーがchromeとffの両方でロードするのにかなり長い時間がかかるため、Googleバージョンを選択しました
David Holiday

13

.docx(.docではなく)からhtmlへのクライアント側への変換(順不同)を処理できるjsライブラリがいくつかあるようです。

注:クライアント側でdoc / docxファイルを変換する最良の方法を探している場合、おそらく答えはそれを行わないことです。あなたが本当にそれをする必要がある場合は、サーバー側で実行してくださいつまり、ヘッドレスモードのlibreofficeapache-poi(java)pandoc、またはその他のライブラリが最適です。


1
私のライブラリは完全にメンテナンスされていません。docxファイルをブラウザーでレンダリングできるものに変換できました。これが本当かどうかはわかりません。
artburkart

2

アイデアがあると思います。これもうまく機能していて、Chromeで表示するのにまだ問題があります。

文書(name.docx)を単一ファイルのWebページ(name.mht)として保存します

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

必要に応じて高さと幅を変更します。


6
@guidomocha単にコメントするだけでなく、これが悪いアプローチである理由を説明してください。
J.ルー2017

2

ViewerJSは、odt、odp、odsおよびpdfのようなopenoffice形式を表示/埋め込むのに役立ちます。

openoffice / pdfドキュメントの埋め込み用

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

/ViewerJS/ ViewerJSのパスです

#../demo/ohm2013 埋め込みたいファイルのパスです


aws s3からのリンクURLを使用できるか
Vishnu

いいえ、ローカルリンクのみを提供します
NaveenDA

1
ご回答ありがとうございます
Vishnu

残念ながら、私のコンテキストでは、Microsoft形式はより広く普及しています。
guettli

1

ネイティブドキュメント(私が興味を持っている)は、Wordドキュメント(レガシーバイナリ.doc形式と最新のdocx形式の両方)専用のビューアー(およびエディター)を作成します。HTMLへの損失のない変換なしでそれを行います。開始方法は次のとおりですhttps://github.com/NativeDocuments/nd-WordFileEditor/blob/master/README.md


2
価格に関する情報はありません。「Word File Editor / Viewer」は無料ですか?
FiringBlanks

商用ソフトウェアですが、新興企業や中小企業向けの無料プランと、使用制限のある無料プランがあります。詳細はまもなく公開します。
JasonPlutext

これはaws s3などのサーバーレスの単一ページで実行できますか?
Graham Chiu

サーバー側では、どこかで実行する必要があるDockerコンテナー(ECSなど)としてパッケージ化します。(原則として、これをLambdaで実行することもできますが、永続的なドキュメントストア(おそらくS3)が必要です)
JasonPlutext

3
@JasonPlutextこれは面白いですね。しかし、私は鈍いだろう:私は良いパッケージまたはサービスのために小さな合理的な料金を支払うことをいとわないんだ-しかし「あなたの情報を提出し、我々はあなたがITコスト何を知ってもらおう」であるNO GO
manassehkatz-Moving 2 Codidact

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など)に拡張できるという利点もあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.