getParentWriter()->getUseDiskCaching()) { $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); } else { $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); } // XML header $objWriter->startDocument('1.0', 'UTF-8'); // manifest:manifest $objWriter->startElement('manifest:manifest'); $objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0'); $objWriter->writeAttribute('manifest:version', '1.2'); // manifest:file-entry $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.text'); $objWriter->writeAttribute('manifest:version', '1.2'); $objWriter->writeAttribute('manifest:full-path', '/'); $objWriter->endElement(); // manifest:file-entry $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->writeAttribute('manifest:full-path', 'content.xml'); $objWriter->endElement(); // manifest:file-entry $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->writeAttribute('manifest:full-path', 'meta.xml'); $objWriter->endElement(); // manifest:file-entry $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->writeAttribute('manifest:full-path', 'styles.xml'); $objWriter->endElement(); // Not used yet. Legacy from PHPExcel // @codeCoverageIgnoreStart for ($i = 0; $i < $this->getParentWriter()->getDrawingHashTable()->count(); ++$i) { if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_Drawing) { $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension()); $mimeType = $this->_getImageMimeType($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath()); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:media-type', $mimeType); $objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getIndexedFilename())); $objWriter->endElement(); } elseif ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_MemoryDrawing) { $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType()); $extension = explode('/', $extension); $extension = $extension[1]; $mimeType = $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType(); $objWriter->startElement('manifest:file-entry'); $objWriter->writeAttribute('manifest:media-type', $mimeType); $objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getIndexedFilename())); $objWriter->endElement(); } } // @codeCoverageIgnoreEnd $objWriter->endElement(); // Return return $objWriter->getData(); } /** * Get image mime type * * @param string $pFile Filename * @return string Mime Type * @throws Exception */ private function _getImageMimeType($pFile = '') { if (PHPWord_Shared_File::file_exists($pFile)) { $image = getimagesize($pFile); return image_type_to_mime_type($image[2]); } else { throw new Exception("File $pFile does not exist"); } } }