Wie funktioniert ein Druckertreiber..?
Lucas
- programmiertechnik
Hallo liebe Forumsleser! ;)
Da sitzt man so an seinem Arbeitsplatz und wird täglich mit neuen, immer härteren Situationen und Aufgaben konfrontiert, die man -egal wie- "BIS MORGEN FRÜH ODER DIE GEHLTSERHÖHUNG KÖNNEN SIE VERGESSEN" lösen muss *g* ;).
Nun ja.. ganz so ist es auch nicht. Aber mein Kollege und ich sitzen seit ner halben Stunde da und stellen uns gegenseitig verzweifelt die Frage "Wie mache ich einen Druckertreiber?".
Also.. ganz konkret: Es gibt ja ne Menge Tools mit denen ich ein "Print-to-file PDF" erzeugen kann (also, ich geh auf "Drucken" in einer Anwendung und schon wird mir ein PDF erzeugt- die heutige Technologie erstaunt mich immer wieder aufs Neue :-p).
Zu der Funktionaltiät eines Druckertreibers wissen wir eigentlich relativ wenig- es wird an irgendeiner Stelle ein Spoolfile erzeugt, an den Drucker gesendet und der interpretiert dann die Steuerzeichen.
Die erste Frage, die sich uns stellt: Wird der Spool von der Anwendung erzeugt und dann an den Treiber gesendet (so wies mein Kollege behauptet) oder wird der Spool erst vom Treiber erzeugt (so wie ich das vermute).
Und was muss ich anstellen damit ich nun aus dem Spoolfile ein PDF-file erzeuge?! Klar könnte ich einen der bestehenden Treiber aus dem Internet ziehen- aber wo bleibt dabei der Reiz!? (außerdem muss ich während des Printvorgangs, bzw. danach noch einen Bearbeitungsschritt durchführen, der dazuprogrammiert werden muss.)
MfG
Lucas
Hi Lucas,
Nun ja.. ganz so ist es auch nicht. Aber mein Kollege und ich sitzen
seit ner halben Stunde da und stellen uns gegenseitig verzweifelt die
Frage "Wie mache ich einen Druckertreiber?".
für welchen Drucker denn?
Damit würde ich die Überlegung mal beginnen.
Soweit ich mir das Wesen eines Druckertreibers vorzustellen vermag,
ist das im Wesentlichen ein Programm, welches die Kommunikations-
schnittstelle zwischen einem Rechner und einem Drucker bedient.
Diese Kommunikation ist insbesondere bidirektional - der Druckertreiber
muß also sowohl Daten an den Drucker senden als auch Daten (Statusmel-
dungen etc.) von diesem Drucker entgegen nehmen können.
Und beides auch quasiparallel - es könnte ja mitten im Senden einer
Seite jemand das Papier herausziehen und der Drucker möchte jetzt dem
Druckertreiber mitteilen, daß die aktuelle Seite wohl irgendwie nicht
so richtig gedruckt werden kann oder was auch immer.
Also.. ganz konkret: Es gibt ja ne Menge Tools mit denen ich ein
"Print-to-file PDF" erzeugen kann (also, ich geh auf "Drucken" in
einer Anwendung und schon wird mir ein PDF erzeugt- die heutige
Technologie erstaunt mich immer wieder aufs Neue :-p).
Was das Thema "Druckertreiber" mit PDF zu tun haben soll, das habe ich
nicht verstanden.
Daß man einen Druckertreiber verwenden kann, um statt der Kommunikation
mit einem Drucker alternativ auch PDF-Dateien herzustellen, heißt kei-
neswegs, daß ein "richtiger" Druckertreiber nicht noch eine Menge an-
derer Aufgaben haben könnte.
Zu der Funktionaltiät eines Druckertreibers wissen wir eigentlich
relativ wenig -
Die hängt m. E. nicht unwesentlich von der Funktionalität des Druckers
ab. Wenn der Drucker viele verschiedene Dinge erzählen kann, dann wird
der Druckertreiber natürlich komplexer, als wenn der Drucker einfach nur
kommentarlos Daten entgegen nimmt.
es wird an irgendeiner Stelle ein Spoolfile erzeugt, an den Drucker
gesendet und der interpretiert dann die Steuerzeichen.
Ja, auch das.
Aber von der Architektur des Hauptprogramms ist das sogar eher nur eines
von vielen Features.
Nicht zu vernachlässigen ist m. E. die Anforderung, daß der Drucker-
treiber auch mit dem Benutzer kommunizieren will - beispielsweise die-
sem eine Fehlermeldung auf den Bildschirm malt und ähnliche Dinge.
Die erste Frage, die sich uns stellt: Wird der Spool von der Anwendung
erzeugt und dann an den Treiber gesendet (so wies mein Kollege
behauptet) oder wird der Spool erst vom Treiber erzeugt (so wie ich
das vermute).
Ich kenne die API des Betriebssystems nicht, über welches der Drucker-
treiber aufgerufen wird (davon wird das nämlich abhängen). Das kann also
wohl von Betriebssystem zu Betriebssystem unterschiedlich ausfallen.
Und was muss ich anstellen damit ich nun aus dem Spoolfile ein PDF-
file erzeuge?!
Warum solltest Du das tun wollen? Versteht Dein Drucker denn PDF?
Also so ganz ist mir Deine Aufgabenstellung nicht klar geworden.
Deine Fragestellung ist ohne Angabe des Druckers und des Betriebssystems
kaum sinnvoll zu beantworten, fürchte ich.
Viele Grüße
Michael
Hi Michael!
Ich dachte schon, ich bekomm gar keine Antwort mehr.
Vielleicht war meine Aufgabenstellung wirklich etwas undeutlich formuliert!
Ich fass es deshalb hier noch einmal ganz kurz zusammen:
Ich will keinen echten Druckertreiber zu einem Drucker (dafür müsste ich ja auch die genaue Architektur des Gerätes kennen- soviel ist mir klar).
Ich will YaPT- yet another PDF- Tool *g*
Also einen Druckertreiber, der PDF Files erzeugt (wie z.B. der PDF Writer, der Distiller oder einige Freeware Tools).
Da ich ganz spezielle Anforderungen an den Druckertreiber habe (muss nicht nur PDF Files erzeugen, sondern danach noch ein paar Bearbeitungsschritte durchführen), wäre am idealsten dieses Tool selbst zu erstellen.
Hoffe diese Angaben sind nun etwas verständlicher
MfG
Lucas
Moin!
Ich hab von dem Zeugs keine Ahnung, ich sehe nur, was grob so passiert.
Ein Druckertreiber erklärt der druckenden Applikation lange vor dem Druckvorgang, wie groß der bedruckbare Bereich der Seite ist, gibt Auskunft über diverse Möglichkeiten, die der Druckertreiber bietet, und nimmt letztendlich die zu druckenden Daten in einem standardisierten Format entgegen, um daraus eine Seite zu machen, die mit speziellen Befehlen an den Drucker geschickt wird (oder in eine Datei).
Das ist aber alles sehr speziell. Zum einen ist es extrem betriebssystemabhängig, wie es wirklich geht, zum anderen dürfte auch unterschiedlich sein, was die Applikationen so an Daten schicken (was aber wiederum eigentlich nur vom OS abhängt: Alle Windows-Applikationen dürften auf die gleiche Art und Weise Druckdaten erzeugen und an den Druckertreiber senden).
Ich will YaPT- yet another PDF- Tool *g*
Also einen Druckertreiber, der PDF Files erzeugt (wie z.B. der PDF Writer, der Distiller oder einige Freeware Tools).
Da ich ganz spezielle Anforderungen an den Druckertreiber habe (muss nicht nur PDF Files erzeugen, sondern danach noch ein paar Bearbeitungsschritte durchführen), wäre am idealsten dieses Tool selbst zu erstellen.
Ich denke, eine intensive Recherche über systemnahe Treiberprogrammierung wäre ganz angebracht. Das hat aber wirklich Null mit HTML zu tun (auch wenn HTML gedruckt oder nebenbei erzeugt werden soll).
- Sven Rautenberg
Hallo,
Da ich ganz spezielle Anforderungen an den Druckertreiber habe (muss nicht nur PDF Files erzeugen, sondern danach noch ein paar Bearbeitungsschritte durchführen), wäre am idealsten dieses Tool selbst zu erstellen.
Ich befürchte, daß Du, so wie Dein Wissensstand momentan anscheinend ist, einen ziemlich weiten Weg gehen mußt, um einen funktionsfähigen eigenen Treiber zu schriben.
Wie schon gesagt wurde, ist ein Druckvorgang eine ziemlich komplexe Angelegenheit.
Unter Unix/Linux kann ich es mir relativ einfach vorstellen, in diesen Prozeß einzugreifen, da hier oft Shellscripts zum einsatz kommen, welche wiederum für einzelne Prozeßschritte externe Anwendungen wie Ghostscript aufrufen. Wenn Du das richtige Script findest, dann kannst Du Dich auch mit deinen anderen Bearbeitungsschritten einklinken.
Unter Windows siehts nicht mehr so rosig aus. Allerdings sollte es auch hier möglich sein, etwas einzubauen.
Beispielsweise könntest Du ein zentrales Verzeichnis definieren, in dem alle zur weiterverarbeitung bestimmten PDF-Dokuemte reinkopiert werden. Ein Hintergrundprozeß überwacht dieses Verzeichnis und Verarbeitet alle Dokumente nach belieben weiter.
Grüße
Klaus
Hi Lucas,
Ich will keinen echten Druckertreiber zu einem Drucker
(dafür müsste ich ja auch die genaue Architektur des
Gerätes kennen- soviel ist mir klar).
Ich will YaPT- yet another PDF- Tool *g*
Also einen Druckertreiber, der PDF Files erzeugt (wie
z.B. der PDF Writer, der Distiller oder einige
Freeware Tools).
Hoffe diese Angaben sind nun etwas verständlicher
aha - doch, das hat geholfen, ja.
Es bleibt aber immer noch die Frage offen, für welches Betriebssystem - weil davon abhängt, wie der Drucker von den entsprechenden Anwendungsprogrammen mit Daten versorgt werden wird.
Falls das beispielsweise Windows sein sollte, würde ich an Deiner Stelle mal im "Microsoft Developer Network" nachsehen, wo eine Dokumentation für die Schnittstelle zu finden ist, über welche Dein Druckertreiber in Windows eingebunden werden muß.
Diese Schnittstelle dürfte Dir dann eine ganze Menge zusätzlicher Randbedingungen auferlegen und damit die Programmstruktur (Ereignisverarbeitung etc.) ebenso wie die zu verwendende Programmiersprache (wahrscheinlich wirst Du eine DLL oder etwas Ähnliches erzeugen müssen, Interpretersprachen scheiden damit aus) stark einschränken.
Aber wie stark, das mußt Du dort selbst nachlesen.
Viele Grüße
Michael
Hallo Lucas,
vielleicht guckst Du Dir mal folgenden Artikel an:
http://www.heise.de/ix/artikel/2000/02/142/
Da gibt's die Beschreibung eines Perl-Moduls zur Erzeugung von PDFs.
Viele Grüße
Mathias Bigge