Hello,
Indexer uses a DOCX as source, not a DOMDocument (https://www.phpdocx.com/api-documentation/docxutilities/indexer-parse-word-documents-with-PHP):
$indexer = new Indexer('document.docx');
$output = $indexer->getOutput();
This class returns a lot of information about images, including sizes.
Also please note that replacePlacehoderImage allows keeping the size of the previous image or use the sizes from the new image with the following options:
width mixed The value in cm (float) or 'auto' (use image size).
height mixed The value in cm (float) or 'auto' (use image size).
dpi int Dots per inch. This parameter is only taken into account if width or height are set to auto.
If you want to get all the information about a single image with a placeholder you can use DOCXPath:
$referenceNode = array(
'customQuery' => '//w:drawing[descendant::wp:docPr[contains(@descr, "$VAR$")]]',
);
$queryInfo = $docx->getDocxPathQueryInfo($referenceNode);
This code returns the elements of an XPath query (the image that includes $VAR$ as placeholder). So you can read it to get the size; although you can get it from the Indexer class, this the code used to get image sizes:
foreach ($drawingChildNodes as $drawingChildNode) {
if ($drawingChildNode->tagName == 'wp:extent') {
if ($drawingChildNode->hasAttribute('cx')) {
$widthImage = $drawingChildNode->getAttribute('cx');
}
if ($drawingChildNode->hasAttribute('cy')) {
$heightImage = $drawingChildNode->getAttribute('cy');
}
}
}
$this->documentStructure[$target]['images'][] = array(
'content' => $imageString,
'path' => $imageEntry->getAttribute('Target'),
'height_word_emus' => $heightImage,
'width_word_emus' => $widthImage,
'height_word_inches' => $heightImage/914400,
'width_word_inches' => $widthImage/914400,
'height_word_cms' => $heightImage/360000,
'width_word_cms' => $widthImage/360000,
);
Regards.