PHP实现对word文档的读取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP实现对word文档的读取相关的知识,希望对你有一定的参考价值。

现在有一个项目,语言:php,功能要求是在后台上传doc文档(包括图片和表格),然后前台能够正常显示出来,要怎样实现,麻烦提供一下代码!!帮忙帮忙,答好加分
据说可以用GD函数将word文档里的内容给变成图片输出,不知道各位有没这方面的经历,谢谢各位了啊,如果有提供一下代码。

传就传吧,后台传什么文件都可以,原样保留在文件夹下面就行了,天台的直接指向它,只要前台安装了相应的程序就能打开,例如指向一个WORD的代码可以是:

<a href=xxx.doc>WORD附件</a>

你可能觉得这样很不好,前台会弹出WORD窗口打开文件。但是没有别的完美的办法,因为把WORD转换为html都会丢失重要信息的:文件内部链接会丢失、文件打印格式会丢失、文件显示格式也不完全支持,甚至会变得很难看。

一句话,你的后台最好不要对WORD文件进行处理,尽管有方法(就是使用DCOM调用WORD打开文件,然后另存为网页格式)
参考技术A 建义你用文本编译器! 参考技术B 唉,又是微软的东西,以前倒是弄过,感觉word的是最恶的了,建议你还是马上换思路,因为php弄word你可要着实要费劲了,祝你好运 参考技术C 如果在windows服务器上,可以用word的com读取。
unix上,就没有办法了,虽然可以按照文本的办法读取和解析,但这种会丢失很多格式

php实现word转html文档的例子

php实现word转html文档的例子

word文档不适合放到网页上了,如果我们要放到网页中去是需要一个个复制了,如果你还在复制就out了,下文小编来为各位整理一篇php实现word转html文档的例子,希望文章对各位有帮助。

要想完美解决,office转pdf或者html,最好还是用windows office软件,libreoffice不能完美转换,wps没有api。

先确认com模块是不是开启,phpinfo里面如果有com_dotnet模块,说明已开启,如果没有,修改PHP.ini,
com.allow_dcom = true

前面的注释去掉,重启就OK了,php官方网站说,php5.4.5之前,com模块是内置的,其实也不一定全是,官网下的php 5.3.39,com模块就没有内置。

如果不是内置模块的话,php.ini加上,前提你的ext文件夹下,有该扩展

extension=php_com_dotnet.dll

然后重启就OK了

 

[php] view plain copy
 
 print?
  1. function word2html($wordname,$htmlname)   
  2.  {   
  3.  $word = new COM("word.application") or die("Unable to instanciate Word");   
  4.  $word->Visible = 1;   
  5.  $word->Documents->Open($wordname);   
  6.  $word->Documents[1]->SaveAs($htmlname,8);   
  7.  $word->Quit();   
  8.  $word = null;   
  9.  unset($word);   
  10.  }   
  11.    
  12. word2html(‘D:/www/test/6.docx‘,‘D:/www/test/6.html‘);   

注意:

1,转换出来的html,查看源码,比较乱的
2,转换过程中会调用winword.exe
3,如果页面一直在加载,把文档重命名,然后在重新转。

补充一个例子

 

[php] view plain copy
 
 print?
  1. function lego_clean($text) {    
  2.    
  3.     $text = implode("\r",$text);    
  4.    
  5.     // normalize white space    
  6.     $text = eregi_replace("[[:space:]]+", " ", $text);    
  7.     $text = str_replace("> <",">\r\r<",$text);    
  8.     $text = str_replace("<br>","<br>\r",$text);    
  9.    
  10.     // remove everything before <body>    
  11.     $text = strstr($text,"<body");    
  12.    
  13.     // keep tags, strip attributes    
  14.     $text = ereg_replace("<p [^>]*BodyTextIndent[^>]*>([^\n|\n\015|\015\n]*)</p>","<p>\\1</p>",$text);    
  15.     $text = eregi_replace("<p [^>]*margin-left[^>]*>([^\n|\n\015|\015\n]*)</p>","<blockquote>\\1</blockquote>",$text);    
  16.     $text = str_replace(" ","",$text);    
  17.    
  18.     //clean up whatever is left inside <p> and <li>    
  19.     $text = eregi_replace("<p [^>]*>","<p>",$text);    
  20.     $text = eregi_replace("<li [^>]*>","<li>",$text);    
  21.    
  22.     // kill unwanted tags    
  23.     $text = eregi_replace("</?span[^>]*>","",$text);    
  24.     $text = eregi_replace("</?body[^>]*>","",$text);    
  25.     $text = eregi_replace("</?div[^>]*>","",$text);    
  26.     $text = eregi_replace("<\![^>]*>","",$text);    
  27.     $text = eregi_replace("</?[a-z]\:[^>]*>","",$text);    
  28.    
  29.     // kill style and on mouse* tags    
  30.     $text = eregi_replace("([ \f\r\t\n\‘\"])style=[^>]+", "\\1", $text);    
  31.     $text = eregi_replace("([ \f\r\t\n\‘\"])on[a-z]+=[^>]+", "\\1", $text);    
  32.    
  33.     //remove empty paragraphs    
  34.     $text = str_replace("<p></p>","",$text);    
  35.    
  36.     //remove closing </html>    
  37.     $text = str_replace("</html>","",$text);    
  38.    
  39.     //clean up white space again    
  40.     $text = eregi_replace("[[:space:]]+", " ", $text);    
  41.     $text = str_replace("> <",">\r\r<",$text);    
  42.     $text = str_replace("<br>","<br>\r",$text);    
  43. }  




以上是关于PHP实现对word文档的读取的主要内容,如果未能解决你的问题,请参考以下文章

php 怎么实现读取word文档内容,显示到html上面?能给个案例最好了,谢谢!

用php读取word文档内容

用php 读取word 文档内容 比如:word文档为试题等等

PHP读取word文档内容的方法

asp.net页面读取word文档内容显示

php实现word转html文档的例子