翼度科技»论坛 编程开发 PHP 查看内容

php将内容转为word

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
第一步,先对内容进行处理,html的内容不适合word,在使用phpword转换时,只接受p和span元素,其它元素都要清除掉
  1. $modifiedHtml 为内容
  2. $relust = check_table($modifiedHtml,'table'); // 判断是否存在table元素
  3. if($relust == 1){
  4. $modifiedHtml = table_to_div($modifiedHtml); //将内容中所有的table元素替换为p元素
  5. }
  6. $modifiedHtml = cleanAndReplaceHtmlWithBr($modifiedHtml);// 将内容中所有的段落标签都替换为p标签,并清除其它标签,只保留<p><img><a>这三种标签。
  7. $modifiedHtml = imgadddomain($modifiedHtml,'https://syjx.ihwrm.com');// 给本地图片的路径前面加上指定的域名
  8. $modifiedHtml = replaceAllImagesWithPlaceholder($modifiedHtml);//替换无效图片
  9. $modifiedHtml = replaceInvalidImages($modifiedHtml);//判断内容中图片是否为'jpg', 'jpeg', 'gif', 'png'
  10. $modifiedHtml = removeImgAttributesExceptSrc($modifiedHtml);//1 顺序不能错 移除 <img> 标签中的所有属性,除了 src 属性
  11. $modifiedHtml = modifyHtmlImages($modifiedHtml);//2 判断图片宽是否超过600,超过的就限制在600,没有600的就不用管
  12. $modifiedHtml = removeNestedPElements($modifiedHtml);//3 移除多余的p标签
  13. $modifiedHtml = removeUnmatchedClosingParagraphTags($modifiedHtml);//4 清除没有对应的p元素
  14. $modifiedHtml = extractBodyContent($modifiedHtml);//5 提取 <body> 和 </body> 之间的内容
  15. $modifiedHtml = ensureImgTagsAreClosed($modifiedHtml);//6 用php判断文章内容中所有的img标签是否闭合,没有闭合的添加一下闭合
复制代码
 
 
第二步
  1. $title =  标题;
  2. $content = 内容;
  3. use PhpOffice\PhpWord\IOFactory;
  4. use PhpOffice\PhpWord\PhpWord;
  5. use PhpOffice\PhpWord\Shared\Html;
  6. $phpWord = new PhpWord();
  7. $phpWord->addFontStyle('cStyle', array('size' => 12,'name' => '宋体'));//内容样式
  8. $phpWord->addFontStyle('cStyle1', array('size' => 16,'name' => '宋体','color' => '#333'));//内容样式
  9. $phpWord->addFontStyle('cStyle2', array('size' => 12,'name' => '宋体','color' => '#ff0000'));//链接样式
  10. $phpWord->addFontStyle('bStyle', array('size' => 12, 'bold' => true, 'name' => '宋体'));//加粗样式
  11. $phpWord->addFontStyle('titlestyle', array('bold' => true,'size' => 18,'name' => '宋体'));//标题的样式
  12. $section = $phpWord->addSection();
  13. $section->addTextBreak(2);
  14. $section->addText($title,'titlestyle', ['alignment' => 'center']);
  15. $section->addTextBreak(2);
  16. //$section->addText($content,'cStyle1', ['alignment' => 'left']);
  17. Html::addHtml($section, $content, false, false);
  18. $section->addTextBreak(5);
  19. $section->addText($datetime,'bStyle', ['alignment' => 'right']);
  20. $section->addTextBreak(5);
  21. $linkText = '本文链接:'.$link;
  22. $linkUrl = $link;
  23. $section->addLink($linkUrl, $linkText,'cStyle2');
  24. header('pragma:public');
  25. header('Content-type:application/vnd.ms-word;charset=utf-8;name="'.$file_name.'"');
  26. header("Content-Disposition:attachment;filename='.$file_name.'");//attachment新窗口打印inline本窗口打印
  27. header( 'Content-Type: image/jpeg');
  28. ob_clean();
  29. flush();
  30. $writer = IOFactory::createWriter($phpWord, 'Word2007');
  31. $writer->save($_SERVER['DOCUMENT_ROOT'].'/'.$file_path.'/'.$file_name);
  32. //向浏览器输出下载
  33. $writer->save('php://output');
复制代码
 

来源:https://www.cnblogs.com/zhaoying/p/18529536
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具