Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: pdf writer für samba in suse 8.0

  1. #1
    cos
    Gast

    pdf writer für samba in suse 8.0

    Ich habe gehört das es bei dem Suse 8.0 einen pdf writer gibt den man als Standarddrucker für samba nehmen kann. Kann mir jemand mehr Informationen darüber geben und wie das prog heißt? Denn ich habe es bis jetzt nicht gefunden.

  2. #2
    Registrierter Benutzer
    Registriert seit
    Jan 2002
    Ort
    Schwerin
    Beiträge
    83
    Ich kenne das Programm zwar nicht, da ich auch keine SUSE habe aber ich habe mir eine Lösung mit Ghostscript gebastelt.
    Wenn dich so eine handgestrickte Lösung interessiert, kann ich mich ja etwas ausführlicher darüber auslassen.


    Ralf

  3. #3
    ptsa.de
    Registriert seit
    Oct 2001
    Ort
    HVR
    Beiträge
    103
    Hi,
    so eine Lösung fände ich auch interessant.


    danke
    ptsa
    NEU: Xen3 basierende Root Server mit Profi-Features, BSD-Hosting in Deutschland
    http://www.xencon.net
    DER deutsche Xen-Provider!

  4. #4
    cos
    Gast

    Smile

    ich bin immer für was neues offen. schreib mir mal was dazu. denn ich würde sowas gerne als gemeinsammen pdf writer einsetzen.

    danke schonmal im vorraus

    René

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jan 2002
    Ort
    Schwerin
    Beiträge
    83
    Also dann mal etwas ausführlicher.
    Die Theorie:
    1. So ziemlich alle Systeme können eine PS-Datei erzeugen.
    Bei Windows nehme ich den "HP Color LaserJet PS"
    2. Ghostscript kann PS in PDF wandeln.
    3. In Samba kann ich den Druckbefehl frei definieren
    also auch ein Script als Befehl angeben.
    4. ist nicht so wichtig. Mit WEBMIN kann man SAMBA schön konfiguriern.


    Ich habe mir ein kurzes Script geschrieben(/etc/cups/dateidruck), in dem im Wesentlichen Ghostscript mit den entsprechenden Parametern steht. Problem ist, daß die erzeugte Datei immer an einen fest definierten Ort abgelegt wird. Dies sollte man beachten, da jeder auf diesen Ordner zugriff haben muß, alle anderen diese Datei aber auch sehen können. Aber vielleicht finde ich da noch eine bessere Lösung. Ich benutze dazu einen mit Samba freigegebenen Ordner im Netzwerk. Bei mir /Tausch/tmp.
    Damit jeder seine Datei leichter findet, verwende ich Datum und Uhrzeit als Dateiname.

    #!/bin/sh
    ZEIT=`date +%Y'-'%m'-'%d'-'%H'.'%M`
    ps2pdf $1 $ZEIT.pdf
    gs -dNOPAUSE -q -dBATCH -sDEVICE=jpeg -r300 -sOutputFile=$ZEIT.jpg $1
    rm -f $1

    -zweite Zeile: Datum und Zeit abfragen
    -dritte Zeile: PS in PDF (ps2pdf ist bei ghostscript schon definiert. Geht auch wie in der nächsten Zeile mit gs und Optionen)
    -vierte Zeile: jpg-Datei wird auch erzeugt (muß nicht sein)
    -fünfte Zeile: Ursprungsdatei löschen

    Für Samba erstelle ich mir einen Drucker, den ich PDF nenne.
    Als Druckbefehl gebe ich /etc/cups/dateidruck %s ein.

    [PDF]
    comment = PDF-Datei erzeugen (in T:\tmp)
    path = /tausch/tmp
    read only = No
    guest ok = Yes
    printable = Yes
    print command = /etc/cups/dateidruck %s
    Nachteil ist noch, daß ich bei WindowsNT den Druckertreiber jeweils lokal als Administrator installieren muß. Aber das soll auch schon anders gehen. Soweit bin ich aber mit Samba noch nicht.

    Ergebnis ist (Beispiel WinNT):
    Der Drucker wird als Administrator installiert.
    Wenn nach Treiber gefragt wird, dann HP Color LaserJet PS angeben und installieren.
    Dann kann ich ihn von jeder Anwendung aus als Drucker ansprechen. Die erzeugte Datei wird in /tausch/tmp abgelegt.


    Ralf

  6. #6
    cos
    Gast
    ich habe eben auch noch was im net gefunden. werde das von dir und das aus dem net heute abend mal probieren... aber danke erstmal für deine Mühe. Vielleicht ist der Artikel auch was für dich...

    PDF Dienste mit Samba
    Von: John Bright
    Übersetzung: Christian Böttger
    Einführung
    PDF Dokumente bieten eine großartige Möglichkeit, Dokumente über das Internet zu verbreiten. Sie werden viel benutzt, so zum Senden von Angeboten und Rechnungen an Geschäftspartner. Zwei der Hauptgründe, warum das PDF Format so beliebt ist, sind die, daß es garantiert, daß alle Dokumentenformatierungen exakt erhalten bleiben und daß es auf fast allen Plattformen einfach anzusehen ist. Viele Computer-Nutzer sind dem Windows Paradigma verhaftet, daß PDF Dateien erstellen bedeutet, dafür Geld an die Leute von Adobe zu blechen. Wie dem auch sei, dieser Artikel wird Ihnen zeigen, wie Sie Linux, Samba und Ghostscript benutzen, um einen PDF Erstellungsdienst für Windows und Linux Nutzer bereitzustellen. Natürlich kann all das kostenlos erreicht werden.
    Zuerst sehen wir uns das Gesamtschema der Operation an. Wir werden Samba dazu benutzen, einen "Pseudo-Drucker" Dienst bereitzustellen (es wird für die Clients wie ein normaler Drucker aussehen), der Ghostscript dazu benutzen wird, PDF Dateien aus jedem Postscript Druckerauftrag zu erstellen, der in diese Warteschlage gestellt wird. Danach werden wir die Windows Maschinen konfigurieren, um diesen Drucker zu teilen und Aufträge dorthin in Postscriptform zu senden.
    Samba
    Samba ist ein großartiges Stück Software, das unter Linux/Unix läuft und es erlaubt, Dateien und Drucker mit Windows Maschinen zu teilen. Samba stellt Dienste bereit, die kompatibel mit den Standard-"Windows Networking" Diensten, bereitgestellt durch Windows 95/98/NT etc. Computer sind. Bevor wir mit der Konfiguration von Samba für unsere Zwecke beginnen, müssen Sie sicherstellen, daß der Samba Server auf Ihrem Linux System installiert ist. Wie immer kann man die Samba Quellen von www.samba.org herunterladen, aber normalerweise ist es der einfachste Weg, es in Ihr System zu installieren, indem Sie das "samba" Paket installieren, das von Debian, RedHat, oder wem auch immer, bereitgestellt wird.
    Falls dies das erste Mal ist, daß Sie Samba installieren, werden Sie einige der Grundeinstellungen in der Konfigurationsdatei smb.conf ansehen / ändern wollen (suchen Sie in /etc oder /etc/samba). Die Dinge, nach denen man hauptsächlich der Reihe nach sehen sollte, um die Dienste zum Laufen zu bringen, sind die Sicherheitseinstellungen (Sicherheit=share oder Sicherheit=Benutzer) und die "Gast-Konto" ("guest account") Einstellungen. Für Einzelheiten der Samba Konfiguration sehen Sie in der Samba Dokumentation unter www.samba.org oder in der SMB HOWTO nach. Ein vollständiges Beispiel (mit niedriger Sicherheit) einer Konfigurationsdatei wird später gezeigt.
    Vielleicht ist es ratsam, Ihre Verbindung und Berechtigungsprüfungsart (falls überhaupt) zu testen, indem ein einfaches Datei-Teilen (sharing) für die Clients eingerichtet wird. In jedem Falle sind wir nun bereit, den PDF "Pseudo-Drucker" zu erstellen, sobald Ihre Clients die Möglichkeit haben, eine Verbindung zu Ihrem Samba-Server herzustellen. Zuerst aber sollten wir uns vergewissern, daß wir die richtigen Hilfsprogramme haben, um tatsächlich die PDF Dateien herstellen zu können.
    Ghostscript
    Ghostscript ist eine weitere großartige Anwendung, die auf einem Linux System verwendet werden kann. Ghostscript wird oft dazu benutzt, Postscript in das richtige Rohformat für einen Drucker zu konvertieren. Aber es kann ebenso dazu verwendet werden, Postscript und PDF Formate ineinander umzuwandeln. Viele Distributionen installieren Ghostscript bereits, um eine Druckerunterstützung zu gewährleisten. Wenn der "gs" Befehl auf Ihrem System verfügbar ist, dann ist Ghostscript wahrscheinlich bereits installiert. Ansonsten kann man es von dem Distributionspaket ("ghostscript" bei RedHat, "gs" oder "gs-aladdin" bei Debian) installieren oder die Quellen von http://www.cs.wisc.edu/~ghost/ herunterladen, falls Sie sich bereit für ein Abenteuer fühlen.
    Das Ghostscript Paket enthält ein Skript mit Namen ps2pdf, das die Umwandlung von Postscript nach PDF recht einfach gestaltet. Nun da wir dieses Hilfsprogram zur Verfügung haben, können wir mit der Erstellung unseres PDF Dienstes über Samba beginnen.
    Das Zusammenführen
    Zuerst werfen wir einen Blick auf ein typisches reines Drucker-Teilen in Samba (aus der smb.conf Datei:
    [hpdeskjet]
    path = /tmp # Pfadangabe
    printable = yes # druckbar = ja
    writeable = no # beschreibbar = nein
    create mask = 0700 # Erstellungsmaske
    guest ok = yes # Gast ok = ja
    printer name = lp # Druckername = lp
    (Beachten Sie das stumme "e" in writeable. Die Konfigurationsdatei hat es, obwohl das ursprüngliche Wort es nicht hat. Das gleiche gilt für browseable weiter unten. Jetzt akzeptiert Sambe beides, aber die Handbuchseiten von Samba verwenden writeable.)
    Normalerweise wird ein Befehl wie lpr gestartet, wenn ein Druckauftrag an diesen Verteiler gesendet wird, um den Auftrag an das Linux Drucksystem zu übermitteln. Unsere Methode benutzt die exzellenten Konfigurierbarkeit von Samba, um einen alternativen Druckbefehl an die Stelle von lpr zu setzen. Diese spezielle Konfigurationsvariable wird "Druckbefehl" ("print command") genannt. Das angeführte Druckkommando wird ausgeführt und jedes Auftreten von %f oder %s in der "Druckbefehl" Variable wird durch den Namen der Druckerspooldatei ersetzt, die von dem Windows Client geschickt wurde. Um zum Beispiel jeden Druckauftrag zu verwerfen, könnte diese Zeile in die obige Druckerkonfiguration eingesetzt werden:
    print command = /bin/rm %f
    Das führt zu einem weiteren wichtigen Punkt: welcher Druckbefehl auch immer spezifiziert wird, Die Spool-Dateien müssen gelöscht werden, oder sie werden sich möglicherweise stauen und Ihre Festplatte füllen.
    Das Druckskript
    Unser Druckerskript wird ein Kommandozeilen-Argument akzeptieren: den Namen der Druckerwarteschlangendatei, für deren Format Postscript angenommen wird. Daraufhin wird sie in ein PDF Dokument umgewandelt und an eine zugreifbare Stelle plaziert. Die Clients werden in der Lage sein, das fertige Produkt abzurufen, indem sie die Datei-Sharing Dienste von Samba benutzen. Zum Beispiel: wenn ein Verzeichnis mit Namen "/shr" von Samba bereitgestellt wird, können wir das fertige PDF Dokument unter "/shr/pdfdropbox/" finden. Stellen Sie sicher, daß jedes verwendete Verzeichnis zuvor auch mit mkdir erstellt wurde. Außerdem müssen Sie dem Samba Benutzer (dem Benutzer nobody in diesem Beispiel) ein Schreibrecht geben, oder es wird nicht möglich sein, PDF Dokumente zu erstellen. In diesem Beispiel werden Sie:
    chown nobody /shr/pdfdropbox
    chmod u+rwx /shr/pdfdropbox
    Hier ist das vollständige, noch einfache Druckskript, genannt printpdf, auch als Textformat vorhanden. In unserem Linux System platzieren wir das Skript unter /usr/bin/printpdf.
    #!/bin/sh

    # Einfaches Skript, um eine vorgegebene Postscript Datei in ein PDF Dokument umzuwandeln
    # und es an einen Ort zu kopieren, der vom Samba Server geteilt wird.
    #
    # Argumente:
    # 1. - Der Name der Warteschlangendatei
    #
    # John Bright, 2001, jbright@winfordeng.com

    # Wir werden die PDF Datei in einer temporären Datei aufgrund von aktuellem
    # Datum und Zeit erstellen.
    # Danach benennen wir sie zu einer Datei mit dem gleichen Datum um, aber mit
    # der Dateiendung .pdf. Das machen wir, um einem Benutzer, der versucht, eine
    # gerade zu speichernde PDF Datei zu öffnen, eine Nachricht auszugeben, daß
    # diese verdorben sei, solange der Speichervorgang nicht abgeschlossen ist.

    DATE=`date +%b%d-%H%M%S`

    # Das Ausgabeverzeichnist.
    # Stellen Sie sicher, daß dieses Verzeichnis existiert und für den Samba Benutzer
    # beschreibbar ist (zum Beispiel der Benutzer nobody)

    OUTDIR=/shr/pdfdropbox

    ps2pdf $1 $OUTDIR/$DATE.temp
    mv $OUTDIR/$DATE.temp $OUTDIR/$DATE.pdf
    rm $1
    Ich sagte doch, daß es einfach ist, richtig? Da ist wirklich nicht viel darin, wenn wir erst alle Werkzeuge zusammen haben.
    Abschluß des Samba Setup
    Nachdem wir alles gesehen haben, das in den PDF Dienst auf der Linux Seite eingeht, können wir die Samba Konfigurationsdatei abschließen. Hier ist ein Beispiel einer smb.conf Datei, die die Aufgabe erledigt. Sie hat eine niedrige Sicherheit, aber das hält alles einfach. Die Datei kann man von hier herunterladen.
    [global]
    guest account = nobody
    invalid users = root

    ; nur schwache Sicherheit: nur lokaler Zugang gewährt
    interfaces = 127.0.0.1 eth0
    bind interfaces only = Yes
    ; Dies setzt voraus, daß Ihr lokales Netzwerk mit 192.168.x.x IP Adressen arbeitet
    hosts allow = 192.168.

    ; Share-Level Sicherheit ist generell einfacher, wenngleich nicht so sicher
    security=share

    workgroup=WORKGROUP

    ; Setzt ein öffentliches Share (Teilung), das zum Abruf der PDFs genutzt wird.
    ; Der Name des Shares wird für Windows Benutzer als "shr" zu sehen sein.
    [shr]
    path = /shr
    browseable = yes
    writeable = yes
    guest ok = yes
    force user = nobody

    ; Setzen unseres PDF Erstellungsdruckdienstes
    [pdf]
    path = /tmp
    printable = yes
    guest ok = yes
    print command = /usr/bin/printpdf %s

    ; Es besteht kein Bedarf, Auflistung oder Entfernung von Druckaufträgen zu
    ; unterstützen,
    ; da der Server sie bearbeitet, sobald sie eintreffen.
    ; Also setzen wir die lpq (Liste der Auftragswarteschlagen) und lprm (Entfernen
    ; von Aufträgen aus der Warteschlange) Befehle auf leer.
    lpq command =
    lprm command =
    Natürlich müssen wir Samba starten/neu starten, nachdem wir die smb.conf Konfigurationsdatei erstellt/verändert haben, wie Sie sie möchten.
    Setup eines Windows Client
    Nun sollten Sie in der Lage sein, fortzufahren und einen geteilten PDF Drucker als Netzwerkdrucker auf Ihrer Windows Client Maschine zu installieren. Um dies zu tun, suchen Sie den Drucker Share unter Netzwerk Nachbarschaft, rechtsklicken und Installieren drücken. Während der Installation werden Sie aufgefordert, einen Druckertreiber auszuwählen. Wählen Sie einfach einen Postscript Druckertreiber, zum Beispiel den HP LaserJet 5P/5MP PostScript, aus.
    Um kurz zu beschreiben, wie das alles zusammenpaßt: der PDF Dienst auf Ihrer Linux Maschine erwartet, eine Eingabe im Postscript Format zu erhalten. Da unser printpdf Skript den Druckauftrag exakt so erhält, wie der Windows Client es geschickt hat, bedeutet das, daß unser Windows Client die Druckaufträge im Postscript Format senden muß. Wie oben beschrieben, erreichen wir das durch die Auswahl eines Treibers für einen beliebigen Postscriptdrucker auf dem Windows Client, sobald der PDF Netzwerkdrucker installiert wird. Generell wähle ich verschiedene HP Laserjet PS Drucker aus der Windows Druckertreiberliste (wie den HP LaserJet 5P/5MP PostScript, wie oben erwähnt), wenngleich es nicht viel ausmacht, da alle der von Microsoft unterstützten Postscript Treiber den gleichen Kerntreiber verwenden, um Postscript zu generieren.
    Wenn der PDF Netzwerkdrucker erst auf Ihrer Windows Maschine installiert ist, drucken Sie einfach alles aus jedem Programm auf dem neuen Netzwerkdrucker aus, und kurz darauf sollte ein PDF Dokument auf Sie warten.
    Rationalisierung
    Falls Sie ein Büro voller Leute ohne Computer Know-How haben, gibt es wahrscheinlich mehr Ärger, als es die Sache wert ist, wenn Sie versuchen, diese durch den Installationsprozeß zu führen und einen passenden Druckertreiber auszuwählen. Wenn Sie jemals einen Netzwerkdrucker von einer anderen Windows Maschine aus installiert haben, werden Sie vielleicht bemerkt haben, wie der Druckertreiber automatisch auf Ihren Computer kopiert wurde, so daß Sie gar nicht nach einem Treiber gefragt wurden. Das gleiche können wir mit Samba machen. Zuerst sollten Sie ein Datei Share auf dem Linux Computer setzen, das sie "Drucker$" nennen (ohne die Anführungsstriche). Als Pfad für das Drucker$ Share bestimmen wir /etc/samba/printdrivers/ (Sie werden das Verzeichnis per mkdir erstellen müssen). Die Clients werden einfach dieses Share Verzeichnis benutzen, um den Druckertreiber während der Installation zu beziehen.
    Nun müssen wir herausfinden, welche Treiberdateien in das Drucker$ Share Verzeichnis kopiert werden müssen. Außerdem müssen wir Samba eine Druckerdefinition geben, damit es dem Client angeben kann, welche Treiberdateien benötigt werden. Es stellt sich heraus, daß für all dies in einem Schritt gesorgt wird, dank eines Samba Werkzeugs genannt make_printerdef. Dieses Werkzeug setzt voraus, daß Sie die Windows INF Datei haben, die Ihren Drucker definiert und den vollen Namen kennen, so wie "HP LaserJet 5P/5MP PostScript". Sie müssen herausfinden, in welcher INF Datei Ihr Drucker definiert ist. Dieser LaserJet zum Beispiel wird in C:\WINDOWS\INF\MSPRINT3.INF definiert. Beachten Sie dabei, daß C:\WINDOWS\INF ein verstecktes Verzeichnis ist. Kopieren Sie diese Datei auf Ihren Linux Computer und benutzen Sie das make_printerdef Werkzeug, um eine lokale Datei zur Druckerdefinition zu erstellen, die von Samba gelesen wird. Zum Beispiel:
    make_printerdef MSPRINT3.INF "HP LaserJet 5P/5MP PostScript" >> /etc/samba/printers.def
    Hier leiten wir die Standardausgabe an die printer.def Datei, um die Druckerkonfiguration zu erstellen. das make_printerdef Programm gibt auch einige Erklärungen für Standardfehler, die Sie sehen werden. Es gibt Ihnen an, welche Treiberdateien Sie brauchen. Diese können Sie in C:\WINDOWS\SYSTEM oder C:\WINDOWS finden und sollten in den Pfad Ihres Drucker$ Shares auf dem Linux Computer kopiert werden (in unserem Fall nach /etc/samba/printerdrivers/). Die von uns erstellte (oder erweiterte) Datei printers.def braucht nicht für Windows Computer geteilt werden, sie wird nur von Samba gelesen. Jetzt müssen wir Samba nur noch von der printers.def Datei und den Treiberdateien erzählen. Dies wird durch die "Druckertreiberdatei" Einstellung in der Globalsektion sowie der "Druckertreiber" und "Druckertreiberposition" Einstellungen in jedem Druckerabschnitt der smb.conf erreicht. Die folgende überarbeitete smb.conf Datei zeigt, wie diese Einstellungen benutzt werden. Außerdem zeigt sie ein Beispiel für ein "Drucker$" Share. Sie können diese Konfigurationsdatei von hier herunterladen.
    [global]
    guest account = nobody
    invalid users = root

    ; nur schwache Sicherheit: nur lokaler Zugang gewährt
    interfaces = 127.0.0.1 eth0
    bind interfaces only = Yes
    ; Dies setzt voraus, daß Ihr lokales Netzwerk mit 192.168.x.x IP Adressen arbeitet.
    hosts allow = 192.168.

    ; Share-Level Sicherheit ist generell einfacher, wenngleich nicht so sicher
    security=share

    workgroup=WORKGROUP

    printer driver file = /etc/samba/printers.def

    ; Setzt ein öffentliches Share (Teilung), das zum Abruf der PDFs genutzt wird.
    ; Der Name des Shares wird für Windows Benutzer als "shr" zu sehen sein.
    [shr]
    path = /shr
    browseable = yes
    writeable = yes
    guest ok = yes
    force user = nobody

    ; Setzen unseres PDF Erstellungsdruckdienstes
    [pdf]
    path = /tmp
    printable = yes
    guest ok = yes
    print command = /usr/bin/printpdf %s

    ; Es besteht kein Bedarf, Auflistung oder Entfernung von Druckaufträgen zu unterstützen,
    ; da der Server sie bearbeitet, sobald sie eintreffen.
    ; Also setzen wir die lpq (Liste der Auftragswarteschlagen) und lprm (Entfernen
    ; von Aufträgen aus der Warteschlange) Befehle auf leer.
    lpq command =
    lprm command =

    ; Die Druckertreiberdefinitionsdatei haben wir bereits oben definiert.
    ; Hier müssen wir den Eintrag in jener Datei bestimmen, der für diesen
    ; Drucker verwendet werden soll.
    printer driver = HP LaserJet 5P/5MP PostScript
    printer driver location = \\%h\printer$

    ; Datei Share, um den Clients den Druckertreiber Download zu gestatten
    [printer$]
    path = /etc/samba/printdrivers
    guest ok = yes
    read only = yes

    Setup eines Linux Client
    Dieser Abschnitt ist nicht notwendig, um einen PDF Dienst für Windows Clients bereitzustellen. In diesem Abschnitt wird der Vorgang beschrieben, den PDF Dienst von Linux Clients aus zu nutzen. Der Dienst ist möglicherweise nicht so nützlich für Linux Clients, da sie viel einfacher alle notwendigen Werkzeuge auf ihren eigenen Maschinen installieren können, aber es mag nützlich sein, einen zentralisierten PDF Erstellungsdienst zu haben. (Nebenbei: Ghostscript ist auch für Windowsplattformen erhältlich, aber die meisten Benutzer werden es recht schwierig finden im Vergleich zur hier beschriebenen Druckerdienst basierenden Technik.) Auch die Methode, die zum Drucken an den PDF Dienst verwendet wird, kann für den Druck zu jedem anderen Drucker, der von Samba oder Windows geteilt wird, benutzt werden, so daß es gute Informationen abdeckt.
    Es gibt zahlreiche Wege, mit denen man zu einem Windows Drucker Share von Linux aus drucken kann. Der vielleicht beste ist die Auflistung zum smbprint Skript (das den smbclient benutzt) als Filter in einem /etc/printcap Eintrag. Bei Benutzung dieser Methode kann eine von Windows geteilter Drucker für den Standardbefehl lpr genutzt werden, der für Linux Benutzer und Anwendungen gebräuchlich ist. Sie müssen sich vergewissern, daß Sie beide Programme, sowohl smbprint als auch smbclient, auf Ihrem Computer haben. Das smbclient Programm ist im Paket "smbclient" auf Debian Systemen und im Paket "samba-client" auf RedHat Systemen enthalten. Bei RedHat gehört das Skript smbprint zum "samba-client" Paket, bei Debian in "samba-doc" sowie in einer anderen Version in den Paketen "printfilters-ppd" und "lprngtool". Es treiben so viele verschiedene Versionen herum, daß ich dachte, es sei das beste, eine Kopie hier einzufügen. Sie können sie von hier herunterladen. In jedem Fall kann ich dann annehmen, daß Sie ein arbeitendes smbprint unter /usr/bin/smbprint haben, das ausführbar ist (chmod +x /usr/bin/smbprint). Hier ist das smbprint Skript:
    #!/bin/sh
    # Dieses Skript ist ein Eingabefilter für printcap Drucken auf einer UNIX Maschine.
    # Es verwendet das Programm smbclient, um eine Datei zu einem bestimmten
    # smb-basierendem Server und Dienst zu drucken.
    # Ein printcab Eintrag könnte wie folgt lauten
    #
    # smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
    #
    # welcher einen UNIX Drucker mit Namen "smb" erstellen würde, der über dieses
    # Skript drucken würde. Sie müssen ein Warteschlangenverzeichnis /usr/spool/smb
    # mit geeigneten Zugriffsrechten und Eigentümern für Ihr System erstellen.

    # Setzen Sie dieses bei dem Server und Dienst ein, zu dem Sie drucken wollen.
    # In diesem Beispiel habe ich einen Windows für Workgroups PC, genannt
    # "lapland", der einen Drucker "printer" ohne Paßwort exportiert.

    #
    # Das Skript wurde früher verändert von hamiltom@ecnz.co.nz (Michael Hamilton),
    # so daß Server, Dienst und Paßwort aus der Datei /usr/var/spool/lpd/PRINTNAME/.config
    # ausgelesen werden können.
    #
    # Damit dies funktioniert, muß der /etc/printcap Eintrag eine Kontodatei einthalten (af=...):
    #
    # cdcolour:\
    # :cm=CD IBM Colorjet on 6th:\
    # :sd=/var/spool/lpd/cdcolour:\
    # :af=/var/spool/lpd/cdcolour/acct:\
    # :if=/usr/local/etc/smbprint:\
    # :mx=0:\
    # :lp=/dev/null:
    #
    # Die Datei /usr/var/spool/lpd/PRINTNAME/.config sollte enthalten:
    # share=PC_SERVER
    # user="Benutzer"
    # password="Paßwort"
    #
    # Bitte nicht die Reihefolge innerhalb der Datei verändern.
    # Beispiel:
    # share=\\server\deskjet
    # user="fred"
    # password=""

    #
    # Der letzte Parameter für den Filter ist der Kontodateiname.
    # Nehmen Sie den Verzeichnisnamen aus dem Dateinamen.
    # Verknüpfen Sie diesen mit /.config, um die Konfigurationsdatei zu erhalten.
    #
    eval acct_file=\$$#
    spool_dir=`dirname $acct_file`
    config_file=$spool_dir/.config

    # Lesen Sie die folgenden gesetzten Variablen in der Konfigurationsdatei:
    # share
    # hostip
    # user
    # password

    eval `cat $config_file`

    share=`echo $share | sed "s/[\]/\//g"`

    if [ "$user" != "" ]; then
    usercmd="-U"
    else
    usercmd=""
    fi

    if [ "$workgroup" != "" ]; then
    workgroupcmd="-W"
    else
    workgroupcmd=""
    fi

    if [ "$translate" = "yes" ]; then
    command="translate ; print -"
    else
    command="print -"
    fi
    #echo $share $password $translate $x_command > /tmp/smbprint.log

    cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I} \
    $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup" \
    -c "$command" 2>/dev/null

    Im nächsten Schritt muß ein neuer /etc/printcap Eintrag angefügt werden und das smbprint Skript als Filter aufgelistet werden. Hier ist ein Beispiel für einen printcap Eintrag (oder eine ganze Datei), auch als Textdatei verfügbar:
    # PDF Dienst Eintrag

    lp|pdf|PDF Printer:\
    :lp=/dev/null:sh:\
    :sd=/var/spool/lpd/pdf:\
    :af=/var/spool/lpd/pdf/acct:\
    :mx#0:sh:\
    :if=/usr/bin/smbprint:

    Sie werden das Warteschlangenverzeichnis /var/spool/lpd/pdf erstellen müssen (oder falls Sie LPRng haben, starten Sie checkpc -f). Stellen Sie sicher, daß Sie die Zeile mit der Kontodatei im printcap Eintrag behalten und daß die Kontodatei im gleichen Verzeichnis wie Ihre .config Datei liegt, da das smbprint Skript so die .config Datei findet. Auch ist es ein Standardvorgang, die Systemvoreinstellung des Druckernamens "lp" zu haben, wie oben gezeigt. Falls Sie bereits eine Datei /etc/printcap haben und die bestehenden Drucker beibehalten wollen, sollten Sie das führenden "lp|" aus dem Eintrag wie oben gezeigt entfernen. Dann müssen Sie eine Konfigurationsdatei names ".config" erstellen. Dies sollte als /var/spool/lpd/pdf/.config geschehen. Die .config Datei definiert, an welchen Server der Druckauftrag gesendet werden soll. Hier ist ein Beispiel:
    share=//Ihr_Server/pdf
    user=""
    password=""
    Hierbei sollte "Ihr_Server" durch den Namen des Computers ersetzt werden, der den PDF Dienst bereitstellt. Falls Sie dabei irgendwelche Probleme haben, überprüfen Sie, daß das Skript smbprint Leserechte für die Datei .config hat, oder Sie werden sich eine Weile Ihren Kopf zerbrechen. Der möglicherweise sicherste Weg und nicht zuletzt der erste, ist die Erteilung von Leserechten für alle, zum Beispiel: chmod a+r /var/spool/lpd/pdf/.config
    Zuletzt rufen Sie den Befehl
    lpr -Ppdf file_to_print.ps
    auf, um den PDF Dienst von Linux für eine Postscript Datei zu starten. Dies kann auch aus den meisten Anwendungen heraus verwendet werden. Zum Beispiel erlaubt "lpr -Ppdf" als Druckbefehl in Netscape die Erstellung eines PDF Dokuments aus einer Webseite.
    Ansehen von PDF Dokumenten
    Das letzte Thema, das hier abgedeckt wird, ist die Ansicht von PDF Dokumenten. Jeder weiß, daß der Standard unter Windows der Adobe Acrobat Reader ist, aber es gibt viel mehr Möglichkeiten unter Linux. Unglücklicherweise scheint keine der momentanen Linux Möglichkeiten so zuverlässig zu sein wie der Windows-Reader, aber sie sind sehr ausbaubar. Die Hauptmöglichkeiten sind:
    • acroread - Adobe hat eine nette Version des Acrobat Reader für Linux
    • gv - ein Ansichtsprogramm, das Ghostscript verwendet, um PDF zu interpretieren
    • gnome-gv - Benutzt ebenfalls Ghostscript, aber hat eine schönere Benutzeroberfläche
    • xpdf - ein netter kleiner PDF-Viewer, hab aber keine feine Oberfläche
    Meiner Meinung nach hat gnome-gv die hübscheste Benutzeroberfläche. Es basiert auf GTK+, so daß Dinge wie das Mausrad ohne weiteres Nachdenken funktionieren. Unglücklicherweise kann es einige PDF Dokumente nicht lesen und zeigt eine böse aussehenden Fehler von Ghostscript. Aus meiner Erfahrung heraus ist acroread sehr gut im Anzeigen von Dokumenten. In der Vergangenheit hatte ich einige Probleme mit Abstürzen, aber ich denke, es ist seit dem besser geworden. Nur selten habe ich gv benutzt, aber ich kann mir vorstellen, daß es die selben Probleme wie gnome-gv hat, da sie beide auf Ghostscript basieren. Zuletzt ist xpdf ein sehr stabiles PDF Anzeigeprogramm. Ich kann mich nicht erinnern, daß es je abgestürzt wäre und gewöhnlich hat es keine Probleme mit der Dokumentenanzeige. Es gibt noch ein gelegentliches Problem, und die Darstellungsqualität der Dokumente bleibt oft unter Niveau. Es hat keine volle Feature Liste, aber es ist ein guter Viewer, um ihn zu behalten. All das mag sich unheimlich anhören, aber seien Sie versichert, daß normalerweise das Ansehen von PDF Dateien unter Linux kein Problem ist.
    Viel Spaß und viel Glück!

  7. #7
    Registrierter Benutzer
    Registriert seit
    Jan 2002
    Ort
    Schwerin
    Beiträge
    83
    Genauso meine ich das.

    Danke für den Artikel. Ich werde mir den Bereich mit den zentral abgelegten Druckertreibern mal reinziehen.


    Ralf

  8. #8
    ptsa.de
    Registriert seit
    Oct 2001
    Ort
    HVR
    Beiträge
    103
    Hallo Leute,

    das ganze ist eine coole Idee, aber so rund läuft das bei mir leider nicht

    Ich habe unter SuSE8 mit Samba (2.2.3a), Cups (1.1.22) und gv (3.5.8) obige Lösung versucht. Am Server drucken geht - von Windows 2000 Client über Samba drucken geht auch allerdings habe ich dort beim Zugriff auf den Drucker immer die Meldung "Zugriff verweigert; keine Verbindung möglich" - ich kann also keine Druckaufträge ansehen oder löschen. Habe dazu auch eine Vermutung (siehe Auschnitt smb.conf, "DER WURM"):

    [global]
    workgroup = Z
    os level = 65
    encrypt passwords = yes
    server string = Dell 2300 RAID
    security = user
    guest account = nobody
    username map = /etc/samba/smbusers
    map to guest = Bad User
    socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
    printing = cups
    printcap name = cups
    load printers = yes
    ;character set = ISO8859-15
    ;client code page = 850
    ;veto files = /*.eml/*.nws/riched20.dll/*.{*}/

    [Archiv]
    comment = Archiv
    path = /home/dny/ARCHIV
    read only = No
    create mask = 0600
    directory mask = 0700
    browsable = no
    valid users = dny

    [printers]
    comment = HPLaserjet2P
    path = /var/spool/samba
    writable = no
    printer = lp0
    browseable = yes
    ;<DER WURM?> ------------------------------------------
    lprm command = cancel %p-%j
    lpq command = lpstat -o %p
    ;</DER WURM> ------------------------------------------
    printable = yes
    print command = lpr-cups -P %p %s -r
    valid users = dny, anke
    ;guest ok = yes
    ;public = yes

    [PDFprint]
    comment = PDF erzeugen
    path = /home/dny/ARCHIV/PDF
    read only = no
    guest ok = yes
    printable = Yes
    print command = /etc/cups/sambapdf %s

    Liegt es an den Kommandos, die nicht für CUPS passen ???

    Der nächste Punkt ist, mein "PDFDrucker" (siehe Topic) geht nischt:
    Es passiert einfach nichts.

    hier meine /etc/cups/sambapdf (777):

    #!/bin/sh
    ZEIT=`date +%b%d-%H%M%S`
    /usr/bin/ps2pdf $1 $ZEIT.pdf

    und ein paar Auszüge aus den Logs:
    log.smbd

    [2002/07/23 22:41:03, 0] smbd/server.c:main(698)
    smbd version 2.2.3a started.
    Copyright Andrew Tridgell and the Samba Team 1992-2002
    [2002/07/23 22:41:16, 0] printing/print_cups.c:cups_queue_get(784)
    Unable to get jobs for ipp://localhost/printers/PDFprint - client-error-not-found

    error.log (cups)

    E [23/Jul/2002:22:52:09 -0200] get_jobs: resource name '/printers/PDFprint' no good!
    E [23/Jul/2002:22:52:13 -0200] print_job: resource name '/printers/PDFprint' no good!
    E [23/Jul/2002:22:52:28 -0200] get_jobs: resource name '/printers/PDFprint' no good!


    bin ein wenig verwirrt weil ich den Fehler einfach nicht eingrenzen kann. Liegt es an dem Skript? Sind diese Hochkommata korrekt? Brauch ich den den Pfad zu ps2pdf? Liegt es an Samba? Die Rechte sollten stimmen... oder hat es mit der directory mask 0700 zu tun, das der Drucker User (oder Samba User) nicht in das Verzeichnis schreiben kann.

    Samba sonst läuft klasse, und Drucken über Samba auch!

    Wer weiß Rat,
    Danke Euch.!.

    ptsa
    NEU: Xen3 basierende Root Server mit Profi-Features, BSD-Hosting in Deutschland
    http://www.xencon.net
    DER deutsche Xen-Provider!

  9. #9
    Registrierter Benutzer
    Registriert seit
    Jan 2002
    Ort
    Schwerin
    Beiträge
    83
    Hallo,
    bin zur Zeit zwar nicht am Linuxrechner, versuche das aber heute abend mal an meiner Kiste.

    Brauch ich den den Pfad zu ps2pdf?
    Einfach mal in Linux im Fenster ps2pdf eingeben und sehen, ob er die Datei findet.

    Liegt es an dem Skript?
    Ich kann jetzt nicht genau die Syntax testen(hab ich jetzt nicht genau im Kopf). Aber wenn du das Script mit einer beliebigen Postscript-Datei aufrufst, müsste eine PDF-Datei erzeugt werden. Wenn das Minus in deinem Script auch als solches im Dateinamen erscheinen soll, muß das extra nochmal in Hchkommas eingeschlossen werden.
    ZEIT=`date +%b%d'-'%H%M%S`
    Das teste ich aber heute nochmal.
    Dem Pfad /home/dny/ARCHIV/PDF würde ich für den Test vorübergehend Schreibrechte für alle Nutzer geben, um Schwierigkeiten an dieser Stellen erst mal auszuschließen.

    Wenn mir noch was einfällt, melde ich mich.

    Ralf

  10. #10
    ptsa.de
    Registriert seit
    Oct 2001
    Ort
    HVR
    Beiträge
    103
    Hi,

    danke für die schnelle Antwort. Sitze auch gerade nicht an der Kiste, werde es heute Abend nochmal mit deinen Tips versuchen.

    bis später,
    ptsa
    NEU: Xen3 basierende Root Server mit Profi-Features, BSD-Hosting in Deutschland
    http://www.xencon.net
    DER deutsche Xen-Provider!

  11. #11
    ptsa.de
    Registriert seit
    Oct 2001
    Ort
    HVR
    Beiträge
    103
    So,

    hab noch ein wenig getestet:

    1.)Das Skript läuft. Wenn ich es lokal aufrufe und ne .ps Datei angebe finde ich im gewünschten Verzeichnis eine PDF Datei wieder, die Rechte für das Verzeichnis sind also auch nicht das Problem.

    2.)Wenn ich jetzt meine regulären Drucker, und alles was in der smb.conf auf cups zeigt auskommentiere bekomme ich das PDF von Windows gedruckt!

    Geht die beschriebene Methode nicht, wenn lokale "reale" Drucker vorhanden sind, oder cups verwendet wird?
    Die MEldung unter Windows "Zugriff verweigert; keine Verbindung möglich" steht bei dem PDFDrucker aber immer noch....

    bin ein wenig ratlos....

    ptsa


    weiter, ein wenig später Die Meildung Zugriff Verweigert ist weg! Hier brachte in der smb.conf die Option "use client driver = Yes" Abhilfe...

    Der PDF Dienst läuft aber zusammen mit Cups nicht, schuld ist vielleicht CUPS das immer den virtuellen Drucker sucht (siehe Logs!)....

    ...
    ...

    ptsa
    Geändert von PTSA (24.07.02 um 21:37 Uhr)
    NEU: Xen3 basierende Root Server mit Profi-Features, BSD-Hosting in Deutschland
    http://www.xencon.net
    DER deutsche Xen-Provider!

  12. #12
    Registrierter Benutzer
    Registriert seit
    Jan 2002
    Ort
    Schwerin
    Beiträge
    83
    Hallo,
    ich kann leider deine Einstellungen nicht komplett testen, da ich die nächsten Tage nicht bei uns am Netz bin. Meine gesamten Unterlagen sind auch in der Firma, so daß ich jetzt auch nicht alle Samba-Einstellungen im einzelnen nachschlagen kann. Vielleicht hilft dir aber erstmal ein Auszug aus meiner Konfiguration.
    Ich habe auch weitere Drucker und arbeite auch mit cups.
    Allerdings habe ich meine smb.conf größtenteils mit Webmin erstellt, so daß ich nur die Einstellungen geändert habe, die mich interessieren. Soll heißen, den Rest hab ich einfach so gelassen.

    Bei mir sieht es dann etwa so aus:

    [printers]
    comment = All Printers
    path = /var/spool/samba
    create mask = 0700
    guest ok = Yes
    printable = Yes
    print command = lpr-cups -P %p -o raw %s -r # using client side printer drivers.
    browseable = No

    [PDF]
    comment = PDF-Datei erzeugen (in T:\tmp)
    path = /tausch/tmp
    read only = No
    guest ok = Yes
    printable = Yes
    print command = /etc/cups/dateidruck %s


    Vielleicht hilft es dir ja trotzdem weiter

    Ralf

  13. #13
    ptsa.de
    Registriert seit
    Oct 2001
    Ort
    HVR
    Beiträge
    103
    dank Dir erstmal,

    wie siehts denn bei Dir unter [globals] aus?

    Wie ist denn eigentlich die Qualität der PDFs? Bei mir fehlen manche Zeichen komplett, oder werden "übereiandergeschrieben" , manchmal siehts sehr grob aus...

    cu
    ptsa
    NEU: Xen3 basierende Root Server mit Profi-Features, BSD-Hosting in Deutschland
    http://www.xencon.net
    DER deutsche Xen-Provider!

  14. #14
    Registrierter Benutzer
    Registriert seit
    Jan 2002
    Ort
    Schwerin
    Beiträge
    83
    [global]
    nt acl support = yes
    hosts deny = 192.168.222.111 192.168.222.112
    wins server = 192.168.222.1
    domain master = False
    printing = cups
    dns proxy = No
    name resolve order = host wins lmhosts bcast
    encrypt passwords = Yes
    character set = ISO8859-1
    bind interfaces only = Yes
    printcap name = lpstat
    max log size = 50
    hosts allow = 192.168.222.
    preferred master = no
    password server = pnp-server pnp-server2
    nt smb support = yes
    restrict anonymous = Yes
    allow trusted domains = No
    security = domain
    server string = Daten und Mailserver
    workgroup = PNP
    log level = 1
    netbios name = DATEN-SERVER
    log file = /var/log/samba/log.%m
    username map = /etc/samba/user.map


    Einige Einträge sind allerdings unwichtig oder überflüssig, da ich etwas experimentiert habe.
    Außerdem arbeite ich in der Domäne, deshalb security=domain. Host deny betrifft meine ISDN-Verbindung.

    Was die Auflösung betrifft, so kommen mehrere Einstellungen in Frage. Als erstes kommt die Erzeugung der PS-Datei in Windows. D.h. Druckereinstellung des Windows-Druckers und Papierformat (A4, A3 usw.) Lässt sich aber überprüfen, wenn man direkt die erzeugte PS-Datei betrachtet bzw. über postscriptfähigen Drucker ausdruckt.
    Der andere Punkt ist die Konvertierung in PDF. Dafür ist Ghostscript zuständig. Ps2pdf ist nur ein Script, das gs mit bestimmden Optionen aufruft. Möglich ist dabei auch die zusätzliche Angabe von Optionen wie Auflösung, Format usw. Ist aber eigentlich sehr gut dokumentiert in den Ghostscript-Anleitungen, bei der Installation meist dabei sind.(z.B. ps2pdf.htm)

    Ralf

  15. #15
    Registrierter Benutzer
    Registriert seit
    Feb 2004
    Beiträge
    400
    ist zwar alles schon lange her hier ) aber ich hätte da mal ne Frage zu )

    1. ist das so moch aktuell oder gibt es eine beseere Lösung?
    2. Ich habe f. jeden Benutzer ein Home verzeichniss, das in windows als P: verbunden ist. Kann das Script den benutzernamen erkennen (z.b. sk oder dh) und in das entsprechede Home-Verzeichniss kopieren (z.b. /home/sk)???

    danke

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •