![]() |
Druckerbefehle direkt zum Drucker senden (Generic Text only)
aloha...
im moment versuch ich ein etikett (label) auf einem cab etiketten drucker auszudrucken... bis jetzt hab ich das über folgenden befehl gemacht
Code:
inzwischen habe aber einen etiketten drucker bekommen der nur noch einen netzwerk anschluss hat (und keinen com anchsluss oder ähnliches hat)...
print D:\Label.txt /d:lpt1
wie kann ich jetzt mein etikett (die druck befehle für denn etiketten drucker befinden sich in einem txt file) direkt zum drucker schicken??? folgendes hab ich schon probiert (hat aber leider nicht funktioniert!):
Code:
teilweise hab ich im internet schon von einem "generic - text only" treiber gehört... aber wie ich denn anwenden soll, bzw. wie ich mir diesen einrichten kann (auch wo ihn herbekommen --> download) ist mir nicht ganz klar! hier wäre ich für etwas hilfestellung dankbar!!!
lpr -S 10.32.82.120 -d U:\Programmierung\Labels\Output\SAP_TO_Label.txt
|
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
Hallo,
der "generic - text only" treiber gehört zur Standardausstattung von Windows und ist im Druckerinstallations-Assistent in der Liste der Hersteller unter Standard zu finden. zum Drucken:
Delphi-Quellcode:
Das obige Beispiel funktioniert mit einem Zebra-Etikettendruckr ohne Probleme.
uses
WinSpool; resourcestring rsNoPrinter='Ducker >%s< nicht gefunden!'; function DoDruckeScript(aScript:TStringList; const aDruckername:String):Bool; var hPrinter:THandle; DocInfo :TDocInfo1; i :Integer; bWritten:DWord; s :String; begin Result:=False; if not WinSpool.OpenPrinter(PChar(aDruckername), hPrinter, nil) then raise Exception.CreateFmt(rsNoPrinter, [aDruckername]); try with DocInfo do begin pDocName:='Dokument zum Drucken'; // <-- pOutputFile:=nil; pDatatype:='RAW'; end; // with DocInfo if (StartDocPrinter(hPrinter, 1, @DocInfo)=0) then Abort; try for i:=0 to aScript.Count-1 do begin s:=aScript.Strings[i]; Result:=WritePrinter(hPrinter, PChar(s), Length(s), bWritten); if not Result then Abort; end; // for i Result:=True; finally EndPagePrinter(hPrinter); end; // try finally EndDocPrinter(hPrinter); WinSpool.ClosePrinter(hPrinter); end; // try end; // DoDruckeScript |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
Zitat:
Du bzw. der Netzwerk-Administrator muss an dem betreffenden Arbeitsplatz einen neuen Drucker einrichten (ganz normal mit dem Druckerinstallations-Assistenten) und diesem den Druckertreiber "generic - text only" zuordnen; je nach Win-Version heißt der vielleicht etwas anders, aber das erkennst Du schon. Anschließend muss dieser Drucker freigegeben werden; danach kann er wie jeder lokale Drucker über die Printer-Klasse angesprochen werden. Ich hoffe, ich konnte etwas helfen. Jürgen PS. Nicht schnell genug... |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
Statt LPT1: schreibst Du die Netzwerkbezeichnung des Druckers - z.B. Ne00:
Delphi-Quellcode:
Function Get_Printerport(Printername: string): string;
var Reg: TRegistry; p: Integer; begin Reg := TRegistry.Create; with Reg do begin RootKey := HKEY_CURRENT_USER; if OpenKey('\Software\Microsoft\Windows NT\CurrentVersion\Devices\', True) then begin if ValueExists(Printername) then begin // The reg Key value may look like "winspool,LPT1:" Result := ReadString(Printername); p := Pos(',', Result); Result := Copy(Result, p + 1,Length(Result) - p); end; end; CloseKey; end; end; procedure TForm1.FormShow(Sender: TObject); var i:integer; begin Memo1.Clear; ListBox1.Items := Printer.Printers; for i := 0 to ListBox1.Count - 1 do begin Memo1.Lines.Add(ListBox1.Items.Strings[i]+' : '+ Get_Printerport(ListBox1.Items.Strings[i])); end; Memo1.Lines.Add('Active printer is : '+ Printer.Printers[Printer.PrinterIndex]); Memo1.Lines.Add('Port : '+ Get_Printerport(Printer.Printers[Printer.PrinterIndex])); Label1.Caption := ''; end; |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
Oder sprichst den Drucker per FTP an.
Dann kannste, wie bei der LPT1-Lösung die Datei rüber kopieren. |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
danke schon mal für die antworten...
also ich habe jetzt denn "generic text only" eingerichtet... soweit so gut... aber jetzt habe ich 2 verständnisfragen... wie kann ich jetzt eine komplette txt datei (mit drucker befehlen) an meinen etikettendrucker schicken??? und woher weiß windows das es jetzt auf dem drucker "xyz" etwas ausdrucken muss??? |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
in deiner Komponentenpalette unter Dialoge findest du einen TPrintDialog. Den mit aufs Form packen.
Vor dem Druckstart:
Delphi-Quellcode:
Das hat den Vorteil, man kann auch noch abbrechen. ;)
if PrintDialog1.execute then begin
... //alles drucken end; Aber in dem Dialog kannst du den Drucker einstellen, auf dem gedruckt werden soll. |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
im moment habe ich aber noch kein programm was die befehle an denn drucker sendet!
ich habe lediglich ein txt file das ich über einen drucker dialog oder über einen befehl (in der befehlseingabe) an denn drucker senden möchte! aber inzwischen habe ich es herausgefunden wie ich denn "generic text only" drucker einrichten muss das er meinen cab ansteuert... nämlich über Drucker --> Eigenschaften --> Anschlüsse --> "gewünschter drucker auswählen" für meine nächste frage werd ich glaub ein neuen thread aufmachen ;-) |
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
Via the net use command you can redirect an lpt port to a network printer, like this:
Code:
. Then you can send your text to lpt2:
net use lpt2: \\server\printer
|
Re: Druckerbefehle direkt zum Drucker senden (Generic Text o
@remko... thx for your advice! yesterday recommends an associate of mine the same command, and it works ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 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