AUTHOR: Thomas de Roo ACKNOWLEDGEMENTS: DATE:2012-011-30 LICENSE: GNU Free Documentation License SYNOPSIS: Install a PDF-printer using CUPS and Ghostscript DESCRIPTION: This hint describes how you can install a PDF-printer on your (B)LFS-system. ATTACHMENTS: http://download.adobe.com/pub/adobe/printerdrivers/win/all/ppdfiles/adobe.zip PREREQUISITES: This hint assumes you have already - LFS - Ghostscript - CUPS - wget - unzip - sudo HINT: - Download ans install the Adobe PostScript Printer Description-files: wget http://download.adobe.com/pub/adobe/printerdrivers/win/all/ppdfiles/adobe.zip unzip adobe.zip sudo cp Adobe/ADIST5.PPD /usr/share/cups/model/distiller.ppd - Make ps2pdf.cups: sudo mkdir /usr/lib/cups/pdf sudo ln -s /usr/bin/ps2pdfwr /usr/lib/cups/pdf/ps2pdf.cups - create the backend: sudo su - cat > /usr/lib/cups/backend/pdf << "EOF" #!/bin/sh # umask 002 PDFBIN=/usr/lib/cups/pdf/ps2pdf.cups FILENAME= # filename of the PDF File PRINTTIME=`date +%Y-%m-%d_%H.%M.%S` # no argument, prints available URIs if [ $# -eq 0 ]; then if [ ! -x "$PDFBIN" ]; then exit 0 fi echo "direct pdf \"Unknown\" \"PDF Creator\"" 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 # generate output filename OUTPUTFILENAME= if [ "$3" = "" ]; then OUTPUTFILENAME="$PDFDIR/unknown.pdf" else if [ "$2" != "" ]; then OUTPUTFILENAME="$PDFDIR/$2-$PRINTTIME.pdf" else OUTPUTFILENAME="$PDFDIR/$PRINTTIME.pdf" fi echo "PDF file: $OUTPUTFILENAME placed in: $PDFDIR" >> $LOGFILE fi # run ghostscript if [ $# -eq 6 ]; then $PDFBIN $6 $OUTPUTFILENAME >& /dev/null else $PDFBIN - $OUTPUTFILENAME >& /dev/null fi exit 0 EOF exit sudo chmod 755 /usr/lib/cups/backend/pdf - Create the printer in CUPS: (You can choose another path for /tmp, where the PDFs will be saved.) sudo /usr/sbin/lpadmin -p PDF -v pdf:/tmp -E -P /usr/share/cups/model/distiller.ppd - Restart CUPS: sudo /etc/rc.d/init.d/cups restart Now you have a printer "PDF" that writes its output to the /tmp directory. ACKNOWLEDGEMENTS: Based on http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/Setting_up_a_PDF_printer_in_CUPS_in_my_case_in_Slackware CHANGELOG: [2012-12-03] * initial hint