Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Druckproblem (https://www.delphipraxis.net/9168-druckproblem.html)

Mattin 19. Sep 2003 14:29


Druckproblem
 
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. :cry:

Vielleicht hat ja jemand von Euch schonmal sowas probiert und kann mir vielleicht weiterhelfen ?

Ghostwalker 20. Sep 2003 14:20

Re: Druckproblem
 
Ich hab mal ne Druck-Engine gebaut (arbeitsmäßig, daher nicht abdruckbar:)), um alte DOS-Druckausgaben auf Windows umzusetzen. Gleich vorweg...es war ein Drama.

Aber ein guter ansatzpunkt ist der Quelltext von Delphi selbst, da gibts ne Unit namens Printers. Da steht alles drinn was man Grundsätzlich zum drucken von normalen Text braucht.:)

Da das ganze auch im Netzwerk funzt, sollte es kein Problem sein das an den entsprechenden Server zu schicken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz