Skip to main content
 首页 » 编程设计

php PhpPresentation 修改折线图x轴y轴的字体大小

2022年07月29日130insus

使用PhpPresentation生成折线图时默认的刻度字体是10px,如下所示

 这个字体有点小,但我在PhpPresentation 中没有找到修改字体大小的接口。。

解决方法是修改坐标轴刻度的字体大小为17px,将ppt另存为为xml文件,通过对比两份字体不同xml文件之间的差异,看看是哪些代码可以修改坐标刻度的字体大小,然后作出相应调整(xml可以选择浏览器打开)

默认的xml

 修改字体为17px的xml

找到PhpPresentation中生成折线图Axis的代码,在对应的位置进行修改

对应的文件为:src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php

找到writeAxis方法中生成</c:spPr>的地方,可以发现生成完</c:spPr>后直接就生成c:crossAx,并没有c:txPr,,所以省略c:txPr后就用的是默认值,,如果想要修改字体大小,需要重写这一块。如下所示:

// c:spPr 
$objWriter->startElement('c:spPr'); 
// Outline 
$this->writeOutline($objWriter, $oAxis->getOutline()); 
// ##c:spPr 
$objWriter->endElement(); 
 
//c:txPr ==========================================================piaoyu add start,在生成c:spPr后 
$objWriter->startElement('c:txPr'); 
 
// a:bodyPr 
$objWriter->writeElement('a:bodyPr', null); 
 
// a:lstStyle 
$objWriter->writeElement('a:lstStyle', null); 
 
// a:p 
$objWriter->startElement('a:p'); 
 
// a:pPr 
$objWriter->startElement('a:pPr'); 
 
// a:defRPr 
$objWriter->startElement('a:defRPr'); 
$objWriter->writeAttribute('lang', 'en-US'); 
$objWriter->writeAttribute('sz', 1400);   #14px 
$objWriter->writeAttribute('baseline','0'); 
$objWriter->endElement();  #end defRPr 
 
$objWriter->endElement();  #end pPr 
 
// a:endParaRPr 
$objWriter->startElement('a:endParaRPr'); 
$objWriter->writeAttribute('lang', 'en-US'); 
$objWriter->writeAttribute('dirty', '0'); 
$objWriter->endElement(); 
 
$objWriter->endElement();  #end p 
$objWriter->endElement();  #end txPr 
 
//c:txPr ==========================================================piaoyu add end,在生成c:crossAx前 
 
// c:crossAx 
$objWriter->startElement('c:crossAx'); 
$objWriter->writeAttribute('val', $crossAxVal); 
$objWriter->endElement();

修改后,生成的折线图如下所示:


本文参考链接:https://www.cnblogs.com/mianbaoshu/p/15682199.html