web-dev-qa-db-ja.com

PHPを使用してdocxドキュメントをhtmlに変換するにはどうすればよいですか?

MS Word文書をアップロードして、自分のサイトのページにエクスポートできるようにしたい。

これを達成する方法はありますか?

16
xun
//FUNCTION :: read a docx file and return the string
function readDocx($filePath) {
    // Create new Zip archive
    $Zip = new ZipArchive;
    $dataFile = 'Word/document.xml';
    // Open received archive file
    if (true === $Zip->open($filePath)) {
        // If done, search for the data file in the archive
        if (($index = $Zip->locateName($dataFile)) !== false) {
            // If found, read it to the string
            $data = $Zip->getFromIndex($index);
            // Close archive file
            $Zip->close();
            // Load XML from a string
            // Skip errors and warnings
            $xml = DOMDocument::loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
            // Return data without XML formatting tags

            $contents = explode('\n',strip_tags($xml->saveXML()));
            $text = '';
            foreach($contents as $i=>$content) {
                $text .= $contents[$i];
            }
            return $text;
        }
        $Zip->close();
    }
    // In case of failure return empty string
    return "";
}

ZipArchiveDOMDocumentはどちらもPHP内にあるため、追加のライブラリをインストール/インクルード/必要とする必要はありません。

20
David Lin

PHPDocX を使用できます。

事実上すべてのHTMLCSSスタイルをサポートしています。さらに、テンプレートを使用して、replaceTemplateVariableByHTMLを介してHTMLにフォーマットを追加することもできます。

PHPDocXのHTMLメソッドでは、Wordスタイルを直接使用することもできます。次のようなものを使用できます。

$docx->embedHTML($myHTML, array('tableStyle' => 'MediumGrid3-accent5PHPDOCX'));

すべてのテーブルでMediumGrid3-accent5Wordスタイルを使用する場合。 embedHTMLメソッドとそのバージョンのテンプレート(replaceTemplateVariableByHTML)は継承を保持します。つまり、事前定義されたWordスタイルを使用して、そのプロパティのいずれかをCSSでオーバーライドできます。

'JQuery type'セレクターを使用して、HTMLの選択した部分を抽出することもできます。

3
Eduardo

これはあなたに役立つかもしれません DocxをHTMLに変換する方法

3
Mohammed Sufian

Print2flashライブラリを使用して、Wordのdocxドキュメントをhtmlに変換できます。これは、ドキュメントをhtmlに変換するクライアントのサイトからのPHPの抜粋です。

include("const.php");
$p2fServ = new COM("Print2Flash4.Server2");
$p2fServ->DefaultProfile->DocumentType=HTML5;
$p2fServ->ConvertFile($wordfile,$htmlFile);

$ wordfile変数でパスが指定されているドキュメントを、$ htmlFile変数で指定されているhtmlページファイルに変換します。すべての書式設定、ハイパーリンク、およびグラフが保持されます。 Print2flash SDK から、必要なconst.phpファイルと完全なサンプルをまとめて入手できます。

1
Ron

REST APIを拒否しない場合は、次を使用できます。

  • Apache Tika 。テキスト抽出の実績のあるOSSリーダーです
  • 構成に煩わされることなく、すぐに使えるソリューションが必要な場合は、 RawText を使用できますが、無料ではありません。

RawTextのサンプルコード:

$result = $rawText -> parse($your_file)
0
Ilya P