Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   QR comprime caracteres en preview e impresion (https://www.clubdelphi.com/foros/showthread.php?t=88725)

hgiacobone 22-07-2015 16:56:10

QR comprime caracteres en preview e impresion
 
2 Archivos Adjunto(s)
Hola amigos,
Los pongo en tema:
Entorno desarrollo: Windows 7 + Delphi 7 + QuickReport 5.02
Entorno operativo: Windows Server (2008 & 2012)
NOTA: Por las dudas, informo que no he realizado ninguna actualización de componentes.

Estoy teniendo "de repente" un grave problema al imprimir. Cualquier tipo de reporte en la aplicación sale con el texto comprimido, o sea, se reduce el espaciado entre caracteres, independientemente del font, y provoca que las letras "se solapen".
Muy extraño.

Más vale una imagen que mil palabras...

Adjunto ej. de impresión de hace 1 mes atrás (ej_prn_002.png) y un ej. de impresión reciente (ej_prn_003.png)

hgiacobone 23-07-2015 23:59:52

*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í.:mad:
Saludos,
YAKO


La franja horaria es GMT +2. Ahora son las 19:14:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi