/** * Write Border * * @param \PhpOffice\PhpPowerpoint\Shared\XMLWriter $objWriter XML Writer * @param \PhpOffice\PhpPowerpoint\Style\Border $pBorder Border * @param string $pElementName Element name * @throws \Exception */ protected function writeBorder(XMLWriter $objWriter, Border $pBorder, $pElementName = 'L') { // Line style $lineStyle = $pBorder->getLineStyle(); if ($lineStyle == Border::LINE_NONE) { $lineStyle = Border::LINE_SINGLE; } // Line width $lineWidth = 12700 * $pBorder->getLineWidth(); // a:ln $pElementName $objWriter->startElement('a:ln' . $pElementName); $objWriter->writeAttribute('w', $lineWidth); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', $lineStyle); $objWriter->writeAttribute('algn', 'ctr'); // Fill? if ($pBorder->getLineStyle() == Border::LINE_NONE) { // a:noFill $objWriter->writeElement('a:noFill', null); } else { // a:solidFill $objWriter->startElement('a:solidFill'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', $pBorder->getColor()->getRGB()); $objWriter->endElement(); $objWriter->endElement(); } // Dash $objWriter->startElement('a:prstDash'); $objWriter->writeAttribute('val', $pBorder->getDashStyle()); $objWriter->endElement(); // a:round $objWriter->writeElement('a:round', null); // a:headEnd $objWriter->startElement('a:headEnd'); $objWriter->writeAttribute('type', 'none'); $objWriter->writeAttribute('w', 'med'); $objWriter->writeAttribute('len', 'med'); $objWriter->endElement(); // a:tailEnd $objWriter->startElement('a:tailEnd'); $objWriter->writeAttribute('type', 'none'); $objWriter->writeAttribute('w', 'med'); $objWriter->writeAttribute('len', 'med'); $objWriter->endElement(); $objWriter->endElement(); }
/** * Write Title * * @param \PhpOffice\PhpPowerpoint\Shared\XMLWriter $objWriter XML Writer * @param \PhpOffice\PhpPowerpoint\Shape\Chart\Title $subject * @throws \Exception */ protected function writeTitle(XMLWriter $objWriter, Title $subject) { // c:title $objWriter->startElement('c:title'); // c:tx $objWriter->startElement('c:tx'); // c:rich $objWriter->startElement('c:rich'); // 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'); $objWriter->writeAttribute('algn', $subject->getAlignment()->getHorizontal()); $objWriter->writeAttribute('fontAlgn', $subject->getAlignment()->getVertical()); $objWriter->writeAttribute('marL', SharedDrawing::pixelsToEmu($subject->getAlignment()->getMarginLeft())); $objWriter->writeAttribute('marR', SharedDrawing::pixelsToEmu($subject->getAlignment()->getMarginRight())); $objWriter->writeAttribute('indent', SharedDrawing::pixelsToEmu($subject->getAlignment()->getIndent())); $objWriter->writeAttribute('lvl', $subject->getAlignment()->getLevel()); // a:defRPr $objWriter->writeElement('a:defRPr', null); $objWriter->endElement(); // a:r $objWriter->startElement('a:r'); // a:rPr $objWriter->startElement('a:rPr'); $objWriter->writeAttribute('lang', 'en-US'); $objWriter->writeAttribute('dirty', '0'); $objWriter->writeAttribute('b', $subject->getFont()->isBold() ? 'true' : 'false'); $objWriter->writeAttribute('i', $subject->getFont()->isItalic() ? 'true' : 'false'); $objWriter->writeAttribute('strike', $subject->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike'); $objWriter->writeAttribute('sz', $subject->getFont()->getSize() * 100); $objWriter->writeAttribute('u', $subject->getFont()->getUnderline()); if ($subject->getFont()->isSuperScript() || $subject->getFont()->isSubScript()) { if ($subject->getFont()->isSuperScript()) { $objWriter->writeAttribute('baseline', '30000'); } elseif ($subject->getFont()->isSubScript()) { $objWriter->writeAttribute('baseline', '-25000'); } } // Font - a:solidFill $objWriter->startElement('a:solidFill'); // a:srgbClr $objWriter->startElement('a:srgbClr'); $objWriter->writeAttribute('val', $subject->getFont()->getColor()->getRGB()); $objWriter->endElement(); $objWriter->endElement(); // Font - a:latin $objWriter->startElement('a:latin'); $objWriter->writeAttribute('typeface', $subject->getFont()->getName()); $objWriter->endElement(); $objWriter->endElement(); // a:t $objWriter->writeElement('a:t', $subject->getText()); $objWriter->endElement(); // a:endParaRPr $objWriter->startElement('a:endParaRPr'); $objWriter->writeAttribute('lang', 'en-US'); $objWriter->writeAttribute('dirty', '0'); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); // Write layout $this->writeLayout($objWriter, $subject); // c:overlay $objWriter->startElement('c:overlay'); $objWriter->writeAttribute('val', '0'); $objWriter->endElement(); $objWriter->endElement(); }
/** * Write table Shape * @param XMLWriter $objWriter * @param Table $shape * @param integer $shapeId */ public function writeShapeTable(XMLWriter $objWriter, Table $shape, $shapeId) { // draw:frame $objWriter->startElement('draw:frame'); $objWriter->writeAttribute('svg:x', StringHelper::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getOffsetX()), 3) . 'cm'); $objWriter->writeAttribute('svg:y', StringHelper::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getOffsetY()), 3) . 'cm'); $objWriter->writeAttribute('svg:height', StringHelper::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getHeight()), 3) . 'cm'); $objWriter->writeAttribute('svg:width', StringHelper::numberFormat(SharedDrawing::pixelsToCentimeters($shape->getWidth()), 3) . 'cm'); // table:table $objWriter->startElement('table:table'); foreach ($shape->getRows() as $keyRow => $shapeRow) { // table:table-row $objWriter->startElement('table:table-row'); $objWriter->writeAttribute('table:style-name', 'gr' . $shapeId . 'r' . $keyRow); //@todo getFill $numColspan = 0; foreach ($shapeRow->getCells() as $keyCell => $shapeCell) { if ($numColspan == 0) { // table:table-cell $objWriter->startElement('table:table-cell'); $objWriter->writeAttribute('table:style-name', 'gr' . $shapeId . 'r' . $keyRow . 'c' . $keyCell); if ($shapeCell->getColspan() > 1) { $objWriter->writeAttribute('table:number-columns-spanned', $shapeCell->getColspan()); $numColspan = $shapeCell->getColspan() - 1; } // text:p $objWriter->startElement('text:p'); // text:span foreach ($shapeCell->getParagraphs() as $shapeParagraph) { foreach ($shapeParagraph->getRichTextElements() as $shapeRichText) { $objWriter->startElement('text:span'); $objWriter->writeAttribute('text:style-name', 'T_' . $shapeRichText->getFont()->getHashCode()); $objWriter->text($shapeRichText->getText()); $objWriter->endElement(); } } // > text:p $objWriter->endElement(); // > table:table-cell $objWriter->endElement(); } else { // table:covered-table-cell $objWriter->writeElement('table:covered-table-cell'); $numColspan--; } } // > table:table-row $objWriter->endElement(); } // > table:table $objWriter->endElement(); // > draw:frame $objWriter->endElement(); }