1. 程式人生 > 其它 >php PhpPresentation 修改折線圖x軸y軸的字型大小

php PhpPresentation 修改折線圖x軸y軸的字型大小

使用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();

修改後,生成的折線圖如下所示: