AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Druckerbefehle direkt zum Drucker senden (Generic Text only)
Thema durchsuchen
Ansicht
Themen-Optionen

Druckerbefehle direkt zum Drucker senden (Generic Text only)

Ein Thema von Andidreas · begonnen am 4. Okt 2007 · letzter Beitrag vom 5. Okt 2007
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Druckerbefehle direkt zum Drucker senden (Generic Text only)

  Alt 4. Okt 2007, 15:51
aloha...

im moment versuch ich ein etikett (label) auf einem cab etiketten drucker auszudrucken...

bis jetzt hab ich das über folgenden befehl gemacht
Code:
print D:\Label.txt /d:lpt1
inzwischen habe aber einen etiketten drucker bekommen der nur noch einen netzwerk anschluss hat (und keinen com anchsluss oder ähnliches hat)...

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:
lpr -S 10.32.82.120 -d U:\Programmierung\Labels\Output\SAP_TO_Label.txt
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!!!
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 16:29
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:
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
Das obige Beispiel funktioniert mit einem Zebra-Etikettendruckr ohne Probleme.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 16:31
Zitat von Andidreas:
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!!!
Dieser Druckertreiber ist in Windows standardmäßig integriert, also kein Download erforderlich.

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...
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 16:34
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;
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#5

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 16:41
Oder sprichst den Drucker per FTP an.
Dann kannste, wie bei der LPT1-Lösung die Datei rüber kopieren.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 16:53
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???
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 17:45
in deiner Komponentenpalette unter Dialoge findest du einen TPrintDialog. Den mit aufs Form packen.
Vor dem Druckstart:
Delphi-Quellcode:
if PrintDialog1.execute then begin
  ... //alles drucken
end;
Das hat den Vorteil, man kann auch noch abbrechen.
Aber in dem Dialog kannst du den Drucker einstellen, auf dem gedruckt werden soll.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 17:56
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
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Remko
Remko

Registriert seit: 10. Okt 2006
Ort: 's-Hertogenbosch, Die Niederlande
222 Beiträge
 
RAD-Studio 2010 Arc
 
#9

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 4. Okt 2007, 19:23
Via the net use command you can redirect an lpt port to a network printer, like this:
Code:
net use lpt2: \\server\printer
. Then you can send your text to lpt2:
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: Druckerbefehle direkt zum Drucker senden (Generic Text o

  Alt 5. Okt 2007, 08:07
@remko... thx for your advice! yesterday recommends an associate of mine the same command, and it works
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz