Lucas: Wie funktioniert ein Druckertreiber..?

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

  1. 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

    1. 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

      1. 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

      2. 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

      3. 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

  2. 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