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

asp.net mvc 做网站长治网站制作厂家

asp.net mvc 做网站,长治网站制作厂家,免费ppt模板网站下载,江苏住房和城乡建设局网站因有些功能不支持,所以新增了某些功能,以防后期变动不好变更,手动做个记录 将公式替换成指定的符号,读取到 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.yayakq.cn/news/25270/

相关文章:

  • 做微商在哪个网站打广告好柳州建设网栗园新居
  • 手机建公司网站网站建设属于什么类的采购
  • 国外优秀的平面设计网站手机商城app开发公司
  • 网站主持人制作方法wordpress 图片收录
  • 怎样做网站后台优化快速排名新
  • 90设计网站可以商用吗濮阳网络电视台
  • 久久建筑网论坛关键词排名优化提升培训
  • wordpress登陆logo湛江市seo网站设计哪里好
  • 京东pc网站用什么做的dnf怎么做发卡网站
  • 响应式网站展示型网站建设制作模板
  • 遵义制作公司网站的公司十大跨境电商公司排名
  • 在线公司网站查询wordpress文章保存目录
  • 手机网站免费优化湖南外发加工网
  • 门户网站 特点电商网站代码设计
  • 辽宁省建设安装集团网站微信短网址生成
  • 网站应如何设计协会工作方案网站建设困难
  • 自己建网站百度到吗做网站需要用什么开发软件
  • 当涂 微网站开发公司正规游戏代理平台
  • 谁给推荐一个免费的好网站织梦网站建设交流群
  • 湛江网站关键词优化前端工作好找吗
  • 唐山做企业网站公司html企业网站模板
  • 学校网站制作价格自己做网站百度会收录
  • 2016年网站设计风格青岛企业建站系统
  • 山东省示范校建设网站百度一下首页官网百度
  • 淄博网站运营公司注册域名后怎么做网站
  • 免费的静态网站托管成都 网站建设 公司
  • 韩文网站域名备案cms内容管理系统是什么
  • 网站制作新技术wordpress newcon
  • 网站设计论文分类号yw55516can优物入口
  • php网站建设全程实例做网站年入千万