Войти

Показать полную графическую версию : Команды принтеру...


nec 3540A
22-01-2007, 22:55
Хотелось узнать, где написано про команды, которые можно послать принтеру (Epson stylus 640) на выполнение? Почитал мануал, тоже нечего подходящего не нащел, вот код моего записыльщика в порт принтера ( DELPHI ):

Под Win16 Вы можете использовать функцию SpoolFile, или Passthrough escape, если принтер поддерживает последнее.Под Win32 Вы можете использовать WritePrinter.
Ниже пример открытия принтера и записи чистого потока данных в принтер.Учтите, что Вы должны передать корректное имя принтера, такое, как "HP LaserJet5MP",чтобы функция сработала успешно.
Конечно, Вы можете включать в поток данных любые необходимые управляющие коды,которые могут потребоваться.

uses WinSpool;


procedure WriteRawStringToPrinter(PrinterName:String; S:String);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do begin
pDocName := PChar('test doc');
pOutputFile := nil;
pDataType := 'RAW';
end;
StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);

EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
WriteRawStringToPrinter('HP', 'Test This');
end;

ivank
22-01-2007, 23:47
nec 3540A
А зачем слать сырые команды, а не воспользоваться какими-нибудь более высокоуровневыми API?

nec 3540A
24-01-2007, 19:55
ivank
А поподробнее где можно про них прочитать?

pva
28-01-2007, 17:27
В MSDN написано, я там читал. В разделах GDI и Printing




© OSzone.net 2001-2012