0



ユーザーがいくつかのレポートをダウンロードできるようにするアプリケーションの開発を引き継ぎました。
システムの設定は次のとおりです。

  • phpによって取得されたデータを使用して*.htmlファイルを作成します。
  • *.htmlファイルのすべてのコンテンツを*.docファイルにコピーします(実際の* .docファイルではなく、拡張子が「.doc」の* .htmlファイルのみ)。
  • *.docはダウンロードできます。

これはレポートファイルを作成するための奇妙な解決策であり、*。docファイルでうまく機能するようにCSSを設定するのに多くの困難がありました。
たとえば、マージンを0cmに設定する必要がありますが、もちろん、生成された* .docをOpenOffice、LibreOffice、MSWordなどのテキストエディタで開くと、彼はWEBモードで開きます。CSSマージンを0cmに設定すると正常に機能します。ただし、ユーザーはファイルを標準モード(実際の* .docファイルなど)で開く必要があり、ドキュメントを変換するためのアクションを実行したくない、またはマージンを0 cmに設定します(...)。

そこで、*。odt内の*.htmlまたは*.docファイルを変換し、*。odtファイルを解凍し、ファイル「styles.xml」を変更して「STANDARD」マージンをに設定できるようにするソリューションを見つけました。 0cmの場合は、*。doc形式で再保存します。
このソリューションはうまく機能しますが、私はLibreOfficeGUIを使用してPCでこれを達成しただけです。

*.odtの*.htmlまたは*.docファイルをコマンドラインのプログラム(LibreOffice変換モジュールでも)で変換しようとすると、*。odtファイルはLibreOfficeGUIを使用した場合と同じになりません。だから私は次のような他の変換スクリプトを試してみました:

  • pandoc
  • abiword
  • ooconvert

それで、私の* .htmlfilを*.odtファイルに適切に変換する方法はありますか?または私がやりたいことをすることを可能にする別の方法?
ありがとう。

編集/解決済み:

JODConverterで動作します!!

4

1 に答える 1

0

HTMLを保持したい場合でも、LiveDocxが役立つかもしれないと私は主張します。私はもう少し掘り下げて、phpdocxに出くわしました。ページの下部に、HTMLを埋め込む方法を示すリンクがあります。
LiveDocXとphpdocxはどちらも、それぞれのサイトで例を提供しています。それらを閲覧することをお勧めします。

SOも数回現れました:興味深い質問は次のようになります:

後者はあなたがやろうとしていることの反対であることを私は知っていますが、その理由だけでそれを書き留めないでください。多くの場合、別の視点から物事を見ると非常に役立ちます。

あなたの最後のコメントは、あなたが実際にコーディングに慣れていないことを私に信じさせてくれるので(I just need a script etc...)私はSOがコードジェネレーターではないと言いたいです。phpdocxとlivedocxについて読み終え​​たら、良い質問になるものを読む必要があります。

私はあなたが探していたものをここで見つけたと思います。php-cliを使用する場合は、スクリプトの出力ストリームをファイルに設定し、以下にあるヘッダーを使用することになると思います(リンクからコピーアンドペースト)。

    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment; Filename=SaveAsWordDoc.doc");

SOがコードジェネレーターではないというコメントと、「何が良い質問になるのか」へのリンクで、少し厳しいものに出くわした場合は申し訳ありません。あなたを打ちのめすつもりはありませんでした。

アップデート

申し訳ありませんが、前の例はダウンロードリンクとしてのみ機能します。HTML文字列に基づいて.docファイルを生成するスクリプトの下にあります。

#!/bin/php -n
<?php
    $opts = array('file'=>array('header'=>'Content-type: application/vnd.ms-word'."\r\n".'Content-type: application/vnd.ms-word'."\r\n"));
    $resource = stream_context_create($opts);
    $doc = fopen('asDoc.doc','w+',false,$resource);
    if (!$doc)
    {
        die('FFS');
    }
    $html='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
    $html .='<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\"><title>Foo</title></head><body><h1>Hello, world</h1></body></html>';
    fwrite($doc,$html);
    fclose($doc);
    exit();
?>

ヘッダーはコンテキストストリームで定義されるため、コードの最初の2行が重要です。<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">メタタグもそうです。他のすべてはかなり基本的です。
必要なすべての関数がここにあるので、何が何をするのかを知りたい場合は、それらのマニュアルページを参照して詳細を確認してください...

幸運を祈ります

于 2012-05-15T11:31:49.263 に答える