当前位置: 首页 > news >正文

游戏推广合作seo职业培训班

游戏推广合作,seo职业培训班,118论坛,做征婚网站有哪些因有些功能不支持,所以新增了某些功能,以防后期变动不好变更,手动做个记录 将公式替换成指定的符号,读取到 html 后读取 xml 解析公式,根据标记符号进行替换 文件名PhpOffice\PhpWord\Shared\XMLReader.php public fun…

因有些功能不支持,所以新增了某些功能,以防后期变动不好变更,手动做个记录

  1. 将公式替换成指定的符号,读取到 html 后读取 xml 解析公式,根据标记符号进行替换
    文件名PhpOffice\PhpWord\Shared\XMLReader.php
public function getDomFromZip($zipFile, $xmlFile){if (file_exists($zipFile) === false) {throw new \Exception('Cannot find archive file.');}$zip = new \ZipArchive();$zip->open($zipFile);$content = $zip->getFromName($xmlFile);$zip->close();if ($content === false) {return false;}if($xmlFile === 'word/document.xml'){// 字符串替换,将公式替换成$Math$$content = preg_replace('/<m:oMath>[\s|\S]*?<\/m:oMath>/', '<w:r><w:t>$Math$</w:t></w:r>', $content);// 后续在将$Math$标记替换为对应的处理过的mathml公式(或latex表达式、公式图片)}return $this->getDomFromString($content);}

公式转换传送大飞机来咯!

  1. 表格的单元格宽度的单位
    文件名PhpOffice\PhpWord\Reader\Word2007\AbstractPart.php
protected function readTable(){//...foreach ($rowNodes as $rowNode) {if ('w:trPr' == $rowNode->nodeName) { // Row style// @todo Do something with row style} elseif ('w:tc' == $rowNode->nodeName) { // Cell$cellWidth = $xmlReader->getAttribute('w:w', $rowNode, 'w:tcPr/w:tcW');$cellStyle = null;$cellStyleNode = $xmlReader->getElement('w:tcPr', $rowNode);if (!is_null($cellStyleNode)) {$cellStyle = $this->readCellStyle($xmlReader, $cellStyleNode);}$cell = $row->addCell($cellWidth, $cellStyle);// ----------以下为新增部分// 设置单位$cellUnit = $xmlReader->getAttribute('w:type', $rowNode, 'w:tcPr/w:tcW');$cell->setUnit($cellUnit);// ----------以上为新增部分$cellNodes = $xmlReader->getElements('*', $rowNode);foreach ($cellNodes as $cellNode) {if ('w:p' == $cellNode->nodeName) { // Paragraph$this->readParagraph($xmlReader, $cellNode, $cell, $docPart);}}}}}//...
}
  1. 内容的对齐样式
    文件名Element\AbstractContainer.php
    protected function addElement($elementName){$elementClass = __NAMESPACE__ . '\\' . $elementName;$this->checkValidity($elementName);// Get arguments$args = func_get_args();$withoutP = in_array($this->container, array('TextRun', 'Footnote', 'Endnote', 'ListItemRun', 'Field'));if ($withoutP && ($elementName == 'Text' || $elementName == 'PreserveText')) {// 此处不知道为何要把样式移除,移除后的段落无alignment样式了,故把此代码注释了,不知会有何遗留问题,待发现。// $args[3] = null; // Remove paragraph style for texts in textrun}// ........}
  1. 新增首行缩进功能
    文件Style\Paragraph.php
    /*** 缩进字符** @var integer* @Author * @DateTime 2022-11-03*/private $firstLineChars = 0; //新增属性// 修改方法public function getStyleValues(){$styles = array(// ...'indentation'         => $this->getIndentation(),// ------新增内容开始'firstLineChars'      => $this->getFirstLineChars(),// ------新增内容结束'spacing'             => $this->getSpace(),'pagination'          => array('widowControl'    => $this->hasWidowControl(),'keepNext'        => $this->isKeepNext(),'keepLines'       => $this->isKeepLines(),'pageBreak'       => $this->hasPageBreakBefore(),),// ...);return $styles;}新增方法/*** Get getFirstLineChars** */public function getFirstLineChars(){return $this->firstLineChars;}/*** Set getFirstLineChars** */public function setFirstLineChars($num = 0){$this->firstLineChars = $num;}

文件Reader\Word2007\AbstractPart.php

    protected function readParagraphStyle(XMLReader $xmlReader, \DOMElement $domNode){if (!$xmlReader->elementExists('w:pPr', $domNode)) {return null;}$styleNode = $xmlReader->getElement('w:pPr', $domNode);$styleDefs = array('styleName'           => array(self::READ_VALUE, array('w:pStyle', 'w:name')),'alignment'           => array(self::READ_VALUE, 'w:jc'),'basedOn'             => array(self::READ_VALUE, 'w:basedOn'),'next'                => array(self::READ_VALUE, 'w:next'),'indent'              => array(self::READ_VALUE, 'w:ind', 'w:left'),'hanging'             => array(self::READ_VALUE, 'w:ind', 'w:hanging'),'firstLineChars'      => array(self::READ_VALUE, 'w:ind', 'w:firstLineChars'), //新增首行缩进'spaceAfter'          => array(self::READ_VALUE, 'w:spacing', 'w:after'),'spaceBefore'         => array(self::READ_VALUE, 'w:spacing', 'w:before'),'widowControl'        => array(self::READ_FALSE, 'w:widowControl'),'keepNext'            => array(self::READ_TRUE,  'w:keepNext'),'keepLines'           => array(self::READ_TRUE,  'w:keepLines'),'pageBreakBefore'     => array(self::READ_TRUE,  'w:pageBreakBefore'),'contextualSpacing'   => array(self::READ_TRUE,  'w:contextualSpacing'),'bidi'                => array(self::READ_TRUE,  'w:bidi'),'suppressAutoHyphens' => array(self::READ_TRUE,  'w:suppressAutoHyphens'),);return $this->readStyleDefs($xmlReader, $styleNode, $styleDefs);}
  1. 读取单元格的边框和颜色

文件名PhpOffice\PhpWord\Reader\Word2007\AbstractPart.php

    /*** Read w:tcPr** @param \PhpOffice\PhpWord\Shared\XMLReader $xmlReader* @param \DOMElement $domNode* @return array*/private function readCellStyle(XMLReader $xmlReader, \DOMElement $domNode){$styleDefs = array('vlign'        => array(self::READ_VALUE, 'w:vAlign'),'textDirection' => array(self::READ_VALUE, 'w:textDirection'),'gridSpan'      => array(self::READ_VALUE, 'w:gridSpan'),'vMerge'        => array(self::READ_VALUE, 'w:vMerge'),'bgColor'       => array(self::READ_VALUE, 'w:shd', 'w:fill'),);// ------新增内容开始$borders = array('top', 'left', 'bottom', 'right');if ($xmlReader->elementExists('w:tcBorders', $domNode)) {foreach ($borders as $side) {$ucfSide = ucfirst($side);$styleDefs["border{$ucfSide}Size"] = array(self::READ_VALUE, "w:tcBorders/w:$side", 'w:sz');$styleDefs["border{$ucfSide}Color"] = array(self::READ_VALUE, "w:tcBorders/w:$side", 'w:color');$styleDefs["border{$ucfSide}Style"] = array(self::READ_VALUE, "w:tcBorders/w:$side", 'w:val');}}// ------新增内容结束return $this->readStyleDefs($xmlReader, $domNode, $styleDefs);}
  1. 解析图片宽度
    namespace PhpOffice\PhpWord\Reader\Word2007\AbstractPart.php;
    protected function readRunChild(XMLReader $xmlReader, \DOMElement $node, AbstractContainer $parent, $docPart, $paragraphStyle = null, $fontStyle = null){if ($node->nodeName == 'w:drawing') {if (!is_null($target)) {if(strpos($target,'wmf') === false){// 2022/12/28 日新增读取图片宽度$imgShowWidth = $xmlReader->getAttribute('cx', $node, 'wp:inline/wp:extent');if($imgShowWidth == null){$imgShowWidth = $xmlReader->getAttribute('cx', $node, 'wp:anchor/wp:extent');}$imageSource = "zip://{$this->docFile}#{$target}";$parent->addImage($imageSource, null, false, $name,$imgShowWidth);}else{$textContent = "{error:不支持mathtype}";$parent->addText($textContent, $fontStyle, $paragraphStyle);}}}}
http://www.ds6.com.cn/news/19434.html

相关文章:

  • 展示型为主的网站搜索关键词热度
  • 最好设计网站建设企业邮箱如何申请注册
  • 营销qq和企业qq区别廊坊百度提升优化
  • 用vue-cli做的网站关键词歌词林俊杰
  • 广告点击网站源码珠海关键词优化软件
  • 重庆网站开发哪家专业精准营销推广方案
  • 网站委托书找谁做seo外包公司兴田德润官方地址
  • 届毕业设计代做网站平台关键词排名优化
  • wordpress教育类主题安徽seo网络优化师
  • 武汉光谷疫情最新消息seo如何去做优化
  • 百度关于垃圾网站的处理厦门seo顾问
  • 陕西企业网站建设价格专业软文发布平台
  • 那些影视解析网站怎么做的百度区域代理
  • 做网站好公司有哪些南京seo网络优化公司
  • 杭州网站设计首选柚米海外营销公司
  • 企业查询免费网站电脑优化工具
  • Wordpress文章关键字和tag标签长沙seo网络优化
  • php做网站首页网站排名优化查询
  • 做网站标题网站如何快速被百度收录
  • 焦作网站建设哪家正规济南网站优化公司哪家好
  • 做商城购物网站沧州网站建设
  • 打开百度网站建设打开搜索引擎
  • 银川网站建设怎么样seo网站快速排名外包
  • 高密哪里做网站好一份完整的活动策划方案
  • 国际贸易网登录沈阳专业网站seo推广
  • 网站建设需求文档模板下载电商网站设计方案
  • 房屋中介做网站的书籍北京seo顾问服务
  • 提示危险网站在百度做广告多少钱
  • 企业做网站要注意哪些营销活动推广策划
  • html5 微信网站 源码网络培训平台