質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4453閲覧

webからjavascriptのみを使ってmsoffice word文書を作成、ダウンロードさせ「印刷レイアウト」で開けるようにしたい

riho-beginner

総合スコア15

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2019/04/24 02:04

サーバー環境に制限がありphpやjavaなどサーバーサイドのプログラムが利用できない為、javascriptでwebの入力内容から動的にword文書を作成してダウンロードさせたいです。
MSのJavaScriptAPIを駆使すれば可能かもしれませんが、短納期で学習期間も取れない為今のところ見送っています。

一応、色々なサイトを参考にして、下記コードでhtmlをword形式でダウンロードさせるところまでは出来たのですが、wordを開いた時に初期表示が「Webレイアウト」となる為、一般ユーザー向けには不親切というか馴染みが無いように思えるため、初期表示を「印刷レイアウト」としたいです。
可能であれば改ページなども制御出来れば良いのですが・・・
お知恵を拝借できませんでしょうか。宜しくお願い致します。

/**javascript側 部分**/ function exportHTML(){ var header = "<html xmlns:o='urn:schemas-microsoft-com:office:office' "+ "xmlns:w='urn:schemas-microsoft-com:office:word' "+ "xmlns='http://www.w3.org/TR/REC-html40'>"+ "<head><meta charset='utf-8'><title>Export HTML to Word Document with JavaScript</title></head><body>"; var footer = "</body></html>"; var sourceHTML = header+document.getElementById("export_detail").innerHTML+footer; var source = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(sourceHTML); var fileDownload = document.createElement("a"); document.body.appendChild(fileDownload); fileDownload.href = source; fileDownload.download = 'document.doc'; fileDownload.click(); document.body.removeChild(fileDownload); } /**html側 word出力部**/ <section id="export_detail"> <h1 style=""><center>wordテスト出力</center></h1> <h2>テスト</h2> </section> <button id="btn-export" onclick="exportHTML();">word出力</button>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

一応やりたい事は自己解決しました。
クリップして頂いている方もいらっしゃるので解決方法を記載しておきます。

<xml><w:WordDocument><w:View>Print</w:View></w:WordDocument></xml>

をhtmlのheaderに追加しました。質問に記載したソースコード内でheader変数を

var header = "<html xmlns:o='urn:schemas-microsoft-com:office:office' "+ "xmlns:w='urn:schemas-microsoft-com:office:word' "+ "xmlns='http://www.w3.org/TR/REC-html40'>"+ "<head><meta charset='utf-8'><title>Export HTML to Word Document with JavaScript</title>"+ " <xml><w:WordDocument><w:View>Print</w:View></w:WordDocument></xml></head><body>";

としました。
単純に「Wordファイルを開いた時に印刷レイアウトとなる」だけで、中身はwordバイナリデータでなくテキスト(html)データです。

投稿2019/05/15 04:44

riho-beginner

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初期表示を「印刷レイアウト」としたいです。

ブラウザから制御できるのは「ファイルを開かせるダウンロードさせる」ところまでです。それ以降は、

  • ダウンロード開始の段階で、開くか保存するかの確認画面が出る
  • 自動でダウンロードだけされて、ユーザーがクリックしないと開かない

など、自動で開かないこともあります。

投稿2019/04/24 02:11

編集2019/04/24 02:18
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

riho-beginner

2019/04/24 03:07

ご回答頂きありがとうございます。 仰る通りブラウザからの制御はダウンロードさせるところまでしかできないことは承知しているのですが、ダウンロード後に開く、または保存した後に開いた時の初期表示が、どうしてもソースがhtmlのためなのか「webレイアウト」となってしまうため、「印刷レイアウト」で初期表示出来ないか模索しているところでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問