Hallo alle Zusammen,
ich tüddel schon seit Tagen mit einem Problem beim Drucken rum. Ich möchte gerne meine Druckauftäge direkt über einen Printserver drucken lassen.
Delphi-Quellcode:
procedure SpoolerDruck(const Printer, Data, sSpoolName : string);
const
cRaw = 'RAW';
type
TDoc_Info_1 = record
DocName: PChar;
OutputFile: PChar;
Datatype: PChar;
end;
var
PrinterHandle: THandle;
DocInfo: TDoc_Info_1;
BytesWritten: Cardinal;
Count: Cardinal;
Defaults: TPrinterDefaults;
begin
Defaults.pDatatype := cRaw;
Defaults.pDevMode := nil;
Defaults.DesiredAccess := PRINTER_ACCESS_USE;
Count := Length(Data);
if not OpenPrinter(PChar(Printer), PrinterHandle, @Defaults) then
raise myPrinterError.Create('Drucker kann nicht geöffnet werden !');
DocInfo.DocName := PChar(sSpoolName);
DocInfo.OutputFile := nil;
DocInfo.Datatype := cRaw;
try
if StartDocPrinter(PrinterHandle, 1, @DocInfo) = 0 then
raise myPrinterError.Create('Spooler ist nicht bereit !');
try
if not StartPagePrinter(PrinterHandle) then
raise myPrinterError.Create('Seite kann nicht gedruckt werden !');
try
if not WritePrinter(PrinterHandle, @Data, Count, BytesWritten) then
raise myPrinterError.Create('Fehler beim senden der Daten an den Drucker !');
finally
if not EndPagePrinter(PrinterHandle) then
raise myPrinterError.Create('End Page nicht möglich !');
end;
finally
if not EndDocPrinter(PrinterHandle) then
raise myPrinterError.Create('Spooler kann Druck nicht abschließen !');
end;
finally
ClosePrinter(PrinterHandle);
end;
if BytesWritten <> Count then
raise myPrinterError.Create('Es konnten nicht alle Daten gedruckt werden !');
end;
Die Prozedure funktioniert ja soweit, bis auf das auf dem Drucker nur Datenmüll rauskommt.
Vielleicht hat ja jemand von Euch schonmal sowas probiert und kann mir vielleicht weiterhelfen ?