Mailinglist Archive: opensuse-de (3598 mails)

< Previous Next >
Re: PDF Drucker ueber Samba/CUPS
  • From: Andreas Feile <lists@xxxxxxxxx>
  • Date: Fri, 1 Oct 2004 22:22:31 +0200
  • Message-id: <200410012222.31779@xxxxxxxxxx>
Dr. Thorsten Brandau, Freitag, 1. Oktober 2004 09:51:

Ich weiss, das kam vor kurzem, aber ich glaube da ist keine
anbliessende Lösung aufgetaucht.

Doch, läuft hier.

In die /etc/cups/printers.conf muß ein Abschnitt rein wie

<Printer PDF-Printer>
DeviceURI pdf://verzeichnis/der/pdfs
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>

In /usr/lib/cups/backend legst Du eine Datei namens pdf an. Die
Rechte guckst Du Dir von den anderen Backends ab, die da drin
liegen. Die Datei enthält [1].

Dann mußt Du nur noch die smb.conf anpassen, und folgende Sektion
hinzufügen:

[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No

Danach die ganzen Daemonen restarten, und dann sollte es tun.

Ich hab selbst lange nach diesem Weg gesucht, daher etwas
ausführlicher, in der Hoffnung, daß das ein paar anderen hier auch
hilft.

Andy




[1]
#!/bin/sh
#
# This script is intended to be used as a CUPS backend, to create
# PDF file on-the-fly. Just create a printer using the device uri
# pdf:/path/to/dir/. When printing to this printer, a PDF file
# will be generated in the directory specified. The file name will
# be either "<jobname>.pdf" or "unknown.pdf", depending wether the
# jobname is empty or not.
#
# To use it, simply copy this script to your backend directory, and
# create a printer with the correct URI. That's it.
#
# Copyright (C) Michael Goffioul (kdeprint <at> swing <dot> be) 2001
#
# This program is free software; you can redistribute it and/or
modify
# it under the terms of the GNU General Public License as published
by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA

LOGFILE=/tmp/pdf.log
PDFBIN=`which ps2pdf`
FILENAME=
# this is borrowed from printpdf script for the filename
PRINTTIME=`date +%b%d-%H%M%S`

echo "Executable: $PDFBIN" > $LOGFILE
echo "Arguments: |$1|$2|$3|$4|$5|$6|" >> $LOGFILE
echo $# $PRINTTIME >> $LOGFILE

# case of no argument, prints available URIs
if [ $# -eq 0 ]; then
if [ ! -x "$PDFBIN" ]; then
exit 0
fi
echo "direct pdf \"Unknown\" \"PDF Writing\""
exit 0
fi

# case of wrong number of arguments
if [ $# -ne 5 -a $# -ne 6 ]; then
echo "Usage: pdf job-id user title copies options [file]"
exit 1
fi

# get PDF directory from device URI, and check write status
PDFDIR=${DEVICE_URI#pdf:}
if [ ! -d "$PDFDIR" -o ! -w "$PDFDIR" ]; then
echo "ERROR: directory $PDFDIR not writable"
exit 1
fi

echo "PDF directory: $PDFDIR" >> $LOGFILE

# generate output filename
OUTPUTFILENAME=
if [ "$3" = "" ]; then
OUTPUTFILENAME="$PDFDIR/unknown.pdf"
else
# OUTPUTFILENAME="$PDFDIR/${3//[^[:alnum:]]/_}.pdf"
# I changed this to user name, and the printtime to track
down who
# printed the PDF and when, samba printing just uses nobody

OUTPUTFILENAME="$PDFDIR/$2-$PRINTTIME.pdf"
echo "PDF file: $OUTPUTFILENAME placed in: $PDFDIR" >>
$LOGFILE
fi

echo "Output file name: $OUTPUTFILENAME" >> $LOGFILE

# run ghostscript
if [ $# -eq 6 ]; then
$PDFBIN $6 "$OUTPUTFILENAME"
#>& /dev/null
else
$PDFBIN - "$OUTPUTFILENAME" >& /dev/null
fi

# modify ownership and permissions on the file
# - world readable
# - owns to user specified in argument
chmod a+r "$OUTPUTFILENAME"
if [ "$2" != "" ]; then
chown $2 "$OUTPUTFILENAME"
fi

exit 0

--
Antworten an lists@xxxxxxxxx werden in /dev/null archiviert!
Bitte ggf. lists... durch mail... ersetzen.

Andreas Feile
www.feile.net

< Previous Next >