Pues este proyecto es antiguo y lo estoy modificando porque me di cuenta que no ajusta bien el tamaño. Lo he solucionado poniendo el codigo dentro de un bucle do...while pero creo que deberia funcionar bien a la primera y no veo la manera.
Aqui el codigo:
Código PHP:
#define MAXHEIGHTA5 745 //Alto maximo para imprimir en A5
#define MAXWIDTHA5 524 //Ancho maximo para imprimir en A5
#define MAXHEIGHTA4 1080 //Alto maximo para imprimir en A4
#define MAXWIDTHA4 745 //Ancho maximo para imprimir en A4
#define MAXHEIGHTA3 1537 //Alto maximo para imprimir en A3
#define MAXWIDTHA3 1040 //Ancho maximo para imprimir en A3
int deltay;
int deltax;
float porcentaje = 100;
do{
switch(VividReport1->PaperSize)
{
case A5:
deltay = CurrentImage->Picture->Bitmap->Height - MAXHEIGHTA5;
deltax = CurrentImage->Picture->Bitmap->Width - MAXWIDTHA5;
break;
case A4:
deltay = CurrentImage->Picture->Bitmap->Height - MAXHEIGHTA4;
deltax = CurrentImage->Picture->Bitmap->Width - MAXWIDTHA4;
break;
case A3:
deltay = CurrentImage->Picture->Bitmap->Height - MAXHEIGHTA3;
deltax = CurrentImage->Picture->Bitmap->Width - MAXWIDTHA3;
break;
}
//Averiguamos el ancho y alto apropiados para la imagen
if(deltay > deltax && deltay > 0)
{
porcentaje = (100.0 * maxHeight) / CurrentImage->Picture->Bitmap->Height;
}
else if((deltay < deltax || deltay == deltax) && deltax > 0)
{
porcentaje = (100.0 * maxWidth) / CurrentImage->Picture->Bitmap->Width;
}
if(porcentaje < 100)
{
CurrentImage->Picture->Bitmap->Width -= ((CurrentImage->Picture->Bitmap->Width - (CurrentImage->Picture->Bitmap->Width * porcentaje / 100)));
CurrentImage->Picture->Bitmap->Height -= ((CurrentImage->Picture->Bitmap->Height - (CurrentImage->Picture->Bitmap->Height * porcentaje / 100)));
}
}while(deltax > 0 || deltay > 0);
La idea es quitar el do...while y que se ajuste a la primera. ¿Alguien puede ayudarme?