PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Samba PDF-Server



mwichern
10.10.05, 20:54
Hi,

Faehrt jemand zu Hause einen PDF-Server? Also Samba + PDF-Printer? Und wenn ja, nach welchem HowTo habt ihr den eingerichtet? Gibt es eine gute Software / Dokumentation?

MfG

heatwalker
10.10.05, 21:17
Das ist eigentlich recht einfach.
Hier ein kleiner Auszug aus meiner smb.conf


[PDF-Ausdrucke]
comment = Ablegen der generierten PDF-Dokumente
path = /Wo/immer/du/willst/PDF-Ausdrucke
read only = No
create mask = 0777
guest ok = Yes

[PDF Drucker]
comment = PDF Drucker
path = /var/tmp
create mask = 0777
printable = Yes
print command = /usr/bin/smbprngenpdf -J '%J' -c %c -s %s -p /Wo/immer/du/willst/PDF-Ausdrucke -z %z

mwichern
10.10.05, 21:23
Danke, das klingt doch schonmal nicht schlecht. Wo gibt es denn 'smbprngenpdf '?

MfG

heatwalker
10.10.05, 21:31
Welche Distri nutzt du denn?? Bei SuSE ist es mit dabei.

mwichern
10.10.05, 21:33
Fedora

MfG

heatwalker
10.10.05, 21:52
Hmmmh, es müsste im samba-client paket sein. Da liegt ist es zumindest bei der Suse.

Blade
11.10.05, 08:15
Hi heatwalker,
hört sich ja richtig gut an. Nur welchen Treiber installiere ich auf den Win-Kisten, wenn ich auf den Drucker unter Windows zugreifen möchte? Danke vorab!

Blade
11.10.05, 08:41
Habe die Frage selbst geklärt. Ich habe einfach den Apple LaserWriter 16/600 PS genommen, der vom aktuellen Dokument eine PS-Datei erstellt, die dann vom Server in ein PDF-File umgewandelt wird.

Funzt bestens, super Tipp!

Blade
11.10.05, 08:52
Kurze Nachfrage zum Win-Drucker:

Mit dem Apple LaserWriter 16/600 PS Drucker kann ich nur pdf-Dokumente der Seiten-Größe A4 erstellen. Welcher Druckertreiber verarbeitet denn auch größere Seiten-Formate bis z.B. A0 -> ich möchte gerne digitale Zeichnungen/Pläne auf diese Weise in pdf-Files umwandeln.

Bin dankbar über jeden Hinweis.

heatwalker
11.10.05, 09:06
Da nimmst du am besten einen der AGFA Treiber.
z.B. AGFA Avantra-xxx, da könnte es auch mit A0 funktionieren.

Dom
11.10.05, 09:08
Hallo,

ich habe an der Firma selber einen PDF drucke runter Samba eingerichtet und bin damit gerade am rumtrixen.
Es funtkioiert super soweit.

Hier mal meine Lösung:

smb.conf:


[homes]
comment = Home Directories
force group = users
valid users = %S
path = /share/%S
browseable = no
writable = yes
guest ok = no
printable = no

[smbpdf]
comment = PDF Drucker
path = /tmp
printable = yes
printing = sysv
use client driver = yes
print command = /usr/sbin/pdfprint %s %U %G %m %I %H


pdfprint:

#!/bin/bash
#convert to pdf
#$1 = spool file $2 = uid $3 = gid $4 = machinename $5 = ip $6 = homedir
FILENAME=pdf-$2-`date +%d%m%H%M%S`.pdf

OUTPUTPATH=/share/$2

/usr/bin/ps2pdf $1 $OUTPUTPATH/$FILENAME

rm $1

chown $2:$3 share/$2/$FILENAME
chmod 700 /share/$2/$FILENAME

Vielleicht ist das ja auch was.
Läuft wunderbar unter SuSE und Ubuntu ;)
Der Drucker Apple LaserWriter 16/600 PS kann ich auch nur empfehlen.

MfG
Dominic

