Ir al contenido


Foto

[TRUCO DELPHI] Imprimir datos en modo RAW.


  • Por favor identifícate para responder
1 respuesta en este tema

#1 sir.dev.a.lot

sir.dev.a.lot

    Advanced Member

  • Miembros
  • PipPipPip
  • 545 mensajes
  • Location127.0.0.1

Escrito 10 diciembre 2016 - 04:19

[TRUCO DELPHI] Imprimir datos en modo RAW.


delphi
  1. Uses
  2. printers,
  3. winspool;
  4.  
  5. procedure PrintFile(Const sFileName: String);
  6. Const
  7. cBUFSIZE = 16384;
  8. Type
  9. TDoc_Info_1 = record
  10. pDocName: pChar;
  11. pOutputFile: pChar;
  12. pDataType: pChar;
  13. end;
  14. Var
  15. Count : Cardinal;
  16. BytesWritten: Cardinal;
  17. hPrinter : THandle;
  18. hDeviceMode : THandle;
  19. Device : Array[0..255] Of Char;
  20. Driver : Array[0..255] Of Char;
  21. Port : Array[0..255] Of Char;
  22. DocInfo : TDoc_Info_1;
  23. f : File;
  24. Buffer : Pointer;
  25. begin
  26. Printer.PrinterIndex := -1;
  27. Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
  28. If Not WinSpool.OpenPrinter(@Device, hPrinter, Nil) Then
  29. Exit;
  30. DocInfo.pDocName := 'MiDocumento';
  31. DocInfo.pOutputFile := Nil;
  32. DocInfo.pDatatype := 'RAW';
  33.  
  34. If StartDocPrinter(hPrinter, 1, @DocInfo) = 0 Then
  35. begin
  36. WinSpool.ClosePrinter(hPrinter);
  37. Exit;
  38. end;
  39.  
  40. If Not StartPagePrinter(hPrinter) Then
  41. begin
  42. EndDocPrinter(hPrinter);
  43. WinSpool.ClosePrinter(hPrinter);
  44. Exit;
  45. end;
  46.  
  47. System.Assign(f, sFileName);
  48. try
  49. Reset(f, 1);
  50. GetMem(Buffer, cBUFSIZE);
  51. While Not Eof(f) Do
  52. begin
  53. Blockread(f, Buffer^, cBUFSIZE, Count);
  54. If Count > 0 Then
  55. begin
  56. If Not WritePrinter(hPrinter, Buffer, Count, BytesWritten) Then
  57. begin
  58. EndPagePrinter(hPrinter);
  59. EndDocPrinter(hPrinter);
  60. WinSpool.ClosePrinter(hPrinter);
  61. FreeMem(Buffer, cBUFSIZE);
  62. Exit;
  63. end;
  64. end;
  65. end;
  66. FreeMem(Buffer, cBUFSIZE);
  67. EndDocPrinter(hPrinter);
  68. WinSpool.ClosePrinter(hPrinter);
  69. finally
  70. System.CloseFile(f);
  71. end;
  72. end;

Saludos!


  • 1

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 10 diciembre 2016 - 04:59

Mira este tema de seoane: Enviar secuencias de escape a una impresora.

 

Saludos.


  • 1




IP.Board spam blocked by CleanTalk.