wordpress插件大全?开发WordPress插件并将其发布到正式插件库的完整指南小白也可以
开发和发布自己的wordpress插件到官方插件库完全指南wordpress是一款很流行的开源博客程序,全世界有很多网站都在使用wordpress,程序员们也喜欢拿来做自己的技术博客,对于自己不满意的
顺晟科技
2021-06-28 17:25:30
241
最近一段时间一直在研究利用php脚本让word文档转html的方法,下面就记录了一个利用php的插件phpword实现word文档转html的方法。
安装phpword通过下面的命令来安装 phpword插件
composer require phpoffice/phpwordphpword实现 word 转 html 的方法示例
$info = 'ee.docx';
//加载word文件 并 通过getSections获取word文档的全部元素
$sections = \PhpOffice\PhpWord\IOFactory::load($info)->getSections();
//定义html变量用于存储word文本内容
$html = '';
//循环所有元素
foreach($sections as $section) {
//获取当前元素的所有子元素
$elements = $section->getElements();
//循环当前子元素
foreach ($elements as $eky => $evl) {
$html .= '<p>';
if ($evl instanceof PhpOffice\PhpWord\Element\TextRun) { //判断是否普通文本
$content_elements = $evl->getElements();
foreach ($content_elements as $eky2 => $evl2) {
$html .= elementHandler($evl2, $evl);
}
}elseif($evl instanceof PhpOffice\PhpWord\Element\PreserveText){ //判断是否保留元素(如自动生成链接的网址元素)
$data = $evl->getText();
$find = array('{','HYPERLINK','}',' ','"','f','g');
$replace = '';
$resText = str_replace($find, $replace, $data);
if(isset($resText)){
$html .= $resText[0];
}
}elseif($evl instanceof PhpOffice\PhpWord\Element\Table){
$all_table_elements = $evl->getRows();
$html .= '<table style="margin:0;padding:0;border-collapse:collapse;border-spacing:0;" >';
foreach ($all_table_elements as $tky => $tvl) {
$html .= '<tr style="padding:0">';
$all_table_cells = $tvl->getCells();
foreach ($all_table_cells as $cky => $cvl){
$cell_elements = $cvl->getElements();
//获取表格宽度(返回单位为:缇)
$td_width = $cvl->getWidth();
$td_width_px = round($cvl->getWidth()/15,0);
$html .= '<td style="border: 1px solid #777777;padding:2px 5px;width:'.$td_width_px.'">';
foreach ($cell_elements as $cl){
//判断当存在elements属性时执行
if( property_exists($cl, 'elements') ){
$content_elements = $cl->getElements();
foreach ($content_elements as $eky2 => $evl2) {
$html .= elementHandler($evl2, $cl);
}
}
}
$html .= '</td>';
}
$html .= '</tr>';
}
$html .= '</table>';
}
$html .= '</p>';
}
}
//保存为 html 文件
file_put_contents('2.html',$html);
//输出 html 内容到浏览器
echo $html;
function elementHandler($end_element, $parent_element)
{
$html = '';
if ($end_element instanceof PhpOffice\PhpWord\Element\Text) { //判断是否普通文本
$style = $end_element->getFontStyle();
//$fontFamily = mb_convert_encoding($style->getName(), 'GBK', 'UTF-8');
$fontFamily = $style->getName();
$fontSize = $style->getSize() ? ($style->getSize()/72)*96 : '';
$isBold = $style->isBold();
$fontcolor = $style->getColor();
$styleString = '';
$fontFamily && $styleString .= "font-family:{$fontFamily};";
$fontSize && $styleString .= "font-size:{$fontSize}px;";
$isBold && $styleString .= "font-weight:bold;";
$fontcolor && $styleString .= "color:{$fontcolor};";
$html .= sprintf('<span style="%s">%s</span>',
$styleString,$end_element->getText()
//mb_convert_encoding($evl2->getText(), 'GBK', 'UTF-8')
);//dump($end_element->getText());
}elseif ($end_element instanceof PhpOffice\PhpWord\Element\Link) { //判断是否链接
$style = $end_element->getFontStyle();
//$fontFamily = mb_convert_encoding($style->getName(), 'GBK', 'UTF-8');
$fontFamily = $style->getName();
$fontSize = $style->getSize() ? ($style->getSize()/72)*96 : '';
$isBold = $style->isBold();
$fontcolor = $style->getColor();
$styleString = '';
$fontFamily && $styleString .= "font-family:{$fontFamily};";
$fontSize && $styleString .= "font-size:{$fontSize}px;";
$isBold && $styleString .= "font-weight:bold;";
$fontcolor && $styleString .= "color:{$fontcolor};";
$html .= sprintf('<a href="%s" style="%s">%s</a>',
$end_element->getSource(), $styleString, $end_element->getText()
//mb_convert_encoding($evl2->getText(), 'GBK', 'UTF-8')
);
} elseif ($end_element instanceof PhpOffice\PhpWord\Element\Image) { //判断是否图片
//可以在这里执行自定义方法将图片上传到OSS或者图片服务器哈
$imageDataTmp = $end_element->getImageStringData(true);
$imageType = $end_element->getImageType() ? $end_element->getImageType() : 'image/jpg';
$imageData = 'data:' . $imageType . ';base64,' . str_replace(array("\r\n", "\r", "\n"), "", $imageDataTmp);
//保存文件
//$imageSrc = './uploads/' . md5($end_element->getSource()) . '.' . $end_element->getImageExtension();
//file_put_contents($imageSrc,base64_decode(explode(',',$imageData)[1]));
$html .= '<img src="'. $imageData .'" style="width:;height:auto">';
}
return $html;
}PS:上面的代码只是大致的把逻辑思路,各位如果使用可自行修改代码!
26
2023-02
17
2022-11
02
2022-11
15
2022-09
15
2022-09
15
2022-09