/** * Write element */ public function write() { $xmlWriter = $this->getXmlWriter(); $element = $this->getElement(); if (!$element instanceof \PhpOffice\PhpWord\Element\Image) { return; } $mediaIndex = $element->getMediaIndex(); $target = 'Pictures/' . $element->getTarget(); $style = $element->getStyle(); $width = Drawing::pixelsToCentimeters($style->getWidth()); $height = Drawing::pixelsToCentimeters($style->getHeight()); $xmlWriter->startElement('text:p'); $xmlWriter->writeAttribute('text:style-name', 'Standard'); $xmlWriter->startElement('draw:frame'); $xmlWriter->writeAttribute('draw:style-name', 'fr' . $mediaIndex); $xmlWriter->writeAttribute('draw:name', $element->getElementId()); $xmlWriter->writeAttribute('text:anchor-type', 'as-char'); $xmlWriter->writeAttribute('svg:width', $width . 'cm'); $xmlWriter->writeAttribute('svg:height', $height . 'cm'); $xmlWriter->writeAttribute('draw:z-index', $mediaIndex); $xmlWriter->startElement('draw:image'); $xmlWriter->writeAttribute('xlink:href', $target); $xmlWriter->writeAttribute('xlink:type', 'simple'); $xmlWriter->writeAttribute('xlink:show', 'embed'); $xmlWriter->writeAttribute('xlink:actuate', 'onLoad'); $xmlWriter->endElement(); // draw:image $xmlWriter->endElement(); // draw:frame $xmlWriter->endElement(); // text:p }
/** * Test unit conversion functions with various numbers */ public function testUnitConversions() { $values[] = 0; // zero value $values[] = rand(1, 100) / 100; // fraction number $values[] = rand(1, 100); // integer foreach ($values as $value) { $result = Drawing::pixelsToEMU($value); $this->assertEquals(round($value * 9525), $result); $result = Drawing::EMUToPixels($value); $this->assertEquals(round($value / 9525), $result); $result = Drawing::pixelsToPoints($value); $this->assertEquals($value * 0.6777777699999999, $result); $result = Drawing::pointsToPixels($value); $this->assertEquals($value * 1.333333333, $result); $result = Drawing::degreesToAngle($value); $this->assertEquals((int) round($value * 60000), $result); $result = Drawing::angleToDegrees($value); $this->assertEquals(round($value / 60000), $result); $result = Drawing::pixelsToCentimeters($value); $this->assertEquals($value * 0.028, $result); $result = Drawing::centimetersToPixels($value); $this->assertEquals($value / 0.028, $result); } }