如何使用php将docx文档转换为html?

2022-08-30 23:22:24

我希望能够上传MS Word文档并将其导出到我的站点中的页面。

有没有办法做到这一点?


答案 1
//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内部,所以你不需要安装/包含/需要额外的库。


答案 2

可以使用 PHPDocX

它几乎支持所有HTML CSS样式。此外,您可以使用模板通过 向 HTML 添加额外的格式。replaceTemplateVariableByHTML

PHPDocX的HTML方法也允许直接使用Word样式。您可以使用类似如下的方法:

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

如果您希望所有表都使用 MediumGrid3 重音 5 Word 样式。embedHTML 方法及其模板版本 () 保留继承,这意味着您可以使用预定义的 Word 样式并使用 CSS 重写其任何属性。replaceTemplateVariableByHTML

您还可以使用“JQuery类型”选择器提取HTML的选定部分。


推荐