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下面。