es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PDFlib PHP imagen de caja con tamaño de altura establecido y ancho dinámico.

En PDFlib, podemos definir el tamaño de la caja para una imagen utilizando boxsize={65 65} (por ejemplo). Dado que necesitamos dos valores, ¿existe alguna forma de configurar el valor de altura y dejar el valor de ancho para que sea dinámico? En mi caso de uso, quiero agregar todas las imágenes con una altura establecida de 65, pero las imágenes pueden ser diferentes en su ancho, por lo que el tamaño de la caja debe actualizarse dinámicamente según la imagen.

También intenté usar la escala en la lista de opciones, pero eso no tiene sentido, ya que la altura también cambia según la imagen.

Actualmente, cargo todas las imágenes que quiero colocar usando un bucle for, que se ve así:

para cada ($awardImages como $awardImage) {
$image = $p->loadimage(‘auto’, $awardImage, ”);
si (0 == $image) {
echo “No se pudo cargar $image: “.$p->geterrmsg();
exit(1);
}

    si ($x > (565 - 70)) {
        $y = $y - 65;
        $x = $elementStartLeft + 2;
    }


    // $buf = "scale=1 position={left center} matchbox={name=awardimage}";
    $buf = 'boxsize={65 65} fitmethod=auto showborder position={left center} matchbox={name=awardimage}';
    $p->fit_image($image, $x, $y, $buf);
    ++$awardNo;
    $awardX2 = $p->info_matchbox('awardimage', $awardNo, 'x2');
    $x = $awardX2 + 5;
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible establecer el valor de altura y dejar el valor de ancho de forma dinámica. Puedes utilizar la opción fitmethod=auto en el parámetro boxsize para lograr esto. Esto ajustará automáticamente el ancho del cuadro para adaptarse a la imagen. El fragmento de código que proporcionaste debería ser modificado de la siguiente manera:

    $buf = 'boxsize={65 65} fitmethod=auto showborder position={left center} matchbox={name=awardimage}';

Comments are closed.