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;
{$ifdef HIRES}
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);
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;
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