Как я могу преобразовать документ DOCX в HTML, используя PHP? - PullRequest
16 голосов
/ 03 января 2011

Я хочу иметь возможность загрузить документ MS Word и экспортировать его на свой сайт.

Есть ли способ сделать это?

Ответы [ 5 ]

20 голосов
/ 11 июля 2011
//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 "";
}

ZipArchive и DOMDocument находятся внутри PHP, поэтому вам не нужно устанавливать / включать / требовать дополнительные библиотеки.

3 голосов
/ 25 января 2014

это может быть полезно для вас Как конвертировать Docx в HTML

3 голосов
/ 01 сентября 2012

Можно использовать PHPDocX .

. Имеет поддержку практически всех стилей HTML CSS.Более того, вы можете использовать шаблоны для добавления дополнительного форматирования в ваш HTML через replaceTemplateVariableByHTML.

. Методы HTML в PHPDocX также позволяют прямое использование стилей Word.Вы можете использовать что-то вроде этого:

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

Если вы хотите, чтобы все ваши таблицы использовали стиль Word MediumGrid3-accent5.Метод embedHTML, а также его версия для шаблонов (replaceTemplateVariableByHTML) сохраняют наследование, что означает, что вы можете использовать предопределенный стиль Word и переопределять с помощью CSS любые его свойства.

Вы также можете извлекать выбранные частивашего HTML с помощью селекторов типа JQuery.

1 голос
/ 09 мая 2016

Вы можете конвертировать документы Word docx в html, используя библиотеку Print2flash. Вот отрывок PHP с сайта моего клиента, который преобразует документ в html:

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

Преобразует документ, путь которого указан в переменной $ wordfile, в файл html-страницы, указанный в переменной $ htmlFile. Все форматирование, гиперссылки и графики сохраняются. Вы можете получить требуемый файл const.php вместе с более полным образцом из Print2flash SDK .

0 голосов
/ 16 мая 2017

Если вы не отказываетесь от REST API, вы можете использовать:

  • Apache Tika . Является проверенным лидером OSS для извлечения текста
  • Если вы не хотите беспокоиться о настройке и хотите получить готовое решение, вы можете использовать RawText , но это не бесплатно.

Пример кода для RawText:

$result = $rawText -> parse($your_file)
...