예제 #1
0
 /**
  * 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();
 }
예제 #2
0
 /**
  * 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();
 }
예제 #3
0
 /**
  * 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();
 }