2013-10-28 60 views
4

我有一段代码用于读取MS Office Word文档。使用php读取带有图像的Ms文档word文档

它只读取文本不是所有的内容。

<?php 
function read_file_docx($filename){ 

    $striped_content = ''; 
    $content = ''; 
    if(!$filename || !file_exists($filename)) return false; 
    $zip = zip_open($filename); 
    if (!$zip || is_numeric($zip)) return false; 
while ($zip_entry = zip_read($zip)) { 
     if (zip_entry_open($zip, $zip_entry) == FALSE) continue; 
     if (zip_entry_name($zip_entry) != "word/document.xml") continue; 
     $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 
     zip_entry_close($zip_entry); 
    } 

    zip_close($zip); 
    $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); 
    $content = str_replace('</w:r></w:p>', "\r\n", $content); 
    $striped_content = strip_tags($content); 

    return $striped_content; 
} 

$ filename =“customers.docx”;

$content = read_file_docx($filename); 
if($content !== false) { 

    echo nl2br($content); 
} 
else { 
    echo 'Couldn\'t the file. Please check that file.'; 
} 

?> 

我想要读取图像,图表和所有内容,并将其显示在网页中。

+0

当你说读时,你究竟是什么意思?您是否试图获取文档的各个部分,或者您是否打算以原始格式和结构呈现文档? – Brad

+0

我打算呈现整个文档及其中的所有内容。 –

+0

可靠地做到这一点的唯一方法是启动Word的副本并使用其API。否则,你可能会花费数年时间来研究这个问题只要问问那些对OpenOffice有贡献的人。 :-D – Brad

回答

2

我认为你应该先将命令行Open Office或 Libre Office更改为pdf文档。

与自由报办公室那就是:

libreoffice --headless --convert-to pdf your_file_name.doc 

然后用pdf.js(https://github.com/mozilla/pdf.js/),以显示在您的网站的文件(你没有需要使用Adobe Reader)

这里是另一个最小例如 https://github.com/vivin/pdfjs-text-selection-demo(读minimal.js文件,了解PDF是如何插入)

第二个选项是文档转换为DOCX和使用https://github.com/stephen-hardy/DOCX.js

+0

这很好,但我在一些站点看到他们正在显示doc文件并提供编辑选项。 –

+1

@Mahendra更新回答docx.js –

+1

关于编辑他们是一些商业项目+ http://en.wikipedia.org/wiki/Feng_Office_Community_Edition –

1

如果您想要自行提取所有文档内容并将其转换为匹配的网页显示,我建议您阅读Microsoft规定的格式。


如果你只是想找提取的MS Word文档的内容的一种便捷方式,我会小号强烈建议寻找已经处理文档处理和提取的库。

我知道有2个项目正在PHP中处理MS Office文档。

  • PHPOffice/PHPWord(我不知道多远的项目的话分公司的发展。该项目起源于规模较小,仅支持MS Excel中,但他们现在正在研究Word和PowerPoint以及)

  • PHPDocX(这是一个分裂的项目,你可以得到一个LGPL授权版本设定的基本特征或商业付费版本,其中应该处理与你共同word文档找到最多的事)

H T H

+0

@Mastacheta我试过这支持高达MS字2007不是更高版本任何有任何建议感谢 –

+0

@Mahendra是否有任何您需要的东西,只有在Office 2010或2013年才可用?我一直认为文件格式兼容前向和后向。 – Mastacheata

1

您应该检查出Aspose Cloud。 它的服务,允许您将docx转换为html

它在github上有一个PHP SDK

有一个免费的选择,如果你每月将低于100个文件

好运

-1

link可能对你有帮助。这与你的问题类似。

+0

虽然这篇文章被选为答案,但是对于同一个SO问题的[link-only-answer](http://i.stack.imgur.com/JLSse.png)被删除了,因为没有回答这个问题。 – billinkc