Ahora estoy liado con otra cosa, Hago esto para imprimir los trozos de imagen y funciona a medias. Si Elijo la impresora de NitroPDF sale la ventanita chica que dice Printing y que trae el ProgressBar y se rellena rapidamente y aparece el icono de impresora en la barra de tareas pero no veo que pase nada. Si lo hago con la impresora fisica si funciona.
Este es el codigo:
Código PHP:
void __fastcall TForm1::ButtonPrintImagesClick(TObject *Sender)
{
TInfoPapel info;
if(PrintDialog1->Execute())
{
info = ObtenerTamPapel();
if(info.orientacion == 1) //Si la orientacion es vertical seguimos adelante
{
switch (info.tamPapel)
{
case DMPAPER_A5:
Form2->VividReport1->PaperSize = A5;
Form2->ShowModal();
break;
case DMPAPER_A4:
Form2->VividReport1->PaperSize = A4;
Form2->ShowModal();
break;
case DMPAPER_A3:
Form2->VividReport1->PaperSize = A3;
Form2->ShowModal();
break;
default:
MessageBox(Application->Handle, "El tamaño del papel seleccionado no es válido. Usa A5, A4, o A3", "Error", MB_OK |MB_ICONERROR | MB_APPLMODAL);
}
}else
{ //Si la orientacion del papel no es vertical no seguimos y avisamos de que no se puede usar otra
MessageBox(Handle, "No se puede elegir la orientación de papel horizontal.\nEsta aplicación solo funciona con orientación vertical." , "Error", MB_OK |MB_ICONERROR | MB_APPLMODAL);
}
}
}
//---------------------------------------------------------------------------
TInfoPapel ObtenerTamPapel(void)
{
char MyPrinter[100];
char MyDriver[100];
char MyPort[100];
THandle hDevMode;
PDEVMODE pDevMode;
TInfoPapel infoPapel;
Printer()->GetPrinter(MyPrinter, MyDriver, MyPort, hDevMode);
if(hDevMode){
pDevMode = (PDEVMODE)GlobalLock((void*)hDevMode);
if(pDevMode){
//El tamaño del papel debe ser para A4 DMPAPER_A4 o para A3 DMPAPER_A3
//La orientacion vertical es 1 y la horizontal 2
infoPapel.tamPapel = pDevMode->dmPaperSize;
infoPapel.orientacion = pDevMode->dmOrientation;
GlobalUnlock((void*)hDevMode);
}
//GlobalFree((void*)hDevMode);
}
return infoPapel;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BitBtnImprimirClick(TObject *Sender)
{
VividReport1->Print();
}
¿alguna idea de que puede estar pasando?