forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
589 lines
23 KiB
589 lines
23 KiB
<?php |
|
|
|
/** |
|
* PHPExcel_Writer_Excel2007_Drawing |
|
* |
|
* Copyright (c) 2006 - 2015 PHPExcel |
|
* |
|
* This library is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU Lesser General Public |
|
* License as published by the Free Software Foundation; either |
|
* version 2.1 of the License, or (at your option) any later version. |
|
* |
|
* This library is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
* Lesser General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Lesser General Public |
|
* License along with this library; if not, write to the Free Software |
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
* |
|
* @category PHPExcel |
|
* @package PHPExcel_Writer_Excel2007 |
|
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) |
|
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL |
|
* @version ##VERSION##, ##DATE## |
|
*/ |
|
class PHPExcel_Writer_Excel2007_Drawing extends PHPExcel_Writer_Excel2007_WriterPart |
|
{ |
|
/** |
|
* Write drawings to XML format |
|
* |
|
* @param PHPExcel_Worksheet $pWorksheet |
|
* @param int &$chartRef Chart ID |
|
* @param boolean $includeCharts Flag indicating if we should include drawing details for charts |
|
* @return string XML Output |
|
* @throws PHPExcel_Writer_Exception |
|
*/ |
|
public function writeDrawings(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = false) |
|
{ |
|
// Create XML writer |
|
$objWriter = null; |
|
if ($this->getParentWriter()->getUseDiskCaching()) { |
|
$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); |
|
} else { |
|
$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); |
|
} |
|
|
|
// XML header |
|
$objWriter->startDocument('1.0', 'UTF-8', 'yes'); |
|
|
|
// xdr:wsDr |
|
$objWriter->startElement('xdr:wsDr'); |
|
$objWriter->writeAttribute('xmlns:xdr', 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'); |
|
$objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); |
|
|
|
// Loop through images and write drawings |
|
$i = 1; |
|
$iterator = $pWorksheet->getDrawingCollection()->getIterator(); |
|
while ($iterator->valid()) { |
|
$this->writeDrawing($objWriter, $iterator->current(), $i); |
|
|
|
$iterator->next(); |
|
++$i; |
|
} |
|
|
|
if ($includeCharts) { |
|
$chartCount = $pWorksheet->getChartCount(); |
|
// Loop through charts and write the chart position |
|
if ($chartCount > 0) { |
|
for ($c = 0; $c < $chartCount; ++$c) { |
|
$this->writeChart($objWriter, $pWorksheet->getChartByIndex($c), $c+$i); |
|
} |
|
} |
|
} |
|
|
|
$objWriter->endElement(); |
|
|
|
// Return |
|
return $objWriter->getData(); |
|
} |
|
|
|
/** |
|
* Write drawings to XML format |
|
* |
|
* @param PHPExcel_Shared_XMLWriter $objWriter XML Writer |
|
* @param PHPExcel_Chart $pChart |
|
* @param int $pRelationId |
|
* @throws PHPExcel_Writer_Exception |
|
*/ |
|
public function writeChart(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Chart $pChart = null, $pRelationId = -1) |
|
{ |
|
$tl = $pChart->getTopLeftPosition(); |
|
$tl['colRow'] = PHPExcel_Cell::coordinateFromString($tl['cell']); |
|
$br = $pChart->getBottomRightPosition(); |
|
$br['colRow'] = PHPExcel_Cell::coordinateFromString($br['cell']); |
|
|
|
$objWriter->startElement('xdr:twoCellAnchor'); |
|
|
|
$objWriter->startElement('xdr:from'); |
|
$objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($tl['colRow'][0]) - 1); |
|
$objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['xOffset'])); |
|
$objWriter->writeElement('xdr:row', $tl['colRow'][1] - 1); |
|
$objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['yOffset'])); |
|
$objWriter->endElement(); |
|
$objWriter->startElement('xdr:to'); |
|
$objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($br['colRow'][0]) - 1); |
|
$objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['xOffset'])); |
|
$objWriter->writeElement('xdr:row', $br['colRow'][1] - 1); |
|
$objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['yOffset'])); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->startElement('xdr:graphicFrame'); |
|
$objWriter->writeAttribute('macro', ''); |
|
$objWriter->startElement('xdr:nvGraphicFramePr'); |
|
$objWriter->startElement('xdr:cNvPr'); |
|
$objWriter->writeAttribute('name', 'Chart '.$pRelationId); |
|
$objWriter->writeAttribute('id', 1025 * $pRelationId); |
|
$objWriter->endElement(); |
|
$objWriter->startElement('xdr:cNvGraphicFramePr'); |
|
$objWriter->startElement('a:graphicFrameLocks'); |
|
$objWriter->endElement(); |
|
$objWriter->endElement(); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->startElement('xdr:xfrm'); |
|
$objWriter->startElement('a:off'); |
|
$objWriter->writeAttribute('x', '0'); |
|
$objWriter->writeAttribute('y', '0'); |
|
$objWriter->endElement(); |
|
$objWriter->startElement('a:ext'); |
|
$objWriter->writeAttribute('cx', '0'); |
|
$objWriter->writeAttribute('cy', '0'); |
|
$objWriter->endElement(); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->startElement('a:graphic'); |
|
$objWriter->startElement('a:graphicData'); |
|
$objWriter->writeAttribute('uri', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); |
|
$objWriter->startElement('c:chart'); |
|
$objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); |
|
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); |
|
$objWriter->writeAttribute('r:id', 'rId'.$pRelationId); |
|
$objWriter->endElement(); |
|
$objWriter->endElement(); |
|
$objWriter->endElement(); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->startElement('xdr:clientData'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
} |
|
|
|
/** |
|
* Write drawings to XML format |
|
* |
|
* @param PHPExcel_Shared_XMLWriter $objWriter XML Writer |
|
* @param PHPExcel_Worksheet_BaseDrawing $pDrawing |
|
* @param int $pRelationId |
|
* @throws PHPExcel_Writer_Exception |
|
*/ |
|
public function writeDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet_BaseDrawing $pDrawing = null, $pRelationId = -1) |
|
{ |
|
if ($pRelationId >= 0) { |
|
// xdr:oneCellAnchor |
|
$objWriter->startElement('xdr:oneCellAnchor'); |
|
// Image location |
|
$aCoordinates = PHPExcel_Cell::coordinateFromString($pDrawing->getCoordinates()); |
|
$aCoordinates[0] = PHPExcel_Cell::columnIndexFromString($aCoordinates[0]); |
|
|
|
// xdr:from |
|
$objWriter->startElement('xdr:from'); |
|
$objWriter->writeElement('xdr:col', $aCoordinates[0] - 1); |
|
$objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetX())); |
|
$objWriter->writeElement('xdr:row', $aCoordinates[1] - 1); |
|
$objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetY())); |
|
$objWriter->endElement(); |
|
|
|
// xdr:ext |
|
$objWriter->startElement('xdr:ext'); |
|
$objWriter->writeAttribute('cx', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getWidth())); |
|
$objWriter->writeAttribute('cy', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getHeight())); |
|
$objWriter->endElement(); |
|
|
|
// xdr:pic |
|
$objWriter->startElement('xdr:pic'); |
|
|
|
// xdr:nvPicPr |
|
$objWriter->startElement('xdr:nvPicPr'); |
|
|
|
// xdr:cNvPr |
|
$objWriter->startElement('xdr:cNvPr'); |
|
$objWriter->writeAttribute('id', $pRelationId); |
|
$objWriter->writeAttribute('name', $pDrawing->getName()); |
|
$objWriter->writeAttribute('descr', $pDrawing->getDescription()); |
|
$objWriter->endElement(); |
|
|
|
// xdr:cNvPicPr |
|
$objWriter->startElement('xdr:cNvPicPr'); |
|
|
|
// a:picLocks |
|
$objWriter->startElement('a:picLocks'); |
|
$objWriter->writeAttribute('noChangeAspect', '1'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// xdr:blipFill |
|
$objWriter->startElement('xdr:blipFill'); |
|
|
|
// a:blip |
|
$objWriter->startElement('a:blip'); |
|
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); |
|
$objWriter->writeAttribute('r:embed', 'rId' . $pRelationId); |
|
$objWriter->endElement(); |
|
|
|
// a:stretch |
|
$objWriter->startElement('a:stretch'); |
|
$objWriter->writeElement('a:fillRect', null); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// xdr:spPr |
|
$objWriter->startElement('xdr:spPr'); |
|
|
|
// a:xfrm |
|
$objWriter->startElement('a:xfrm'); |
|
$objWriter->writeAttribute('rot', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getRotation())); |
|
$objWriter->endElement(); |
|
|
|
// a:prstGeom |
|
$objWriter->startElement('a:prstGeom'); |
|
$objWriter->writeAttribute('prst', 'rect'); |
|
|
|
// a:avLst |
|
$objWriter->writeElement('a:avLst', null); |
|
|
|
$objWriter->endElement(); |
|
|
|
// // a:solidFill |
|
// $objWriter->startElement('a:solidFill'); |
|
|
|
// // a:srgbClr |
|
// $objWriter->startElement('a:srgbClr'); |
|
// $objWriter->writeAttribute('val', 'FFFFFF'); |
|
|
|
///* SHADE |
|
// // a:shade |
|
// $objWriter->startElement('a:shade'); |
|
// $objWriter->writeAttribute('val', '85000'); |
|
// $objWriter->endElement(); |
|
//*/ |
|
|
|
// $objWriter->endElement(); |
|
|
|
// $objWriter->endElement(); |
|
/* |
|
// a:ln |
|
$objWriter->startElement('a:ln'); |
|
$objWriter->writeAttribute('w', '88900'); |
|
$objWriter->writeAttribute('cap', 'sq'); |
|
|
|
// a:solidFill |
|
$objWriter->startElement('a:solidFill'); |
|
|
|
// a:srgbClr |
|
$objWriter->startElement('a:srgbClr'); |
|
$objWriter->writeAttribute('val', 'FFFFFF'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// a:miter |
|
$objWriter->startElement('a:miter'); |
|
$objWriter->writeAttribute('lim', '800000'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
*/ |
|
|
|
if ($pDrawing->getShadow()->getVisible()) { |
|
// a:effectLst |
|
$objWriter->startElement('a:effectLst'); |
|
|
|
// a:outerShdw |
|
$objWriter->startElement('a:outerShdw'); |
|
$objWriter->writeAttribute('blurRad', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getBlurRadius())); |
|
$objWriter->writeAttribute('dist', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getDistance())); |
|
$objWriter->writeAttribute('dir', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getShadow()->getDirection())); |
|
$objWriter->writeAttribute('algn', $pDrawing->getShadow()->getAlignment()); |
|
$objWriter->writeAttribute('rotWithShape', '0'); |
|
|
|
// a:srgbClr |
|
$objWriter->startElement('a:srgbClr'); |
|
$objWriter->writeAttribute('val', $pDrawing->getShadow()->getColor()->getRGB()); |
|
|
|
// a:alpha |
|
$objWriter->startElement('a:alpha'); |
|
$objWriter->writeAttribute('val', $pDrawing->getShadow()->getAlpha() * 1000); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
} |
|
/* |
|
|
|
// a:scene3d |
|
$objWriter->startElement('a:scene3d'); |
|
|
|
// a:camera |
|
$objWriter->startElement('a:camera'); |
|
$objWriter->writeAttribute('prst', 'orthographicFront'); |
|
$objWriter->endElement(); |
|
|
|
// a:lightRig |
|
$objWriter->startElement('a:lightRig'); |
|
$objWriter->writeAttribute('rig', 'twoPt'); |
|
$objWriter->writeAttribute('dir', 't'); |
|
|
|
// a:rot |
|
$objWriter->startElement('a:rot'); |
|
$objWriter->writeAttribute('lat', '0'); |
|
$objWriter->writeAttribute('lon', '0'); |
|
$objWriter->writeAttribute('rev', '0'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
*/ |
|
/* |
|
// a:sp3d |
|
$objWriter->startElement('a:sp3d'); |
|
|
|
// a:bevelT |
|
$objWriter->startElement('a:bevelT'); |
|
$objWriter->writeAttribute('w', '25400'); |
|
$objWriter->writeAttribute('h', '19050'); |
|
$objWriter->endElement(); |
|
|
|
// a:contourClr |
|
$objWriter->startElement('a:contourClr'); |
|
|
|
// a:srgbClr |
|
$objWriter->startElement('a:srgbClr'); |
|
$objWriter->writeAttribute('val', 'FFFFFF'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
*/ |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// xdr:clientData |
|
$objWriter->writeElement('xdr:clientData', null); |
|
|
|
$objWriter->endElement(); |
|
} else { |
|
throw new PHPExcel_Writer_Exception("Invalid parameters passed."); |
|
} |
|
} |
|
|
|
/** |
|
* Write VML header/footer images to XML format |
|
* |
|
* @param PHPExcel_Worksheet $pWorksheet |
|
* @return string XML Output |
|
* @throws PHPExcel_Writer_Exception |
|
*/ |
|
public function writeVMLHeaderFooterImages(PHPExcel_Worksheet $pWorksheet = null) |
|
{ |
|
// Create XML writer |
|
$objWriter = null; |
|
if ($this->getParentWriter()->getUseDiskCaching()) { |
|
$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); |
|
} else { |
|
$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); |
|
} |
|
|
|
// XML header |
|
$objWriter->startDocument('1.0', 'UTF-8', 'yes'); |
|
|
|
// Header/footer images |
|
$images = $pWorksheet->getHeaderFooter()->getImages(); |
|
|
|
// xml |
|
$objWriter->startElement('xml'); |
|
$objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml'); |
|
$objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office'); |
|
$objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel'); |
|
|
|
// o:shapelayout |
|
$objWriter->startElement('o:shapelayout'); |
|
$objWriter->writeAttribute('v:ext', 'edit'); |
|
|
|
// o:idmap |
|
$objWriter->startElement('o:idmap'); |
|
$objWriter->writeAttribute('v:ext', 'edit'); |
|
$objWriter->writeAttribute('data', '1'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// v:shapetype |
|
$objWriter->startElement('v:shapetype'); |
|
$objWriter->writeAttribute('id', '_x0000_t75'); |
|
$objWriter->writeAttribute('coordsize', '21600,21600'); |
|
$objWriter->writeAttribute('o:spt', '75'); |
|
$objWriter->writeAttribute('o:preferrelative', 't'); |
|
$objWriter->writeAttribute('path', 'm@4@5l@4@11@9@11@9@5xe'); |
|
$objWriter->writeAttribute('filled', 'f'); |
|
$objWriter->writeAttribute('stroked', 'f'); |
|
|
|
// v:stroke |
|
$objWriter->startElement('v:stroke'); |
|
$objWriter->writeAttribute('joinstyle', 'miter'); |
|
$objWriter->endElement(); |
|
|
|
// v:formulas |
|
$objWriter->startElement('v:formulas'); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'if lineDrawn pixelLineWidth 0'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'sum @0 1 0'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'sum 0 0 @1'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'prod @2 1 2'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'prod @3 21600 pixelWidth'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'prod @3 21600 pixelHeight'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'sum @0 0 1'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'prod @6 1 2'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'prod @7 21600 pixelWidth'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'sum @8 21600 0'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'prod @7 21600 pixelHeight'); |
|
$objWriter->endElement(); |
|
|
|
// v:f |
|
$objWriter->startElement('v:f'); |
|
$objWriter->writeAttribute('eqn', 'sum @10 21600 0'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// v:path |
|
$objWriter->startElement('v:path'); |
|
$objWriter->writeAttribute('o:extrusionok', 'f'); |
|
$objWriter->writeAttribute('gradientshapeok', 't'); |
|
$objWriter->writeAttribute('o:connecttype', 'rect'); |
|
$objWriter->endElement(); |
|
|
|
// o:lock |
|
$objWriter->startElement('o:lock'); |
|
$objWriter->writeAttribute('v:ext', 'edit'); |
|
$objWriter->writeAttribute('aspectratio', 't'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
|
|
// Loop through images |
|
foreach ($images as $key => $value) { |
|
$this->writeVMLHeaderFooterImage($objWriter, $key, $value); |
|
} |
|
|
|
$objWriter->endElement(); |
|
|
|
// Return |
|
return $objWriter->getData(); |
|
} |
|
|
|
/** |
|
* Write VML comment to XML format |
|
* |
|
* @param PHPExcel_Shared_XMLWriter $objWriter XML Writer |
|
* @param string $pReference Reference |
|
* @param PHPExcel_Worksheet_HeaderFooterDrawing $pImage Image |
|
* @throws PHPExcel_Writer_Exception |
|
*/ |
|
private function writeVMLHeaderFooterImage(PHPExcel_Shared_XMLWriter $objWriter = null, $pReference = '', PHPExcel_Worksheet_HeaderFooterDrawing $pImage = null) |
|
{ |
|
// Calculate object id |
|
preg_match('{(\d+)}', md5($pReference), $m); |
|
$id = 1500 + (substr($m[1], 0, 2) * 1); |
|
|
|
// Calculate offset |
|
$width = $pImage->getWidth(); |
|
$height = $pImage->getHeight(); |
|
$marginLeft = $pImage->getOffsetX(); |
|
$marginTop = $pImage->getOffsetY(); |
|
|
|
// v:shape |
|
$objWriter->startElement('v:shape'); |
|
$objWriter->writeAttribute('id', $pReference); |
|
$objWriter->writeAttribute('o:spid', '_x0000_s' . $id); |
|
$objWriter->writeAttribute('type', '#_x0000_t75'); |
|
$objWriter->writeAttribute('style', "position:absolute;margin-left:{$marginLeft}px;margin-top:{$marginTop}px;width:{$width}px;height:{$height}px;z-index:1"); |
|
|
|
// v:imagedata |
|
$objWriter->startElement('v:imagedata'); |
|
$objWriter->writeAttribute('o:relid', 'rId' . $pReference); |
|
$objWriter->writeAttribute('o:title', $pImage->getName()); |
|
$objWriter->endElement(); |
|
|
|
// o:lock |
|
$objWriter->startElement('o:lock'); |
|
$objWriter->writeAttribute('v:ext', 'edit'); |
|
$objWriter->writeAttribute('rotation', 't'); |
|
$objWriter->endElement(); |
|
|
|
$objWriter->endElement(); |
|
} |
|
|
|
|
|
/** |
|
* Get an array of all drawings |
|
* |
|
* @param PHPExcel $pPHPExcel |
|
* @return PHPExcel_Worksheet_Drawing[] All drawings in PHPExcel |
|
* @throws PHPExcel_Writer_Exception |
|
*/ |
|
public function allDrawings(PHPExcel $pPHPExcel = null) |
|
{ |
|
// Get an array of all drawings |
|
$aDrawings = array(); |
|
|
|
// Loop through PHPExcel |
|
$sheetCount = $pPHPExcel->getSheetCount(); |
|
for ($i = 0; $i < $sheetCount; ++$i) { |
|
// Loop through images and add to array |
|
$iterator = $pPHPExcel->getSheet($i)->getDrawingCollection()->getIterator(); |
|
while ($iterator->valid()) { |
|
$aDrawings[] = $iterator->current(); |
|
|
|
$iterator->next(); |
|
} |
|
} |
|
|
|
return $aDrawings; |
|
} |
|
}
|
|
|