Thema: Delphi Druckproblem

Einzelnen Beitrag anzeigen

Mattin

Registriert seit: 4. Sep 2003
72 Beiträge
 
Delphi 7 Professional
 
#1

Druckproblem

  Alt 19. Sep 2003, 13:29
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 ?
Mit freundlichen Grüßen
Mattin

http://www.martin-karwoth.de
  Mit Zitat antworten Zitat