[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: print to pdf?



On Thu, Aug 29, 2002 at 03:04:18PM -0400, Chris Mason wrote:
> I'd like to have a windows computer print postscript to a Redhat server,
> and have the server turn the postscript into a pdf and save it in a
> samba share. Can that be done?

Yep.  The attached script will do this.
-- 
	Dave Ihnat
	ignatz dminet com
#!/bin/sh

# Simple script to convert a specified postscript file into a PDF document
# and place it in a location that is shared by the Samba server.
# 
# Usage:
#	printpdf [-k][-n] Input_Filename
#
# Where Input_Filename is the spool file for spooler use
#
#	-k	Keep the input file.  Default is to delete it when done.
#
#	-n	Name the output file the same name as the input file sans any
#		suffixes.
#
#	-v	Verbose.
#
#	-d	Debug.  Won't take effect until after command parse, of course.
#
# (Original version) John Bright, 2001, jbright winfordeng com
#
# Modified 01/20/2002, dihnat dminet com 
#	Added command-line options to preserve input file, name output file to
#	input filename for interactive use.
#
##########################################################################
# Data
##########################################################################

# We will create the pdf into a temporary file based upon the current
# date and time.  After we are finished, we'll rename it to a file with
# the same date, but ending in .pdf.  We do this because if a user tries
# to open a PDF that is still being written, they will get a message
# that it is corrupt, when it is actually just not done yet.

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

# Directory in which to place the output
# Be sure this directory exists and is writable by the user that Samba
# is running as (for example, the nobody user)

OUTDIR=/usr/tmp/pdfdropbox

# Option control flags
KEEP_FLAG="";
NAME_FLAG="";
VERBOSE_FLAG="";
DEBUG_FLAG="";

##########################################################################
# FUNCTIONS
##########################################################################
usage() {
	if [ "$DEBUG_FLAG" ]
	then
		set -x;
	fi;

	cat <<!
Usage:
	printpdf [-k][-n] Input_Filename

Where Input_Filename is the spool file for spooler use

	-k	Keep the input file.  Default is to delete it when done.

	-n	Name the output file the same name as the input file sans any
		suffixes.

	-v	Verbose mode.
!

exit 1;

};

verb_print()
{
	if [ "$VERBOSE_FLAG" ]
	then
		echo "$*" >&2;
	fi;
};
##########################################################################
# MAIN
##########################################################################

# Get options
TMPSTR=`getopt -o dvhkn -- "$@"`;

if [ $? -ne 0 ]
then
	exit $?;
fi;

eval set -- "$TMPSTR";

while true
do
	case "$1" in
	-k)
		KEEP_FLAG="Y";
		shift;
		;;

	-n)
		NAME_FLAG="Y";
		shift;
		;;
	
	-v)
		VERBOSE_FLAG="Y";
		shift;
		;;

	-d)
		DEBUG_FLAG="Y";
		shift;
		;;

	-h)
		usage;
		shift;
		;;

	--)
		shift;
		break;
		;;
	esac;
done;

if [ "$DEBUG_FLAG" ]
then
	set -x;
fi;

if [ ! -d $OUTDIR ]
then
	mkdir $OUTDIR;
	if [ $? -ne 0 ]
	then
		/usr/bin/logger -i -s -p lpr.err -t "printpdf" "Faile to create PDF output directory $OUTDIR";
		verb_print "Failed to create PDF output directory $OUTDIR";
		exit 1;
	fi;

	chmod 777 $OUTDIR
	if [ $? -ne 0 ]
	then
		/usr/bin/logger -i -s -p lpr.err -t "printpdf" "Faile to set permissions on PDF output directory $OUTDIR";
		verb_print "Faile to set permissions on PDF output directory $OUTDIR";
		exit 1;
	fi;
fi;

while [ $# -ne 0 ]
do
	if [ "$NAME_FLAG" ]
	then
		OUTFNAME="$OUTDIR/`basename $1 .ps`.pdf"
	else
		OUTFNAME="$OUTDIR/$DATE.pdf";
	fi;

	verb_print "Output filename: $OUTFNAME";

	ps2pdf "$1" $OUTDIR/$DATE.temp
	mv $OUTDIR/$DATE.temp "$OUTFNAME";

	if [ ! "$KEEP_FLAG" ]
	then
		verb_print "Deleting spooled file $1";
		rm -f "$1"
	fi;

	shift;
done;

exit 0;

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]