Blade
11.10.05, 22:56
-> heatwalker,
unter SuSE 9.0 hatte ich den Tipp sogleich zum Laufen gebracht, unter SuSE 9.3 ums verreck... net, bin ich zu blöd? Hast Du einen Tipp? Unter SuSE 9.0 drucke ich über den Server mit Lprng und raw-Drucker. Unter SuSE 9.3 aber drucke ich über den Server mit cups .... der cupsd meldet immer Fehler bzgl. error-code??? :o

-> dom,
danke für Deinen Tipp. Wenn alle Stricke reißen ... häng auch ich mich auf ... und versuch Dein Script!

:ugly: Bin über jeden Hinweis dankbar!

heatwalker
11.10.05, 23:08
Gibt es irgendwelche Fehlermeldungen???

Schau mal über "which smbprngenpdf" ob es überhaupt installiert ist.
Normalerweise sollte es überall funktionieren.

Noch'n Edit
Wieso cups? Versteh ich jetzt nicht. Der PDF-Drucker läuft unabhängig von CUPS.
Ist das Ziel die Verteilung des PDF-Druckers über Cups an Linuxmaschienen oder
an Windoofkisten??

Blade
11.10.05, 23:15
Klar gibt es Fehlermeldungen in der /var/log/samba... und /var/log/warn ... nur helfen mir diese nicht weiter:


Oct 11 23:03:47 server smbd[6378]: Unable to get jobs for ipp://localhost/printers/PDF-Drucker - client-error-not-found
Oct 11 23:03:56 server smbd[3682]: [2005/10/11 23:03:56, 0] printing/print_cups.c:cups_job_submit(643)
Oct 11 23:03:56 server smbd[3682]: Unable to print file to PDF-Drucker - client-error-not-found


Hast Du einen heißen Tipp? Das Problem liegt irgendwo zwischen LPRNG und CUPS begraben?

