各タスクにはいくつかの解決策があります。 そして、時には、スピードのために、最も美しいものではなく、設定された目標を達成し、達成することを選択する必要があります。 そのため、あまり美しくない日には、次の機能を実装する必要がありました。サイトの各(ほぼ)ページに、DOC形式とPDF形式のコピーを自動的に生成する必要がありました。 コンテンツ内のすべてのテーブルと写真を保存します。 そして、PDFですべてが比較的単純な場合(tcpdfは私たちの友人であり兄弟)、DOCでは面倒がありました。 カットの下-この問題を解決する例。
次の解決策が思い浮かびました。
- サーバー(OpenBSD上のサーバー)にOpenOfficeをインストールし、変換を処理します。 美しい決断でしたが、時間が不足していました。
- DOCの代わりに、RTF形式のファイルを生成します。これは、形式が開いており、それを操作するためのライブラリが多数あるためです。 マイナス-完成したHTML-> RTFコンバーターが見つかりませんでした(思い出して、写真と表を保存します)。自分で書くには、ある程度の時間がかかります。
- 非常に正直ではありません-DOC拡張を使用してHTMLページを保存するために「正対」するだけです-Word 2003以降は問題なく検証されて開きます。 さらに、優れた変換速度とレイアウト全体の保存。 マイナス-この方法で画像を保存することはできません(この方法の正直さはやや不十分です)。
ここで、実際には、3番目のオプションから最終的なソリューションが生まれました。ドキュメントをMHT形式で作成し、それにイメージを統合して、DOC拡張機能で保存します。
ここから取られた単純なライブラリーが生成
に使用されました。コードは美しく多目的なふりをしていません。さらに、そのサイトに関係のない問題がありますが、主なことはそれが機能することであり、トピックを理解するのに十分です
記述された関数の使用例:
$link="m.habrahabr.ru/post/136811/"; CreateDOC($link,"test.doc");
そして、これが関数のソースコードです:
function CreateDOC($link,$filename) {
当然、これに基づいてはるかに普遍的で直接的なクラスを書くことができますが、私たちの目的のためにはこれで十分でした。 主なことは、このソリューションが機能し、十分に迅速であることです。 それが誰かに役立つように願っています。
更新:結果ファイルをテストしたコメントで-通常、Microsoft Word 2003以降でのみ開きます。サードパーティ製品(OpenOfficeなど)で問題が発生します。 また、他の多くのより適切な変換方法へのリンクもコメントに含まれています。
更新2:ソースを更新
-FlexIDKは、余分なキャラクターのない画像パスを選択して、より成功したレギュラーシーズンを提供しました。