XObjects - это описание объектов (текста, графики, векторных элементов и т. д.) в файле PDF, которые могут многократно воспроизводиться на различных страницах или в разных местах одной страницы.
Пример загрузки изображения из XObject потока PDF:
$stream = $image['stream'];
$options = $image['options'];
$width = $options['Width'];
$height = $options['Height'];
$ColorSpace = is_array($options['ColorSpace']) ? $options['ColorSpace'][0] : $options['ColorSpace'];
if($ColorSpace == 'CalRGB' || $ColorSpace == 'DeviceRGB') {
$bits = 3;
} elseif($ColorSpace == 'DeviceGray') {
$bits = 1;
}
$im = imagecreatetruecolor($width, $height);
$scan_line_size = $bits * $width;
for($i = 0; $i < $height; $i++) {
$l = $height - $i;
$scan_line = substr($stream, (($scan_line_size) * $l), $scan_line_size);
$j = 0; $n = 0;
while($j < $scan_line_size) {
if($ColorSpace == 'CalRGB' || $ColorSpace == 'DeviceRGB') {
$r = ord($scan_line{$j++});
$g = ord($scan_line{$j++});
$b = ord($scan_line{$j++});
$col = imagecolorallocate($im, $r, $g, $b);
} elseif($ColorSpace == 'DeviceGray') {
$c = ord($scan_line{$j++});
$col = imagecolorallocate($im, $c, $c, $c);
}
imagesetpixel($im, $n++, $l, $col);
}
}