heatwalker
11.10.05, 23:21
Übernahme aus meiner Änderung vom vorigen Post
(-:
Wieso cups? Versteh ich jetzt nicht. Der PDF-Drucker läuft unabhängig von CUPS.
Ist das Ziel die Verteilung des PDF-Druckers über Cups an Linuxmaschienen oder
an Windoofkisten??

heatwalker
11.10.05, 23:39
Vergiss meinen Post von eben. Natürlich hast du in der smb.conf cups als
Drucksystem angegeben. :ugly:

Poste oder schick mir doch mal deine smb.conf.
Weil so auf die schnelle fällt mir da auch nichts ein.

Bei mir funktioniert es mit cups einwandfrei

Dom
12.10.05, 07:27
Klar gibt es Fehlermeldungen in der /var/log/samba... und /var/log/warn ... nur helfen mir diese nicht weiter:



Hast Du einen heißen Tipp? Das Problem liegt irgendwo zwischen LPRNG und CUPS begraben?

Moin,
ich hatte unter Suse den gleichen Fehler.
Trage mal in die smb.conf bei deinem Drucker

printing = sysv
ein. Danach wars bei mir wech.

Ich habe auch noch was hier gefunden.
http://www.linuxforen.de/forums/showthread.php?t=59813

Dieses Problem trat bei mir auch auf, egal ob ich CUPS benutze oder nicht.
Ich weiss nicht wieso und habe dazu auch nirgends eine erklärung gefunden, nur das dieser Fehler wohl öfters auftritt.

MfG
Dominic

heatwalker
12.10.05, 08:33
@mwichern: Um noch mal auf den ursprünglichen Post zurückzukommen.
Bei Fedora wirst du smbprngenpdf wohl nicht finden. Das Progrämmchen ist von SuSE geschrieben worden.

Du findest es aber hier:
smbprngenpdf auf samba.org (http://de.samba.org/samba/ftp/Binary_Packages/SuSE/2.2/src/smbprngenpdf)

Blade
12.10.05, 20:56
-> heatwalker,
danke für Deinen Super-Tipp und Unterstützung, hab es nun auch unter SuSE 9.3 zum Laufen gebracht.

Der smbprngenpdf - Drucker ist geräteunabhängig, das Problem lag nicht an dem CUPS-Eintrag in der smb.conf (ich betreibe da einen Netzwerk-Drucker), sondern an dem mit unzureichenden Rechten angegebenen Verzeichnis, in dem die pdf-Files abgelegt werden sollen.

Habe die Schreibrechte für die Gruppe Users erteilt und dann
in der smb.conf den PDF-Druckerabschnitt wie folgent ergänzt:

printing = BSD
printcap name = /etc/printcap
_________________________

Das Problem mit dem Umwandeln von Plänen der Größe DIN A0 habe ich noch nicht ganz gelöst, liegt aber nur am geeigneten Windows-Druckertreiber. Der AGFA Avantra-xxx funzt, nur muss man da die Plangröße manuell in cm eigeben und kann nicht die Plan-Größe über DIN-Ax-Formate im Listen-Auswahlfenster auswählen.

Problem zu 99,999 % gelöst :D

heatwalker
12.10.05, 21:06
na gerne doch :D

Noch ein Tipp: Wenn mich nicht alles täuscht, muss von der Avantra jetzt ein
PPD-File irgendwo liegen. Diesen kannst du bearbeiten.
Wenn du Dir die Struktur anschaust, wirst du schnell rausfinden wie du die Papiergrösse
als Auswahlformat einstellen kannst.

Bunkerwolf
17.10.05, 15:00
Hier ist ein kleines howto von mir geschrieben ist auch schon etwas älter aber funktioniert wie eine 1

http://www.linuxforen.de/forums/showthread.php?t=164417&highlight=samba

Schritt 1:
Inhalt von in folgende Datei schreiben: /usr/lib/cups/backend/pdffile

------------------------------------------------------------
# Dieses Skript muss ausführbar sein!!
#!/usr/bin/perl -w
#Perlskript zum Umwandeln von Postscript Dateien in PDF
#License: GPL
#
#Dieses Skript basiert auf dem Skript von Craig Ringer und Ryan Armanasco aus dem Jahre 2002
#
#Die Datei sollte nach /usr/lib/cups/backend/pdffile kopiert werden.
#ps2pdf uebernimmt anschliessend den Konvertierungsprozess.
#
#Damit Cups das Skript als Backend erkennt gibt das Skript
#in den ersten Zeilen einige Infos aus.
#
#Cups uebergibt folgende Argumente die als Variablen verarbeitet werden:
#123 | username | jobname | 1 | | /var/spool/cups/d00123-001
#
# $ARGV[0] - Print Job Nummer
# $ARGV[1] - Username
# $ARGV[2] - Print Job Name
# $ARGV[3] - Seitenzahl?
# $ARGV[4] - Zusatzinformationen, meistens leer
# $ARGV[5] - Name und Pfad der temporaeren Spooldatei
#
#
#
#use strict;
#use vars qw();

#Hier schreiben wir die Umgebungsvariablen in eine Datei um evtl. nach Fehlern suchen zu koennen
#system('env > /tmp/pdfenv');

# Damit CUPS die Datei als Backend erkennt gibt das Script diese Zeile aus wenn es aufgerufen wird
if ( scalar(@ARGV) == 0 ) {
print "network pdffile \"Unknown\" \"PDF-Writer\"\n";
exit 0;
}
undef $/;

#Wir oeffnen eine Datei /tmp/errlog in die Fehlerausgaben geschrieben werden
open(ERRLOG,'>/tmp/errlog') or die "Konnte errlog nicht oeffnen: $!\n";

#Schreiben des Usernames in eine Datei /tmp/pdf/job
open(NAME, '>/tmp/pdf/name') or die "Konnte Namen nicht schreiben";
print NAME "".$ARGV[1];
close NAME;

#Nachsehen ob das Spooldirectory existiert
if ( -d "/tmp/pdf") {

#Hier wird die Zieldatei im Ordner /tmp/pdf geoeffnet
open(PS2PDF,'|/usr/bin/ps2pdf - /tmp/pdf/"ausgabe.pdf"')
or print ERRLOG "Konnte Pipe zu ps2pdf nicht oeffnen: $!\n", exit;
}
open(CUPSSPOOL,$ARGV[5])
or print ERRLOG "Fehler beim Oeffnen: $ARGV[5]: $!\n", exit;

#ps2pdf uebernimmt die eigentliche Arbeit
print PS2PDF scalar(<CUPSSPOOL>);

#Schliessen der offenen Dateien
close(PS2PDF)
or print ERRLOG "Konnte Pipe zu ps2pdf nicht schliessen: $!\n", exit;
close(CUPSSPOOL)
or print ERRLOG "Fehler beim Schliessen $ARGV[5]: $!\n", exit;
(ERRLOG);

#Aufruf eines externen Skripts zur Weiterverarbeitung
system('/opt/pdfwriter/script/transport.sh');
# END

---------------------------------------------------------
Danach

lpadmin –p pdf_printer –v pdffile://unused –E –L server –i /usr/lib/cups/backend/pdffile
ausführen und dem CUPS bekannt geben.

In Samba verweisen, dass Cups die Drucker regeln soll

printing = CUPS
printcap name = CUPS
use client driver = yes
printer admin = // hier den Printeradmin eintragen
und eine Freigabe einrichten
security = server
password server = // Hier die IP - Adresse des PDCs eintragen ( kann auch w2k sein )
workgroup = // Hier den Domänen Namen einfügen
[PDF]
printable = yes
browseable = yes
comment = PDF - Drucker
printer name = cups_pdf_writer
printer driver = HP C LaserJet 4500-PS
read only = no
guest ok = yes

Bitte Groß und Kleinschreibung beachten!!!

----
natürlich muss das weitervearbeitungsskript transport.sh noch angelegt werden und bearbeitet werden. Standardmäßig wird in /tmp/pdf/ eine Datei name generiert die den Benutzernamen beinhaltet und eine ausgabe.pdf.
Das weiterverarbeitungsskript kann dazu genutzt werden um die Datei auf eine Ablagestruktur abzulegen oder per LDAP abfrage an einen EXchange weiter zu schicken ... falls fragen bestehen per E-mail oder ICQ - ....
___

Blade
17.10.05, 21:15
Hier ist ein kleines howto von mir geschrieben ist auch schon etwas älter aber funktioniert wie eine 1 ......
----
natürlich muss das weitervearbeitungsskript transport.sh noch angelegt werden und bearbeitet werden. Standardmäßig wird in /tmp/pdf/ eine Datei name generiert die den Benutzernamen beinhaltet und eine ausgabe.pdf.
Das weiterverarbeitungsskript kann dazu genutzt werden um die Datei auf eine Ablagestruktur abzulegen oder per LDAP abfrage an einen EXchange weiter zu schicken ... falls fragen bestehen per E-mail oder ICQ - ....
___
Hallo Bunkerwolf,
vielen Dank für Deinen Tipp und Dein gepostet Script. Hört sich alles sehr gut an. Ich möchte das ganze in einem Netzwerk einrichten, so dass jeder Windooof-User auf dem cups-pdf-Drucker ausdrucken kann und dann am besten eine Mail mit dem erstellten pdf-File zugestellt bekommt.

Da ich im Linux-Programmieren nicht so fit bin, scheitere ich an dem Weiterverarbeitungsskript ... transport.sh ... Du hast da eine Lösung, den Windows-User-Namen auszulesen und an diesen eine Mail zu versenden. Das würde bei mir schon passen. Kannst Du noch weiter helfen, wäre spitze.

Danke im Voraus! :D

Bunkerwolf
19.10.05, 13:33
Die Frage ist:

wie willst du die E-mailadresse auslesen? Hast du ein
Adressbuch ? Hast du ein LDAP - Verzeichniss

Ich kann dir die Lösung dann gerne zurechtbasteln.

grüße
-bunkerwolf-

Blade
19.10.05, 19:23
Die E-Mail - Adressen sind leicht auszulesen. Sie setzen sich immer aus dem User-Namen zusammen, mit dem sich der Windows-Client am Samba-Server anmeldet und der auf dem Server lokal vorhandenen Domain, also user_xyz@domain.de - fertig ist die Laube. Also eigentlich kein Hexenwerck, nur in Scriotsprache muss man es umsetzen können, puhhh!?