From:
Hi List;
I want to be able to print to a pdf file. If I go to Kmenu -->
Utilities -->
Printing --> Printing Manager
then I see "print to file (PDF)" listed but this printer does not show up
in
any application as a printer selection. Can someone tell me how to setup
this
pseudo printer so my applications see it...
Thanks
/Kevin
You can just do it manually. Here is the script I copied from mdk and
migrated it to my suse box:
The basic process is:
(1) to copy the print-pdf script (included below) to the SuSE box. That is
the:
[david@bonza scripts]$ ll /usr/share/samba/scripts/
total 12
-rwxr-xr-x 1 root root 3555 Apr 4 09:03 print-pdf*
(note file permissions)
The actual script is:
******************************
#!/bin/bash
# samba-print-pdf
# This is a script which allows you to set up a virtual printer on samba
# which will take the file (generated by a postscript filter on windows)
# and turn it into a PDF, informing the user of where it is when it
# is done
#
# (c) Buchan Milne 2002
# License: GPLv2
# Changelog
# v0.0.6 20030428
# - Allow options passed as env. variables from print command
# - Inline and simplify sed (use tr) clean script
# - Ensure file arrives in PREFIX even if TEMP is used without provided
name
# - Changes from Joshua M. Schmidlkofer 20030425
# - Debugging, adjustments, and corrections.
# - Stupid sed sanitizing script. [probably horribly inefficient also].
# - Temp file usage cleanup.
# v0.0.5 20020723
# - Add support for preset settings
# - Allow passing of filename provided by client as final filename
#
# Arguments:
# $1 = file (usually passed with %s from samba)
# $2 = unix prefix to where to place the file (~%u should work)
# $3 = windows prefix to the same location (//%L/%u should work)
# $4 = user/computer to send a notification to (%u or %m)
# $5 = IP address of client (%I)
# $6 = Name of destination file without extension (%J)
# $7 = PDF setting (prepress,print,screen etc)
#
# If you want to customise any of the following configuration defaults,
# you can place them in the file /etc/samba/print-pdf.conf.
# If you need to modify anything in this script, please provide me with your
# changes, preferably in such a way that the changes are configurable.
PS2PDF=ps2pdf13
OPTIONS="-dAutoFilterColorImages=false -sColorImageFilter=FlateEncode"
#Values taken from arguments:
INPUT=$1
PREFIX="$2"
WINBASE=$(echo "$3"|sed -e 's,/,\\\\,g')
#NAME=`echo "$6"|sed -e 's/[&/:{}\\\[<>$#@*^!?=|]/-/g;s/\]/-/g'`
NAME=`echo "$6"|tr '[:punct:]' '[-*]'`
# Source config file if it exists:
CONFFILE=/etc/samba/print-pdf.conf
[ -e $CONFFILE ] && . $CONFFILE
#Values not taken as arguments, could be set via env. vars (?) or config
file
KEEP_PS=${KEEP_PS=0}
PERMS=${PERMS=640}
BASEFILE=${BASEFILE=pdf-service}
TEMP="${TEMP=$2}"
UMASK=${UMASK=006}
#Make sure that destination directory exists
mkdir -p "$PREFIX"
INFILE=$(basename $INPUT)
umask $UMASK
[ -n "$NAME" ] && TEMP="$PREFIX"
#make a temp file to use for the output of the PDF
OUTPUT=`mktemp -q $TEMP/$BASEFILE-XXXXXX`
if [ $? -ne 0 ]; then
echo "$0: Can't create temp file $TEMP/$OUTPUT, exiting..."
exit 1
fi
if [ -n "$NAME" ]; then
FINALOUTPUT="$PREFIX/$NAME"
else
FINALOUTPUT="$OUTPUT"
fi
if [ -n "$7" ]; then
OPTIONS="$OPTIONS -dPDFSETTINGS=/${7#pdf-}"
else
OPTIONS="$OPTIONS -dPDFSETTINGS=/default"
fi
WIN_OUTPUT="$WINBASE\\"`basename "$FINALOUTPUT"`
#mv "$INPUT" "$INPUT.ps";INPUT="$INPUT.ps"
# create the pdf
$PS2PDF $OPTIONS "$INPUT" "$OUTPUT.pdf" >/dev/null 2>&1
mv -f "${OUTPUT}.pdf" "${FINALOUTPUT}".pdf
# Generate a message to send to the user, and deal with the original file:
MESSAGE=$(echo "Your PDF file has been created as $WIN_OUTPUT.pdf\n")
# Cleanup
if [ $KEEP_PS != 0 ];then
mv -f $INPUT "${FINALOUTPUT}".ps
MESSAGE=$(echo "$MESSAGE and your postscript file as $WIN_OUTPUT.ps")
# Fix permissions on the generated files
chmod $PERMS "${FINALOUTPUT}".ps "${FINALOUTPUT}".pdf
else
rm -f $INPUT
# Fix permissions on the generated files
chmod $PERMS "${FINALOUTPUT}".pdf
fi
#Remove empty file from mktemp:
rm -f $OUTPUT
# Send notification to user
echo -e $MESSAGE|smbclient -M $4 -I $5 -U "PDF Generator" >/dev/null 2>&1
******************************
literally .... copy and paste it into ... /usr/share/samba/scripts/print-pdf
on whatever box you are using
The permissions are:
[david@bonza scripts]$ ls -al /usr/share/samba/scripts/
total 20
drwxr-xr-x 2 root root 4096 Jul 16 10:24 ./
drwxr-xr-x 3 root root 4096 Apr 4 09:03 ../
-rwxr-xr-x 1 root root 3555 Apr 4 09:03 print-pdf*
-rwxr-x--- 1 root adm 5757 Apr 4 09:03 smb-migrate*
(2) Confirm you have ps2pdf13 installed or edit the script to work with what
you do have. You will at least have one of the following if you have
ghostscript installed:
skyline:/home/david # ls /usr/bin/ps2*
/usr/bin/ps2ascii /usr/bin/ps2frag /usr/bin/ps2pdf12 /usr/bin/ps2pdf14
/usr/bin/ps2pk
/usr/bin/ps2epsi /usr/bin/ps2pdf /usr/bin/ps2pdf13 /usr/bin/ps2pdfwr
/usr/bin/ps2ps
(3) Then, just edit /etc/samba/smb.conf and add the following share:
[pdf-gen]
path = /var/tmp
guest ok = No
printable = Yes
comment = PDF Generator (only valid users)
printing = bsd
printcap name = cups
#print command = /usr/share/samba/scripts/print-pdf file path win_path
recipient IP &
print command = /usr/share/samba/scripts/print-pdf "%s" "%H" "//%L/%u"
"%m" "%I" "%J" &
lpq command = /bin/true
(4) Then (run testparm -- always; and (5) restart Samba):
On SuSE (as root): rcsmb restart
On mdk (as root): /etc/rc.d/init.d/smb restart
(6) Then from M$ clients, browse to the pdf-gen share and double-click it or
control panel - printers - add printer - network and select it. Choose OK to
'manually select' the driver. Choose one of the latest HP Laserjet
postscript (PS) drivers; (eg. Laserjet 8150 color PS, or Laserjet 6P/6.. PS,
or Laserjet 5, etc..
That's it, that's all it takes! Open Word, (choose your most used app),
select pdf-gen as your printer and BINGO your pdf is created in the users
home directory -- no questions asked. You can also change where it puts the
file by changing the path above.
--
David C. Rankin, J.D., P.E.
RANKIN LAW FIRM, PLLC
510 Ochiltree Street
Nacogdoches, Texas 75961
(936) 715-9333
(936) 715-9339 fax
www.rankinlawfirm.com
--