マージされたドキュメントを PDF に変換し、ユーザーがダウンロードできるようにするブラウザ内 Microsoft Word ドキュメント マージ機能を実装したいと考えています。このプロセスを Google Chrome と Firefox でサポートしたいと考えています。これが私がそれをどのように機能させたいかです:
- クライアント側の JavaScript は、サーバーから、またはユーザーにファイルのアップロードを要求することによって、Word テンプレート ドキュメントを docx 形式で取得します (その後、FileReader API を使用して読み取ることができます)。
- JavaScript は、そのローカル データ構造 (Ajax 経由で取得したデータ リストなど) を使用して、テンプレートをドキュメントに展開します。これは、docx ファイルを解凍してその内容を処理するか、DOCx.js を使用して直接行うことができます。テンプレートの展開は、テンプレート変数をローカル データ構造から取得した値に置き換えるだけです。
- JavaScript は、展開されたテンプレートを PDF に変換します。
- JavaScript は、たとえば Downloadify を使用して、PDF ファイルをダウンロード用にユーザーに提供します。
私が抱えている問題はステップ 3 にあります。私の理解では (これまでに行ったすべてのグーグル検索に基づいて)、次のオプションがあるということです。
- PDF に変換するには、ローカル マシンが Windows マシンである必要があり、その上で Word を起動します。これは、WScript.shell を使用して少しスクリプトを作成するだけで実行でき、Internet Explorer で実行できるようです。しかし、私が読んだ内容に基づくと、セキュリティ上の制約により、Chrome または Firefox 内から WScript.shell を呼び出すことはできないようです。
- Silverlight で変換を試みることにオープンですが、これを行う方法に関する十分なドキュメントが見つかりません。理想的には、Silverlight を使用する場合、Silverlight コードを JavaScript で記述したいと考えています。これは、(a) CSharp についてあまり詳しくなく、(b) JavaScript の方がはるかに簡単だと思うためです。
- 特定の docx ファイルを pdf ファイルに変換する Web サービスを作成し、Ajax を介してそのサービスを呼び出します。可能であれば、いくつかの理由でこれを行いたくありません: (a) docx4javaを使用してみました (私はかなり熟練した Java プログラマーです) が、変換プロセスが遅すぎて、ドキュメントの内容がうまく保持されません。(b) セキュリティの問題を回避するために、ネットワークへの呼び出しを避けたい。変換を行うための小さなサービスを Windows サーバー上に作成することは可能だと思われます。他に適切なオプションがない場合は、その方法を使用する可能性があります。
ご不明な点がございましたら、お気軽にお問い合わせください。アイデアやフィードバックをいただければ幸いです。