2011-01-03 45 views
15

Tôi muốn có thể tải lên tài liệu từ MS và xuất một trang trong trang web của tôi.Làm cách nào để chuyển đổi tài liệu docx sang html bằng php?

Có cách nào để thực hiện việc này không?

+0

cách của bạn là để đi với [LiveDocx] (http://www.livedocx.com/), bạn sẽ cần một [tài khoản] (http://www.livedocx.com/pub/pricing.aspx). Sau đó, hãy làm theo [hướng dẫn] này (http://www.phplivedocx.org/2009/08/13/convert-docx-doc-rtf-to-html-in-php/) hoặc tự học cách bạn có thể sử dụng [ Zend_Service_LiveDocx] (http://framework.zend.com/manual/en/zend.service.livedocx.html). – mika1

+0

Bạn có thể sử dụng [phpLiveDocx] (http://www.phplivedocx.org/2009/08/13/convert-docx-doc-rtf-to-html-in-php/) cho điều đó. – Sarfraz

+0

Tôi không ghê gớm lắm với php - nhưng có lẽ điều này có thể giúp bạn? [phpLiveDocx -Chuyển DOCX sang HTML bằng PHP] (http: //www.phplivedocx.org/2009/08/13/convert-docx-doc-rtf-to-html-in-php /) –

Trả lời

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 ""; 
} 

ZipArchiveDOMDocument đều bên trong PHP, do đó bạn không cần phải cài đặt/include/đòi hỏi các thư viện bổ sung.

+8

Cảm ơn thats hoàn hảo, nhưng có cách nào để giữ định dạng như in đậm và in nghiêng –

+0

Cảm ơn ... nó đang trả lại toàn bộ tài liệu. nhưng có cách nào để nhận các trang văn bản riêng lẻ không! –

3

Có thể sử dụng PHPDocX.

Nó có hỗ trợ thực tế tất cả các kiểu CSS HTML. Hơn nữa, bạn có thể sử dụng các mẫu để thêm định dạng bổ sung vào HTML của mình qua replaceTemplateVariableByHTML.

Các phương pháp HTML của PHPDocX cũng cho phép sử dụng trực tiếp các kiểu Word. Bạn có thể sử dụng một cái gì đó như thế này:

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

Nếu bạn muốn rằng tất cả các bảng của bạn sử dụng phong cách MediumGrid3-accent5 Word. Phương thức nhúng HTML cũng như phiên bản của nó cho các mẫu (replaceTemplateVariableByHTML) bảo tồn kế thừa, có nghĩa là bạn có thể sử dụng kiểu Word được xác định trước và ghi đè bằng CSS bất kỳ thuộc tính nào của nó.

Bạn cũng có thể trích xuất các phần được chọn của HTML bằng cách sử dụng bộ chọn 'Loại truy vấn JQuery'.

1

Bạn có thể chuyển đổi tài liệu Word docx html sử dụng thư viện Print2flash. Dưới đây là một đoạn trích PHP từ trang web của khách hàng của tôi mà chuyển đổi một tài liệu để html:

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

Nó chuyển đổi một tài liệu mà con đường được quy định trong biến $ wordfile vào một tập tin trang html được xác định bởi biến $ htmlFile. Tất cả các định dạng, siêu liên kết và biểu đồ được giữ lại. Bạn có thể nhận tệp const.php bắt buộc hoàn toàn với mẫu đầy đủ hơn từ Print2flash SDK.

0

Nếu bạn không từ chối REST API, sau đó bạn có thể sử dụng:

  • Apache Tika. Là một nhà lãnh đạo OSS đã được chứng minh để khai thác văn bản
  • Nếu bạn không muốn gặp rắc rối với việc định cấu hình và muốn giải pháp sẵn sàng để đi, bạn có thể sử dụng RawText, nhưng nó không miễn phí.

Mẫu mã cho RawText:

$result = $rawText -> parse($your_file) 
Các vấn đề liên quan