AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dateien drucken mit frei wählbarem Drucker
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien drucken mit frei wählbarem Drucker

Ein Thema von mOfl · begonnen am 9. Aug 2008 · letzter Beitrag vom 10. Aug 2008
Antwort Antwort
mOfl

Registriert seit: 1. Jun 2006
11 Beiträge
 
#1

Dateien drucken mit frei wählbarem Drucker

  Alt 9. Aug 2008, 19:08
(Delphi 7 Personal)

Ich grüße euch!

Ich arbeite gerade an einem Programm, bei dem am Ende sehr viele Dateien (vor allem Vektorgrafiken) ausgedruckt werden müssen. Vorher muss ein Drucker (auch USB- oder Netzwerkdrucker) ausgewählt werden, alle Dateien werden dann auf dem gleichen Drucker gedruckt. Weiß einer, wie ich das löse? Ich fand das Problem zuerst selbst banal, aber habe trotz aufmerksamer Suche keine Lösung finden können.

ShellExecute(handle, 'print', 'datei.txt/d:LPT1', '', '', SW_HIDE); funktioniert zum Beispiel nicht, weil der Drucker eben nicht LPT1, sondern USB oder übers Netzwerk läuft. Außerdem hab ich mir sagen lassen, wer mit ShellExecute druckt, frisst auch kleine Kinder... man will ja in nichts hinein geraten...

Meine Hilflosigkeit rührt vor allem daher, dass ich keine Ahnung habe, wie man eine beliebige (Text-/Bild-)Datei in Delphi druckt, ohne ShellExecute zu benutzen. Ich lese hier immer wieder was von Canvas, aber das gilt glaube ich nur dafür, wenn man den Inhalt eines Delphi-Programms (RichEdit, Memo,...) drucken will.

Da das Programm sehr viele Dateien drucken muss, sollte der Drucker (im Idealfall durch den Druckerdialog) nur einmal gewählt werden müssen, sodass alle anderen Dateien automatisch auf den Drucker gedruckt werden, ohne diesen Drucker zum Windows-Standarddrucker zu machen. Vermutlich suche ich doch am ehsten eine Möglichkeit, einen beliebigen Drucker im Druckerdialog auszuwählen und dann auf diesem über den Shell-Befehl zu drucken. Wie gesagt, es sind eben verschiedene Dateien, vor allem Vektorgrafiken, die (glaube ich) nicht programmintern gedruckt werden können.

Weiß einer Rat?
Grüße
Dani
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Dateien drucken mit frei wählbarem Drucker

  Alt 9. Aug 2008, 19:49
Hallo mOfl,

entschuldige, aber Du hast eine etwas naive Vorstellung von Drucken. Im Prinzip läuft das immer so ab:
Daten -> Treiber -> Drucker
Das heißt Deine Daten werden durch einen Treiber so aufbereitet, das sie auf dem Drucker richtig ausgegeben werden. Dazu mußt Du dem Treiber gegenüber natürlich sagen, was Du für Daten drucken willst. Z.B. diese Zeile Fett wird in die notwendigen Steuerzeichen für den Drucker + Text ungesetzt. Die andere Möglichkeit hast Du schon angesprochen. Auf dem Canvas wird ein Bild gezeichnet (das auch wie Text aussehen kann) und das wird dann an den Drucker als Bild bzw. die notwendigen Steuerzeichen weitergereicht.

Die bekannte Methode
copy TEXT_DATEI.TXT LPT1:
funktioniert nur, weil die notwendigen Steuerzeichen CR LF schon enthalten sind. Und dann nur wenn die einzelnen Textzeilen schon an die maximale Druckbreite angepasst sind.

Wenn Du also beliebige Dateien ausdrucken willst hast Du 2 Möglichketen:
a) Die Datei unter Delphi einlesen, interpretieren, auf der Canvas darstellen und dann ausdrucken
b) wie Du schon angedeutet hast mit Hilfe von SHELLEXECUTE ein Interpreterprogramm aufrufen,daß dann auch den Ausdruck übernimmt. Dann ist die Druckeransteuerung allerdings von dem Interpreterprogramm abhängig.
Eine andere Version von b) ist z.B. die das füttern von Word mit Word-Dateien und dann das Anstoßen des Ausdrucks in Word, das läuft dann unter OLE.


Gruß
K-H

soweit ich weiß ist print im Prinzip das gleiche wie copy xxxx LPT1: nur nicht ganz so direkt, es wird auch der Spooler genutzt.

Au Mann, PS-Drucker verstehen natürlich nur PS, und GDI-Drucker auch nur GDI, also Copy ... bedingt natürlich eine Datei, die vom Drucker verstanden wird!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Dateien drucken mit frei wählbarem Drucker

  Alt 10. Aug 2008, 07:31
Moin Dani,

wenn du in deinem Programm den TPrinterSetupDialog verwendest, damit der Benutzer zur Laufzeit den Drucker auswählen kann, so bleibt diese Auswahl bis zum Programmende erhalten und gilt nur für dein Programm. Alternativ kannst du auch alle vorhandenen Drucker untersuchen, ob mindestens einer dabei ist, der für deine Zwecke genügt.

Was das Drucken von Dateien angeht, so ist zu unterscheiden, ob die Daten erst noch durch den Druckertreiber aufbereitet werden müssen oder ob sie bereits aufbereitet sind. "Vor allem Vektorgrafiken" in Verbindung mit "Drucker" ist keine ausreichend genaue Beschreibung deines Problems. Welche unterschiedlichen Datenformate möchtest du drucken? Auf welchem Drucker (Modell, Fähigkeiten)?

Freundliche Grüße
  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 14:34 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