2011-01-03 11 views
15

Chcę móc przesłać dokument MS Word i wyeksportować go na stronę w mojej witrynie.Jak przekonwertować dokument docx na HTML przy użyciu php?

Czy jest jakiś sposób, aby to osiągnąć?

+0

Twój sposobem jest pójść z [LiveDocx] (http://www.livedocx.com/), będziesz potrzebował [konto] (http://www.livedocx.com/pub/pricing.aspx). Następnie postępuj zgodnie z [poradnikiem] (http://www.phplivedocx.org/2009/08/13/convert-docx-doc-rtf-to-html-in-php/) lub dowiedz się sam, jak możesz użyć [ Zend_Service_LiveDocx] (http://framework.zend.com/manual/en/zend.service.livedocx.html). – mika1

+0

Możesz użyć do tego celu [phpLiveDocx] (http://www.phplivedocx.org/2009/08/13/convert-docx-doc-rtf-to-html-in-php/). – Sarfraz

+0

Nie jestem strasznie znany z php - ale może to może ci pomóc? [phpLiveDocx - Konwersja DOCX do HTML w PHP] (http: //www.phplivedocx.org/2009/08/13/convert-docx-doc-rtf-to-html-in-php /) –

Odpowiedz

20
//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 i DOMDocument są zarówno wewnątrz jak PHP, dzięki czemu nie trzeba instalować/include/wymagać dodatkowych bibliotek.

+8

Dzięki to doskonały, ale czy istnieje sposób, aby zachować formatowanie, takie jak pogrubienie i kursywa słowa –

+0

Dzięki ... to zwraca cały dokument. ale czy istnieje jakiś sposób, aby uzyskać indywidualny tekst stron! –

3

Można użyć PHPDocX.

Obsługuje praktycznie wszystkie style CSS HTML. Ponadto możesz użyć szablonów, aby dodać dodatkowe formatowanie do HTML za pomocą replaceTemplateVariableByHTML.

Metody HTML w PHPDocX umożliwiają również bezpośrednie korzystanie ze stylów Worda. Można użyć czegoś takiego:

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

Jeśli chcesz, aby wszystkie tabele użyć stylu MediumGrid3-accent5 programu Word. Metoda embedHTML, jak również jej wersja dla szablonów (replaceTemplateVariableByHTML) zachowują dziedziczenie, co oznacza, że ​​możesz użyć predefiniowanego stylu Word i zastąpić CSS dowolną z jego właściwości.

Można również wyodrębnić wybrane części kodu HTML za pomocą selektorów typu "JQuery".

1

można konwertować dokumenty Word docx do HTML za pomocą Print2Flash bibliotekę. Oto fragment PHP ze strony mojego klienta, który konwertuje dokument html:

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

Przekształca dokument która ścieżka jest określony w zmiennej $ WordFile do pliku strony HTML określonym przez zmienną $ HTMLFILE. Wszystkie formatowanie, hiperłącza i wykresy są zachowywane. Możesz uzyskać wymagany plik const.php wraz z pełniejszą próbką z Print2flash SDK.

0

Jeśli nie odmówi REST API, a następnie można użyć:

  • Apache Tika. Czy sprawdzony lider OSS do ekstrakcji tekstu?
  • Jeśli nie chcesz kłopotów z konfiguracją i potrzebujesz gotowego rozwiązania, możesz użyć RawText, ale nie jest to bezpłatne.

Przykładowy kod rawText:

$result = $rawText -> parse($your_file) 
Powiązane problemy