Ver Mensaje Individual
  #1  
Antiguo 05-03-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Reputación: 18
anubis Va por buen camino
imprimir con printer imagen y texto con canvas

Hola de nuevo,

Aqui preguntando de nuevo detalles.
Ya estuve viendo post por todos los lados, ejemplos etc, para poder imprimir en una impresora de tickets con logotipo incluido.

He conseguido imprimir un logotipo, y tambien un texto formateado, pero el problema que tengo es que si imprimo primero el logotipo, con enddoc, me hace un salto de lineas, luego imprimo el texto, y tambien, imagino que enddoc no se puede cambiar para que no haga los saltos de linea (si si se puede comentadlo, porque he buscado y no hay forma).
Asi que pense, en mi ignorancia de no entender muy bien los canvas, o bien no se pueden combinar varias cosas, pero lo hice.

Aqui esta el resultado, que no funciona por cierto, solo me imprime el texto pero la imagen inicial no.


Código Delphi [-]
procedure tform1.imprimelinea;
const
  margin_left = 0;
  margin_top=0;
var
 i: Integer;
 MiMapadeBits : TBitMap;
begin
  MiMapadeBits := TBitMap.Create;
  { Creamos el objeto MiMapadeBits }
  MiMapadeBits.Width := PAGE.Width;   { Definimos su anchura }
  MiMapadeBits.Height := page.Height; { Definimos su altura }
  page.BorderStyle:=bsNone; { Definimos el estilo del borde a ninguno }
  page.PaintTo(MIMAPADEBITS.Canvas, 0, 0);
  page.BorderStyle:=bsSingle;


  with Printer do
  try
    BeginDoc;
    Canvas.Font.Name := 'COURIER NEW';
    CANVAS.FONT.Style:=[FSbOLD];
    Canvas.Font.Size := 6;
    Canvas.Font.Color := clBlack;

     Canvas.CopyRect(Classes.Rect(0, 0, 365, 60),
      MiMapadeBits.Canvas, Classes.Rect(0, 0, MIMAPADEBITS.Width, mIMAPADEBITS.Height));

    for i := 0 to IMPRIMIR_ticket.Count - 1 do
     begin
    Canvas.TextOut(
      MARGIN_LEFT,
      MARGIN_TOP + i*Printer.Canvas.TextHeight(imprimir_ticket.Strings[i]),
      imprimir_ticket.Strings[i]);
     end;
  finally
    EndDoc;
    mimapadebits.Free;
  end;

end;

Lo que hago ahi es cargar los datos y luego se los paso al canvas, y finalmente imprimo.

alguna idea?

Por cierto lo de la imagen (como digo, si funciona en modulo aparte) lo saque de un ejemplo de lazarus y lo del texto lo saque de un post de esta magnifica pagina.

gracias amigos.
Responder Con Cita