Andreas: An definierter Stelle drucken

Hallo!

Ich würde gerne Versandunterlagen drucken, und das tolle daran, man muß mit dem Drucker genau die paar kleinen jeweils vorgesehenen Felder treffen.

Wenn ich jetzt einfach eine html-Seite drucke, wie stehen die Chancen das man das einigermaßen trifft? Wahrscheinlich eher mäßig,udnb wen man dann noch verschiedene Browser einsetzt ist wohöl Hopfen udn Malz verloren. Das doofe an html, es gibt ja keine definierbare Höhe. Oder sollte ich trotzdem einfach Tabellen mit hight Attributen verwenden? Oder evt. Transparente Gifs für die Abstände? Oder ein ganz anderer Weg, pdfs generieren, damit wäre zumindest das Browser-Problem gelöst.

Was sagt Ihr dazu? Wie würdet Ihr sowas machen? Oder ist html dazu definitiv ungeeignet? Was könnte ich sonst über das Intranet einbinden? Vielleicht über das entsprechende PERL-Modul Excel-Sheets generieren... freue mich über jeden Tipp!

Viele Grüße
Andreas

  1. Hallo!

    Ich würde gerne Versandunterlagen drucken, und das tolle daran, man muß mit dem Drucker genau die paar kleinen jeweils vorgesehenen Felder treffen.

    Wenn ich jetzt einfach eine html-Seite drucke, wie stehen die Chancen das man das einigermaßen trifft? Wahrscheinlich eher mäßig,udnb wen man dann noch verschiedene Browser einsetzt ist wohöl Hopfen udn Malz verloren. Das doofe an html, es gibt ja keine definierbare Höhe.

    Theoretisch kannst du mit CSS ja durchaus deine Sachen absolut positionieren und zwar zentimetergenau (oder millimeter oder in einem anderen absoluten Maß).
    Aber das du damit beim drucken deine Felder triffst, das bezweifle ich, so fähig sind die Browser denke ich mal noch nicht. (Außerdem machen sie ja noch ihre eigene Kopf- und Fußzeile dazu, das verschiebt auch wieder.) Probieren kannst du es ja mal.
    Wenn du Möglichkeiten hast, auf dem Server PDFs zu generieren und das so hinbekommst, das es damit passt, würde ich es mal so versuchen.

    Gruß,
        Stefan

    1. Aloha!

      Theoretisch kannst du mit CSS ja durchaus deine Sachen absolut positionieren und zwar zentimetergenau (oder millimeter oder in einem anderen absoluten Maß).

      Das funktioniert auch praktisch ganz wunderbar. Man kann wirklich mit dem Millimetermaß nachmessen: Die Seitenelemente sind absolut treffsicher ausgedruckt.

      Man muss nur zwei Dinge beachten:
      1. Maß- und Positionsangaben in Millimetern statt Pixeln ausgeben und
      2. den Druckerrand mit beachten.

      Zu 2:
      Jeder Browser definiert im Druckdialog einen Rand um die Seite herum. Dieser Bereich ist auch mit CSS dann nicht erreichbar, sondern der <body> der Seite befindet sich innerhalb dieses äußeren Randes. Ist der Linke Rand also 2 cm breit, dann würde ein left:5mm; absolut positioniertes Element 25 mm vom linken Rand entfernt auftauchen.

      Empfehlenswert dabei: Opera verwenden, denn Opera erlaubt durch einen einfachen Buttonklick, auf Druckausgabe umzuschalten. Damit kann man schon mal grob sehen, wie sich die Ausgabe auf der Seite verteilt.

      Ansonsten sind zum Einsparen von Papier IE 5.5 und höher sowie Mozilla geeignet, denn diese haben eine Druckvorschau - der IE 5.0 leider noch nicht.

      (Außerdem machen sie ja noch ihre eigene Kopf- und Fußzeile dazu, das verschiebt auch wieder.)

      Die kann und sollte man im Druckdialog abschalten. Per CSS oder Javascript ist das leider nicht zu machen - also eignet sich die exakt positionierte Druckausgabe eher nur fürs Intranet - der Admin stellt dann einmal die Browser alle so ein, wie es notwendig ist, und dabei bleibt es dann.

      Wenn du Möglichkeiten hast, auf dem Server PDFs zu generieren und das so hinbekommst, das es damit passt, würde ich es mal so versuchen.

      Das ist ebenfalls eine interessante Variante, erfordert aber, dass der Server eben PDFs generieren kann. Selbst mit PHP erfordert dies eine externe Programmbibliothek, sonst funktioniert es nicht. Und da leider schon nicht alle PHP-Installationen die gdlib (Grafikfunktionen) unterstützen, kann man bei PDF-Funktionen einen richtigen Reinfall erleben. Aber im Intranet hat man hoffentlich einen Admin, der sich mit sowas auskennt.

      - Sven Rautenberg

      1. Hallo!

        Theoretisch kannst du mit CSS ja durchaus deine Sachen absolut positionieren und zwar zentimetergenau (oder millimeter oder in einem anderen absoluten Maß).

        Das funktioniert auch praktisch ganz wunderbar. Man kann wirklich mit dem Millimetermaß nachmessen: Die Seitenelemente sind absolut treffsicher ausgedruckt.

        Man muss nur zwei Dinge beachten:

        1. Maß- und Positionsangaben in Millimetern statt Pixeln ausgeben und
        2. den Druckerrand mit beachten.

        Das wußte ich nicht das das so genau ist. An mm-Angaben hatte ich auch nicht gedacht. Werd mir das mal anschauen, denn das wäre wohl das einfachste. Und Du bist sicher das sowohl Mozilla als auch IE gleiche Ergebnisse erzielen?

        Zu 2:
        Jeder Browser definiert im Druckdialog einen Rand um die Seite herum. Dieser Bereich ist auch mit CSS dann nicht erreichbar, sondern der <body> der Seite befindet sich innerhalb dieses äußeren Randes. Ist der Linke Rand also 2 cm breit, dann würde ein left:5mm; absolut positioniertes Element 25 mm vom linken Rand entfernt auftauchen.

        Das ist mit bewußt.

        eine andere Frage - Tabellenränder werden aber standardmäßig mitgedruckt, oder? Ich hatte nämlich das Problem das manche Browser ja mit CSS nicht wirklich klar kamen(das ist jetzt schon ein wenig her, jetzt kann ich IE 5.5 und NN 6 voraussetzen), da hatte ich den Tabellenrand mit Extra Spalten/zeilen erstellt, halt mit schwarzem Hintergrund und 1x1pixel.gif... das ist aber Mist. Mit CSS läßt sich das wohl eleganter lösen, werde dass gleich direkt mal umsetzen!

        Wenn du Möglichkeiten hast, auf dem Server PDFs zu generieren und das so hinbekommst, das es damit passt, würde ich es mal so versuchen.

        Das ist ebenfalls eine interessante Variante, erfordert aber, dass der Server eben PDFs generieren kann. Selbst mit PHP erfordert dies eine externe Programmbibliothek, sonst funktioniert es nicht. Und da leider schon nicht alle PHP-Installationen die gdlib (Grafikfunktionen) unterstützen, kann man bei PDF-Funktionen einen richtigen Reinfall erleben. Aber im Intranet hat man hoffentlich einen Admin, der sich mit sowas auskennt.

        Nun ja, Problem dabei das ist schweineteuer wenn ich richtig informiert bin! Daher haben wir diese Bibliothek leider nur auf dem einen Webserver, nicht im Intranet. Außerdem macht man sich wieder von einer komplexeren Umgebung abhängig.
        Ich muß zugeben das ich damit auch noch nicht richtig gearbeitet habe, mal ein paar Versuche aber noch nichts dolles.
        Was ich aber habe, udn oft verwende, ist htmldoc! Das ist ein kleiner Tool zum Umwandeln einer html-Datei in eine pdf-Datei. Das funktioniert hervorragend dynamisch, wenn man einfach die html-Ausgabe eines PHP-Scriptes puffert und in eine Datei schreibt, und die an das Tool übergibt hat man ganz einfach jede HTML-Ausgabe als PDF.
        ABER: Das Tool wird nicht so genau sein, jedenfalls habe ich da keinen großen Einfluß drauf. Naja, ich könnte die Quell-HTML-Datei entsprechend verändern, aber leider ist das tool recht "dumm" und kann glaub ich kein CSS, zumindest nur HTML 3.2.
        Ich denke mit der CSS-Lösung fahre ich hier am besten, oder?

        Gibt es überhaupt noch was anders was besser geeignet ist, evtl. was mit PS?

        Viele Grüße
        Andreas

        1. Hallo nochaml allerseits,

          Wenn du Möglichkeiten hast, auf dem Server PDFs zu generieren und das so hinbekommst, das es damit passt, würde ich es mal so versuchen.

          Das ist ebenfalls eine interessante Variante, erfordert aber, dass der Server eben PDFs generieren kann. Selbst mit PHP erfordert dies eine externe Programmbibliothek, sonst funktioniert es nicht. Und da leider schon nicht alle PHP-Installationen die gdlib (Grafikfunktionen) unterstützen, kann man bei PDF-Funktionen einen richtigen Reinfall erleben. Aber im Intranet hat man hoffentlich einen Admin, der sich mit sowas auskennt.

          Was ich aber habe, udn oft verwende, ist htmldoc! Das ist ein kleiner Tool zum Umwandeln einer html-Datei in eine pdf-Datei.

          Ich kenne die gdlib fürs PHP nicht. Wenn ich mal ein PDF brauche, dann lass ich mir das mit Ghostscript aus einem PS generieren. Das kann man wenn die Software auf dem Server vorhanden ist sicher problemlos aufrufen. Braucht aber auch wieder die komplexere Umgebung.
          Und man muss sich natürlich ein wenig in PS einarbeiten, damit man eine PS Datei hinbekommt die die gewünschten Elemente entsprechend positioniert. Da kenne ich mich aber nicht aus, ich habe meine Dateien immer von Windows "drucken" lassen, was sehr schön funktionierte.
          Allerdings gibt es da sicher auch passende Tools oder Bibliotheken.

          Schöne Grüße,
                       Stefan

          1. Hi!

            Aber gerade wenn es auf mm ankommt ist doch ein weiterer Umweg über ein anderes Tool Gift, oder? Das geht ja vollautomatisch, da gibt man ja keine genaue Position an, und ob das immer so 100%ig ist? Sicher, allgemein geht das sehr gut, nur es muß eben sehr genau sein. Selbiges Problem sehe ich auch bei dem Tool welches ich immer benutze, wobei das glaube ich noch schlechter geeignet ist, da ich aus html und nicht asu ps umwandle. Ob ich aber jetzt aus PHP ps oder pdf erstelle ist glaube ich egal, wobei pdf dann direkt "fertig" wäre. Nur kostet eine Lizenz pro CPU 500 USD!

            Mal schaun, aber Danke für Deine Hilfe

            Grüße
            Andreas

        2. Hi Andreas,

          eine andere Frage - Tabellenränder werden aber standardmäßig
          mitgedruckt, oder? Ich hatte nämlich das Problem das manche
          Browser ja mit CSS nicht wirklich klar kamen(das ist jetzt
          schon ein wenig her, jetzt kann ich IE 5.5 und NN 6 voraussetzen),
          da hatte ich den Tabellenrand mit Extra Spalten/zeilen erstellt,
          halt mit schwarzem Hintergrund und 1x1pixel.gif... das ist aber
          Mist. Mit CSS läßt sich das wohl eleganter lösen, werde dass
          gleich direkt mal umsetzen!

          mit CSS kannst Du insbesondere separate Layouts für Bildschirm- und
          Druckerausgabe definieren (@media) - Dein Dokument kann also auf dem
          Drucker (gewollt!) völlig anders aussehen als auf dem Bildschirm.

          Beispielsweise kannst Du auf diese Weise reine Navigationselemente
          beim Drucken "verstecken".

          Viele Grüße
                Michael

  2. Hallo!

    Tach,

    ganz anderer Lösungsansatz:
    Erzeuge die Kästchen, in die Du drucken willst, ebenfalls per HTML
    und druck das ganze nicht auf die Formulare, sondern auf leeres Papier.
    Sprich: die HTML-Seite ist das Formular...

    Andreas

    1. Hallo!

      ganz anderer Lösungsansatz:

      sehr gut!

      Erzeuge die Kästchen, in die Du drucken willst, ebenfalls per HTML
      und druck das ganze nicht auf die Formulare, sondern auf leeres Papier.

      AHA!!! Gar nicht Dumm! Aber wenn ich z.B. Versandunterlagen für die Post drucken möchte, bräucht ich zum einen sehr viel Farbe(teuer), und 2. klebt normales Papier nicht, das wäre schon wieder eine Ecke teurer, dann müßte ich das ganze noch Auschneiden... und am Ende habe ich pro Versand 1 EUR extra bezahlt und hatte genausoviel Arbeit wie vorher.

      Aber der Ansatz ist sehr gut, den kann ich glaub ich an anderer Stelle sehr gut einbringen!

      Danke Dir!

      Grüße
      Andreas