Ver Mensaje Individual
  #2  
Antiguo 23-07-2015
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Reputación: 21
hgiacobone Va por buen camino
*resuelto*

Hola,
Luego de una ardua búsqueda, intentando finalmente adivinar problemas relacionados a la diferencia entre DPI de pantallas e impresoras, en el mismísimo foro de QuickReport, se trató el tema allá por el 2013 y al parecer al día de hoy, la gente de QSoft no brindó una respuesta satisfactoria a pesar de que un usuario posteó la solución aparentemente más próxima.

Aquí el post en cuestión: http://forum.quickreport.co.uk/defau...g=posts&t=1932

El problema ocurre al trabajar en Windows Server con conexiones RDP (Escritorio Remoto).

Para la solución planteada en el post anterior,es necesario contar con los fuentes del QR. De lo contrario, no nos queda otra que configurar las conexiones RDP a la resolucion 1024x768.
Ahora, pasemos a editar el archivo: QRPrntr.pas
Código Delphi [-]
procedure TQRPrinter.CreateMetafileCanvas;
begin
  FMetafile := TMetafile.Create;
//{$define HIRES}
{$ifdef HIRES}
  // try a high res canvas
  XFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsX) / 254;
  YFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsY) / 254;
  FMetafile.Width := XSize(PaperWidthValue);
  FMetafile.Height := YSize(PaperLengthValue);
  FCanvas := TMetafileCanvas.Create(FMetafile, aprinter.Handle);
  //(!)fix unknown
  FCanvas.Font.PixelsPerInch:= GetDeviceCaps(aPrinter.Handle, LogPixelSY);
{$else}
  FMetafile.Width := XSize(PaperWidthValue);
  FMetafile.Height := YSize(PaperLengthValue);
  FCanvas := TMetafileCanvas.Create(FMetafile, 0);
  YFactor := Screen.PixelsPerInch / 254;
  XFactor := YFactor;
  //(!)fix RDP connection!!!
  SetGraphicsMode(FCanvas.Handle, GM_ADVANCED);
{$endif}
  FHyperlinks := TList.Create;
end;

Esas son las "nuevas líneas" que la gente de QSoft ha adicionado en los últimos lanzamientos y que al parecer corrigen ese bug.
La cuestión, es que sigo sin entender por qué se disparó ahora el problema, si yo no he actualizado ni alterado nada de mi entorno de desarrollo.
Por eso mismo, yo lo vinculo mas a una actualización del driver de video del Server y/o del propio WindowsUpdate. Y digo video, porque aunque no parezca, el QR al parecer trabaja mas con los pixeles de pantalla que con los PPP del dispositivo impresor.... cosa que se supone debería ser lo lógico pero viendo el código anterior nos damos cuenta que no es así.
Saludos,
YAKO
Responder Con Cita