Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   como imprimo en tamaño de impresora térmica (https://www.clubdelphi.com/foros/showthread.php?t=92723)

darkbits 10-01-2018 22:25:46

como imprimo en tamaño de impresora térmica
 
un saludo al club
tengo una aplicación concluida, las boletas por default imprime en media hoja carta todo perfecto, esto lo realice con el fastreport media hoja y listo
varios clientes me piden que imprima en tamaño de impresora térmica, a lo que vi la hoja es de 8.5 cm

mi pregunta es como se realiza ello nunca hice eso, alguien hizo esta impresión con fastreport?
reduci a 8.5cm pero me imprime en hoja entera

yo necesito que imprima de acuerdo a la necesidad si es una sola venta que corte ahi

realice 1 venta o 10 ventas imprime en todo la hoja

alguien me puede indicar que modificar en parametros

gracias

darkerbyte 11-01-2018 23:54:01

Mas datos
 
Hola.

Supongo que lo que quieres es imprimir en una impresora termica de TICKETS.
Hay varias maneras de hacerlo.

1. Con un reporteador (yo he usado Quickreport)

2. Usa un TRichedit, vacía el texto a imprimir en el richedit y luego usa unas lineas como estas:
Código Delphi [-]
//Printer lo obtienes declarando la unidad printers en el USES
//PrinterIndex es el numero de la impresora instalada en windows, puedes tener una sección donde el usuario pueda configurar su
//impresora para tickets de manera que no tenga que ser la impresora por default de windows.
Printer.PrinterIndex:= nimpresora; 
Printer.Copies:=1;
//Luego simplemente manda a llamar al método imprimir:
   try redit.Print('Ticket');
   except error:=True;
    end;

Para estos dos primeros casos, dependiendo de tu impresora (todas las Epson y Star, por ejemplo) tienen en sus opciones de configuración donde puedes programar el corte de papel, puede ser al finalizar el documento, en cada pagina nueva, etc.

3. Usa un método como este:
Código Delphi [-]
procedure Timpresion.ImprimirWin(contenido : Tstrings; impresora:TPrinter);
var
 i,h : integer;
begin
 with impresora do
 begin
   beginDoc;
   h:= Canvas.TextHeight(Contenido.Strings[0]);
   for i := 0  to Contenido.Count-1 do
               Canvas.TextOut(0,i*h,Contenido.Strings[i]);
   endDoc;
 end;
end;

4. Utiliza una impresión RAW puedes buscar en el foro, los compañeros han subido varios ejemplos

Para los puntos 3 y 4 puedes ocupar los comandos de la impresora ESC/POS para que controles manualmente el corte de papel, cajon de dinero, etc.


Te comento que todos los métodos funcionan bien, pero los que mejores resultados me han dado es el 2 y el 4. Aunque en mis programas incluyo los 4 métodos porque a veces son impresoras matriciales, no se tiene controlador, y en mi caso los clientes luego tienen cada impresora mas vieja que hay que echar a andar. Si te vas a concretar en un modelo específico de impresora la cosa esta todavía mas fácil.


La franja horaria es GMT +2. Ahora son las 14:50:18.

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