中国青基会

查看完整版本: USE Linux 10 PDF打印机配置小结

lili 2008-11-23 20:32

USE Linux 10 PDF打印机配置小结

首先需确认已安装CUPS,ghostscript-library(rpm),这是系统自带的没装自己安装先。
1. 配置CUPS

编辑/etc/cups/cups.conf,把相关项改成如下配置:

User lp
Group lp
RunAsUser No

<Location /admin>
AuthType Basic



重启CUPS服务:rccups restart

2. 配置CUPS支持工具(backends)

添加一个文件/usr/lib/cups/backend/pdf-writer, 内容如下:

#!/bin/sh
#########################################################################
#
# File:  pdf-writer
#
# Description: A simple PDF Writer for CUPS
#
# Copyright: (c) 2006  Axel Schmidt,  SUSE LINUX GmbH, Nuernberg, Germany
#  (c) 2001  Michael Goffioul (kdeprint  swing  be)
#
# License: GPL
#
#########################################################################

PS2PDF=`which ps2pdf`
DATE=`date +%Y-%m-%d-%H:%M.%S`

# USERMODE="on" changes PDFPATH to "$HOME//PDF"
#
USERMODE="off"
DEFGROUP="users"
HOME="/home"
JOB=$1
PRTUSER=$2

# Create user based file name
#
create_user_fname()
{
        if [ "$PRTUSER" != "" ]; then
                FILENAME="$PDFPATH/$PRTUSER-$DATE.pdf"
                logger "pdf-writer: \"$PRTUSER-$DATE.pdf\" was placed in: $PDFPATH"
        else
                FILENAME="$PDFPATH/$DATE.pdf"
                logger "pdf-writer: \"$DATE.pdf\" was placed in: $PDFPATH"
        fi
}


# Check DEVICE DISCOVERY + test PS2PDF
#
if [ "$JOB" = "" ]; then
        if test -f "$PS2PDF" ; then
                echo "network pdf-writer:/export/share/pdf \"unkown\" \"pdf writer\" "
                logger "pdf-writer: INFO: USERMODE=\"$USERMODE\""
                if [ "$USERMODE" = "on" ]; then
                  logger "pdf-writer: CUPS user must be set to root with USERMODE=\"on\"!"
                fi
                exit 0
        else
                echo "Error: $0 - ps2pdf is not available!"     
                logger "pdf-writer: ERROR: ps2pdf is not available!"     
                exit 1
        fi
fi

logger "pdf-writer started: $1 $2 $3 $4 $5 $6"

# Check number of command line arguments
#
if [ $# -ne 5 -a $# -ne 6 ]; then
        echo "Usage: $0 job-id user title copies options [file]"
        logger "pdf-writer: CRITICAL: Printer stopped !"     
        exit 1
fi


# get PDF-WRITER directory from device URI
#
PDFPATH=${DEVICE_URI#pdf-writer:}


# Create output filename based on user name and user mode
#
if [ "$USERMODE" = "on" -a "$PRTUSER" != "" ]; then
        mkdir -p $HOME/$PRTUSER/PDF
        chown $PRTUSER $HOME/$PRTUSER/PDF

# check if cups run as lp or root
# user lp may not run chown   
#
        if [ $? -eq 1 ]; then
                create_user_fname
        else
                chgrp $DEFGROUP /home/$PRTUSER/PDF
                PDFPATH=$HOME/$PRTUSER/PDF
                FILENAME="$PDFPATH/$DATE.pdf"
                logger "pdf-writer: \"$DATE.pdf\" was placed in: $PDFPATH"
        fi
else
        create_user_fname
fi

# Check write status
#
if [ ! -d "$PDFPATH" -o ! -w "$PDFPATH" ]; then
        logger "pdf-writer: ERROR: directory $PDFPATH not writeable"
        exit 1
fi

# Run ps2pdf (ghostscript)
if [ $# -eq 6 ]; then
        $PS2PDF $6 $FILENAME >& /dev/null
else
        $PS2PDF - $FILENAME >& /dev/null
fi

# Chown + set permissions for the user
# Note: this will no work if CUPS runs as lp
if [ "$PRTUSER" != "" ]; then
        chmod 644 $FILENAME
        chown $PRTUSER:$DEFGROUP $FILENAME
fi
exit 0

#
#########################  CUPS pdf-writer ends here  ########################
#



把该文件的权限改为755:

# chmod 755 /usr/lib/cups/backend/pdf-writer


准备好PDF的保存目录:
# mkdir -p /export/share/pdf
# chmod -R 777 /export
接下来需要选择ppd文件。你可以选择系统自带的,如下:

# cd /usr/share/cups/model
# gunzip -d PostScript-level2.ppd.gz
# lpadmin -p CUPS-PDF -v pdf-writer:/export/share/pdf/ -E -P \
/usr/share/cups/model/Postscript-level2.ppd -D "PDF Writer for CUPS" \
-L "PDF Backend /usr/lib/backend/pdf-writer"



也可以从[url]http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=204&fileID=204[/url]下载Adobe公司的ppd(据说效果更好些),然后:

# unzip -d adobe.zip
# cp Adobe/ADIST5.PPD /usr/share/cups/model/Acrobat-Distiller.ppd
# lpadmin -p CUPS-PDF -v pdf-writer:/export/share/pdf/ -E -P \
/usr/share/cups/model/Acrobat-Distiller.ppd -D "PDF Writer for CUPS" \
-L "PDF Backend /usr/lib/backend/pdf-writer"


登入CUPS的管理界面 http://localhost:631/admin,应该可以看到添加的CUPS-PDF打印机了。
打印一个文件看看,在/export/share/pdf可看到打印结果。

3. 让打印结果保存到用户的HOME目录

编辑/usr/lib/cups/backend/pdf-writer,设置USERMODE="on",改变/etc/cups/cupsd.conf,把User改为root,重启CUPS: rccups restart

这样用户打印的PDF文件会保存在$HOME/PDF下面。
页: [1]
查看完整版本: USE Linux 10 PDF打印机配置小结
Baidu