[Samba] Re: Problem with pdf printing (SOLVED)
Luca Olivetti
luca at wetron.es
Thu Mar 31 13:05:57 GMT 2005
Urs Rau wrote:
> Luca,
>
>
> Luca Olivetti wrote:
[...]
>> I don't know, but I bypassed the problem by using a pdf backend in
>> cups (which is really a simple shell script that I tailored to my
>> needs), so even the pdf printer is a "normal" cups printer.
>>
>
> Somebody called "misty" said the same thing in IRC #samba yesterday, but
> they had to run before they could show me the contents of the file.
> Would you mind sending this to the list? I think it is still at least
> slighlty "on-topic".
I already replied privately since I saw your personal message first,
anyway, here it is again.
My cups distribution (mandrake 10.0) already came with a cups backend in
/usr/lib/cups/backend, this is my modified copy. Note that I don't
export the users' home directory but the 'export' subdirectory in their
home, so the script puts the generated pdf there or, if exists, in a pdf
subdir. Users will see their file in the U: drive (that's mapped to
their export dir) and there's no need to use a cron job to notify them
since they can see if the job is still pending in the windows printer queue.
OTOH I had to upgrade ghostscript (to 8.15) since the stock one in mdk
10.0 would choke on many ps files.
Bye
--
Luca Olivetti
Wetron Automatización S.A. http://www.wetron.es/
Tel. +34 93 5883004 Fax +34 93 5883007
-------------- next part --------------
#!/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 (goffioul at imec.be) 2001
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]"
echo "Usage: pdf job-id user title copies options [file]" >> $LOGFILE
exit 1
fi
# get PDF directory from device URI, and check write status
PDFDIR=${DEVICE_URI#pdf:}
if [ "$2" != "" ]; then
USER=`echo "$2" | tr '[:upper:]' '[:lower:]'`
PDFDIR=`getent passwd "$USER" | awk -F: '{print $6}'`
PDFDIR="${PDFDIR}/export"
if [ -d "${PDFDIR}/pdf" ]; then
PDFDIR="${PDFDIR}/pdf"
fi
fi
if [ ! -d "$PDFDIR" -o ! -w "$PDFDIR" ]; then
echo "ERROR: directory $PDFDIR not writable"
echo "ERROR: directory $PDFDIR not writable" >> $LOGFILE
exit 1
fi
echo "PDF directory: $PDFDIR" >> $LOGFILE
# generate output filename
OUTPUTFILENAME=
if [ "$3" = "" ]; then
OUTPUTFILENAME="$PDFDIR/unknown.pdf"
else
TITLE=`echo $3 | sed -e 's/^smbprn\.[0-9]* //'`
OUTPUTFILENAME="$PDFDIR/${TITLE//[^[: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
More information about the samba
mailing list