getParentWriter()->getPhpWord(); $xmlWriter = $this->getXmlWriter(); $xmlWriter->startDocument('1.0', 'UTF-8', 'yes'); $xmlWriter->startElement('Properties'); $xmlWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties'); $xmlWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes'); $docProps = $phpWord->getDocInfo(); $properties = $docProps->getCustomProperties(); foreach ($properties as $key => $property) { $propertyValue = $docProps->getCustomPropertyValue($property); $propertyType = $docProps->getCustomPropertyType($property); $xmlWriter->startElement('property'); $xmlWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}'); $xmlWriter->writeAttribute('pid', $key + 2); $xmlWriter->writeAttribute('name', $property); switch ($propertyType) { case 'i': $xmlWriter->writeElement('vt:i4', $propertyValue); break; case 'f': $xmlWriter->writeElement('vt:r8', $propertyValue); break; case 'b': $xmlWriter->writeElement('vt:bool', ($propertyValue) ? 'true' : 'false'); break; case 'd': if ($propertyValue instanceof DateTime) { $xmlWriter->writeElement('vt:filetime', $propertyValue->format($this->dateFormat)); } else { $xmlWriter->writeElement('vt:filetime', date($this->dateFormat, $propertyValue)); } break; default: $xmlWriter->writeElement('vt:lpwstr', $propertyValue); break; } $xmlWriter->endElement(); // property } $xmlWriter->endElement(); // Properties return $xmlWriter->getData(); } }