PHPを使用してMicrosoft Word Printableを作成する

背景


私は1つのディーラーでcrmモジュールを書いています。 プロジェクト全体はウェブ上で行われます。 最近のタスクの1つは、印刷されたフォームの作成、または商業的なオファーです。 すべては問題ありませんが、ドキュメントを印刷してクライアントに引き渡す必要があります。主な問題は、このドキュメントが複数ページであり、2つのヘッダーとフッターが含まれていることです。 (これは組織の公式形式でした)。 猫の下のソリューション。



私の解決策


そして、これらのヘッダーとフッターでは問題が発生しました。 HTML javascriptを使用した簡単な解決策が見つかりませんでした。 HTMLを使用すると、印刷時のブロックの場所を制御し、ブロックが完全に含まれていない場合はブロックを転送できます。 ページのおおよその終わりを計算し、そこにフッターでブロックを合わせる方法(javascriptを使用)ユーザー側には非常に多くのニュアンスがあるので、私も少ししか考えていません。 そのため、少し異なる方法、つまりMicrosoft Wordに連絡することにしました。

この組織の指導者の栄光をたたえて、Microsoft Office 2007は各ワークステーションにインストールされます。



そのため、テンプレートはWordでコンパイルされ、完全に記入された商業提案と、自動生成されたフィールドとヘッダーが含まれていました。 顧客データ、製品仕様と適切な場所の管理者の連絡先を含むテーブルを代用するだけでした。 どうやってやるの?



私はサードパーティのライブラリを使用しませんでしたが、Microsoft Wordドキュメント(* .docxについて話している)は、多くのxmlファイルや写真などの他のリソースを含む通常のzipにすぎないことがわかりました。 docxを解凍すると、次のものが得られます。

画像



これらすべてのファイルのうち、実際に必要なのは1つだけです。これはdocument.xmlです。 興味のあるすべての情報、つまりドキュメントのコンテンツが含まれています。 このファイルはテンプレートとして機能するため、慎重に抽出し、パックされたドキュメントの隣に配置します。 次に、コンテンツを取得し、データを変更し、Wordで適切な場所にパックして、ブラウザーでユーザーに送信するだけです。

これを行うには、Zipを使用します。この拡張機能により、圧縮されたZIPアーカイブ自体とその中のファイルの両方を簡単に読み書きできます。



$zip = new ZipArchive; if ($zip->open('template.docx') === TRUE) { /*     (   )       $content*/ $handle = fopen("document.xml", "r"); $content = fread($handle, filesize("document.xml")); fclose($handle); /*        */ $content = str_replace("{customer_r}","  ",$content); /*    document.xml*/ $zip->deleteName('word/document.xml'); /*     */ $zip->addFromString('word/document.xml',$content); $zip->close(); }
      
      





操作が完了した後、受信したドキュメントをブラウザでユーザーに送信します。



xmlを台無しにしない場合、ユーザーは完全に有効なドキュメントを受け取ります。 不注意で心を決めてしまった場合、Wordを開くと、無効な文字の存在について呪われ、正確に言い、修正を試みます。

テーブルなどの情報を追加できます。

テーブルセルは簡単に計算できます(行全体のように)。



 <w:tc><w:tcPr><w:tcW w:w="4783" w:type="dxa"/></w:tcPr><w:pw:rsidR="00BB344C" w:rsidRDefault="00BB344C"><w:r><w:t>  </w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p></w:tc></w:tr>
      
      







まあ、それがすべてです。

この問題を解決する他の方法を知っている場合は、共有してください。

本当にありがたいです。



All Articles