PDF drucken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PDF drucken

    Hallo Forum,

    wie kann ich ein on-the-fly generiertes PDF anstatt im Browser anzeigen zu lassen direkt drucken lassen?

    Es gibt jede Menge hervorragende Klassen, um PDFs zu generieren aber ich habe bis jetzt leider noch keine Möglichkeit gefunden, um diese Datei auch direkt anzudrucken.
    Gibt es da eine Möglichkeit?

  • #2
    aber ich habe bis jetzt leider noch keine Möglichkeit gefunden, um diese Datei auch direkt anzudrucken.
    mit PHP wirst du da auch keine finden, wenn du dir mal vor augen führst, dass PHP serverseitig läuft.

    Kommentar


    • #3
      Wieso?
      Ich kann doch auch mit printer_list alle verfügbaren Drucker ermitteln, mit printer_open gezielt direkt ansprechen und Druckjobs starten (ohne, dass der Druckdialog kommt).
      Die Frage ist nur, ob das eben auch irgendwie funktioniert, dass man PDF-Dateien direkt an den Drucker gibt.

      Kommentar


      • #4
        SORRY, war von dem normalen User "ICH will beim CLIENT drucken" augeganen. Sorry dafür.

        vermute aber, dass du on the fly keine chance hast, sondern nur aus dem file-system drucken kannst.

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          SORRY, war von dem normalen User "ICH will beim CLIENT drucken" augeganen.

          Kein Problem.
          Ich bin eben kein normaler User. lol

          vermute aber, dass du on the fly keine chance hast, sondern nur aus dem file-system drucken kannst.
          Danke für Deine Einschätzung. Mittlerweile glaube ich das auch - alle Recherchen führten zu diesem Ergebnis.
          Da geht mir aber wieder die Hutkrempe hoch - wie viele Anwendungen gib t es, die per PHP ein PDF generieren und dieses dann per Email verschicken oder sonstwas damit machen. Aber alle Anwendungen überlassen das Drucken dem User und ich finde einfach kein Beispiel, was mich weiterbringt. Naja...*jammer*

          Da ich von einem lokalen Linux-Server ausgehen kann, den ich auch konfigurieren darf, werde ich mir selbst wohl aus PHP heraus EXEC-Commands gönnen und damit den LPT1 belästigen.

          Es geht darum, dass im Intranet Artikellisten aus einer Auftragserfassung heraus gedruckt werden müssen.
          Was besseres und universaleres fällt mir einfach nicht ein.
          Falls doch noch jemand eine Idee hat, die flexibler anmutet, wäre ich für einen Tipp dankbar.
          Zuletzt geändert von DSB; 27.07.2004, 18:20.

          Kommentar


          • #6
            was passiert eigentlich wenn man nicht über lpr geht, sondern direkt
            auf Port 631 den cupsd anspricht, und das File dorthin ausgibt?

            Ich meine, wenn ich drucke, sende ich das File ja auch nur an

            http://localhost:631/druckername

            ????
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Im Moment verfolge ich gedanklich noch einen anderen Ansatz.

              PHP muss ja nicht unbedingt drucken.
              Man definiert einen festen Ordner als Druckpool und speichert die PDFs darin.

              Ein anderes Programm (z.B. in Java) überwacht diesen Ordner und schaut z.B. alle 5 Minuten nach, ob es darin eine Datei gibt. Wenn ja, wird sie automatisch gedruckt und wenn der Druck erfolgreich war, dann schreibt das Mini-Programm in eine "Status.txt", dass es gedruckt hat.
              Über die Anfangsziffern des Dokumentennamens könnte man dann sogar einbauen, dass verschiedene Drucker angesprochen werden und über das Textfile könnte PHP wiederum mitbekommen, dass erfolgreich gedruckt wurde und der Kreis ist geschlossen.

              Klingt theoretiscch für mich vernünftig und logisch - mal sehen, ob das in der Praxis auch so umsetzbar ist.

              Kennt jemand zufällig ein solches Programm, welches einen Ordner überwacht und bei Bedarf druckt?

              Kommentar


              • #8
                CronJob ist dein Freund.
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #9
                  wieso so umständlich?

                  da doch lieber per exec Befehl, das geht auch super schnell

                  so machen wir es
                  PHP-Code:
                  function do_print($_druckid 0$_serie false){
                          if(!
                  $_druckid)
                              return 
                  false;
                          
                  $file dirname(__FILE__).'/../'._PDF_PATH_.'/'.$_druckid.'.pdf';
                          if(
                  file_exists($file)){
                              
                  $befehl 'lpr -P '.($_serie?_DRUCKER_SERIE_:$this->user->get('drucker')).' '.$file;
                              
                  //echo $befehl;
                              
                  exec($befehl,$answer,$answer_int);
                              if(
                  $answer_int){
                                  return 
                  false;
                              }else{
                                  if(
                  $_serie){
                                      
                  $this->druckid[] = $_druckid;
                                  }
                                  return 
                  true;
                              }
                          }
                          return 
                  false;
                      } 
                  und das logging dann in
                  PHP-Code:
                  function db_update(){
                          if(
                  count($this->druckid)){
                              
                  $this->db->query('    UPDATE druckanforderung
                                                  SET druckdatum = NOW()
                                                  WHERE druck_id IN ('
                  .implode(',',$this->druckid).')');
                              
                  $this->druckid = array();
                          }
                      } 
                  TBT

                  Die zwei wichtigsten Regeln für eine berufliche Karriere:
                  1. Verrate niemals alles was du weißt!


                  PHP 2 AllPatrizier II Browsergame

                  Kommentar


                  • #10
                    @TBT
                    Vielen Dank für das Script.Jetzt hast Du mir die Arbeit abgenommen.


                    Nach ein paar erfolgreichen Tests hatte ich gerade auch angefangen sowas zusammen zu basteln und den umständlicheren Weg über JAVA wieder verworfen.


                    Glücklicherweise kenne ich ja die Serverumgebung (Linux) und weiß, dass ich den "LPR"-Befehl auf jeden Fall zur Verfügung habe.

                    Kommentar


                    • #11
                      Mittlerweile läuft unter Linux alles einwadnfrei.

                      Das PHP-Script generiert einen lpr-Befehl und schießt ein PDF-Dokument über die Kommandozeile in die richtige Druckerwarteschlange.
                      Alles astrein und fehlerfrei!

                      Dummerweise sind jetzt doch ein paar Windowsserver dazugekommen, und hier stehe ich vor dem Problem, dass es mal klappt und mal nicht.
                      Also bei einigen Druckern funktioniert der per lpr-generierte Befehl und das PDF wird korrekt ausgedruckt und bei anderen Druckern klappt es nicht.
                      Es werden dann Steuerzeichen im Klartext ausgedruckt - der Drucker versteht also den Header nicht.
                      Mir fehlen leider die Grundlagen um den Fehler weiter einzugrenzen.
                      Könntet ihr mich gedanklich unterstützen?
                      Die Drucker sind im Netzwerk über einen TCP/IP-Anschluss erreichbar.
                      Damit der lpr-Befehl unter Windows überhaupt funktioniert habe ich den Unixdruckdienst über TCP/IP gestartet.

                      Also nochmal die Fakten:
                      - PDF wird über die Kommandozeile per lpr an den Drucker übergeben
                      - bei einigen Druckern wird Klartext gedruckt anstatt PDF / bei anderen klappts problemlos
                      - neueste Treiberversionen (inklusive Postscript Level3) sind installiert

                      Ich habe alle möglichen Einstellungen im Druckertreiber verglichen - ergebnislos.

                      Wo ist der Haken? Was übersehe ich und wie kann ich dem Fehler weiter auf die Spur kommen?
                      Zuletzt geändert von DSB; 24.11.2004, 09:36.

                      Kommentar

                      Lädt...
                      X