Forum


Replies: 2   Views: 149
Get image alt text and size

Posted by bkidd  · 07-06-2020 - 13:04

I am currently using this to get the image alt text:

$referenceNode = array( 'customQuery' => '//w:drawing//wp:docPr', ); $contents = $docx->getDocxPathQueryInfo($referenceNode); foreach ($contents['elements'] as $content) { echo $content->getAttribute('descr'); }

I would also like to know the image dimensions.  I have tried to use:

$images = (new Indexer($this->getPath()))->getOutput()['body']['images'];

which has the dimensions but I don't have a way to match the results.

Any suggestions?  Thanks

Posted by admin  · 07-06-2020 - 16:12

Hello,

There's no option to match Indexer and getDocxPathQueryInfo output, but you can use the following method to get the image size from getDocxPathQueryInfo

$referenceNode = array( 'customQuery' => '//w:drawing//wp:docPr', );
$contents = $docx->getDocxPathQueryInfo($referenceNode);
foreach ($contents['elements'] as $content) {
        // get descr
        echo $content->getAttribute('descr') . PHP_EOL;;

        // get height and width
        $size = $content->parentNode->getElementsByTagNameNS('http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing', 'extent');
        if ($size->length > 0) {
                echo $size->item(0)->getAttribute('cx') . PHP_EOL; // width
                echo $size->item(0)->getAttribute('cy') . PHP_EOL; // height
        }
}

Images use EMUs as unit values, you can transform them to inches or cms using the following code:

'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.

Posted by bkidd  · 08-06-2020 - 16:25

This works great.  Thanks for the suggestion.