分享
 
 
 

FreeBSDhandbook中文版11打印(2)

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

11.4 高级打印机设置

11.4.2 Header Pages

如果你有很多使用者使用不同的打印机,那么你也许会觉得需要打印header pages.Header pages,也称做banner 或burst pages,是用来辨认打出来的工作是属于谁的。通常header pages 以粗体的大字,可能再加上外框打出来的,如此,使用者才能快速的在一堆打出的结果找到属于自己的部分。不过header page 的缺点就是每个工作都会多使用一张纸来打印header page.它的功用可能不会超过一分钟,而最后的下场都是丢进资源回收箱或是垃圾筒。(不过header pages 是一份工作一张,而不是一个文件一张,所以纸张的浪费可能没有你想象的那么严重)。

如果你的打印机可以直接打印纯文本的话,那么LPD 可以自动为你的输出加上headerpages.如果你的打印机是PostScript 的,那么你将会需要额外的程序来产生header page;请阅读在PostScript 打印机上打印Header Pages 这一节。

11.4.2.1 启用header pages

在简单的打印机设置这节里,我们在/etc/printcap 文件里利用设置sh 以不打印headerpage (sh 即“suppress header”的意思)。如果某一台打印机要打印header pages 的话,那么只要将sh 关键词删除就行了。

看起来是不是很简单?

没错。你也许需要提供一个输出用过滤程序将初始化句柄送给打印机。下面是一个适用于Hewlett Packard PCL 兼容打印机使用的输出用过滤程序:

#!/bin/sh

#

# hpof - Output filter for Hewlett Packard PCL-compatible printers

# Installed in /usr/local/libexec/hpof

printf “\033&k2G” || exit 2

第39 页FreeBSD 使用手册

exec /usr/libexec/lpr/lpf

我们用of 关键词来指定输出用过滤程序的路径。请阅读输出用的过滤程序这一节以取得更多的信息。

下面是一个为我们先前提到的打印机teak 在teak 文件里设置要打印header pages 及输出用过滤程序的例子:

#

# /etc/printcap for host orchid

#

teak|hp|laserjet|Hewlett Packard LaserJet 3Si::lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0::if=/usr/local/libexec/hpif::vf=/usr/local/libexec/hpvf::of=/usr/local/libexec/hpof:

现在,当使用者用teak 打印时,它们每个工作都会有一张header page.如果使用者们愿意花时间自己找出自己打出的东西,那么它们可以用lpr -h 命令设置不打出header pages;请阅读Header Page 参数以得知更多lpr 的参数。

注意: LPD 打完header page 后会送出form feed 字符。如果你的打印机送出纸张的命令不是用这个字符,你可以在/etc/printcap 文件中用ff 关键词指定。

11.4.2.2 控制header pages

如果选择要打印header pages,LPD 将会产生出long header,这将使用者、机器以及工作名称以大字打印在一整页上。这里有一个例子(kelly 从rose 这台印机打印outline 这个工作):

k ll ll

k l l

k l l

k k eeee l l y y

k k e e l l y y

k k eeeeee l l y y

kk k e l l y y

第40 页ll

FreeBSD 使用手册

k k e e l l y yy

k k eeee lll lll yyy y

y

y y

yyyy

t l i

t l

oooo u u ttttt l ii n nnn eeee

? o u u t l i nn n e e

? o u u t l i n n eeeeee

? o u u t l i n n e

? o u uu t t l i n n e e

oooo uuu u tt lll iii n n eeee

r rrr oooo ssss eeee

rr r o o s s e e

r o o ss eeeeee

r o o ss e

r o o s s e e

r oooo ssss eeee

Job: outline

Date: Sun Sep 17 11:04:58 1995

LPD 在打印完这些后会送出form feed 字符,使得真正的打印工作会以新的一页开始打印(除非你在/etc/printcap 文件为指定的打印机设置了sf (supress form feeds))。第41 页FreeBSD 使用手册

如果你希望LPD 打印short header,那么在/etc/printcap 文件里使用sb (short banner)即可。这样打出来的header page 看起来会像下面这个样子:

rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995

LPD 的默认值是先打印header page 再打印工作。如果你想要调换顺序,那么在/etc/printcap 里使用hl (header last) 即可。

11.4.2.3 统计打印

如果我们打印LPD 内建的header pages,那么在做统计时可能会遇到一个问题:headerpages 得免费提供。为什么?因为只有控制打印header page 的输出用过滤程序可以在打印header pages 时做打印统计,但是这个过滤程序却没有使用者及机器的资料或是一个统计资料文件,所以无法向使用者收钱。我们也不能在文字过滤程序或是转换用过滤程序(这些过滤程序可以直接取得使用者及机的资料)将统计结果都“多加上一页”,因为使用者可以用lpr -h 命令设置不要打印header page,而你可能就向这些使用者多收了打印header page 的费用。基本上,lpr -h 是许多较环保的使用者喜好的参数,你无法鼓励别人不去使用它。而修改每个过滤程序使它们都可以打出header page 也是不可行的(虽然这么做就可以正确的计费)。因为LPD 并不会把使用者有没有使用-h 的信息传给过滤程序,这么一来,即使使用者下了lpr -h 的命令要求不打印header page,它仍然会因为得到一张header page 而多收取了这个费用。

那么,有什么好办法呢?

你可以:

1. 接收LPD 的缺点,不收取打印header page 的费用。

2. 安装可以取代LPD 的程序,比如说LPRng 或是PLP。请参考标准Spooler 之外的选择

这一节所介绍其它可以替代LPD 的程序。

3. 撰写一个聪明的输出用过滤程序。在打印header page 及纯文本时,如果没有文字(输入用)过滤程序,那么一般的输出用过滤程序只做初始化打印机以及一些简单的字符转换工作。如果有设置文字过滤程序,那么LPD 只会用输出用过滤程序来做打印header page的工作。事实上,输出用过滤程序可以根据从LPD 产生的header page 资料来判断打印工作的使用者及机器而加以收费。唯一的问题就是输出用过滤程序会无法取得记录使用情况的记录文件(由af 关键词所指用的记录文件不会被传入),但是如果你的记录文件是固定的,你可以这个文件直接设置在输出用过滤程序里。如果你考虑要用这种方式来第42 页FreeBSD 使用手册处理的话,那么在/etc/printcap 文件使用sh (short header) 关键词使判断的工作较容易。上述的做法其实可能是很麻烦的,比较起来,使用者应该会较感谢让打印header page免费的管理者。

# Check arguments

#

11.4.2.4 在postscript 打印机上打印header pages

前面提到LPD 可以为打印机产生合适的纯文本header page,当然,因为PostScript 不能直接打印纯文本,所以LPD 产生header page 的工能在PostScript 打印机上是用不到的―或是几乎用不到。

一个直接产生header page 的方法是让所有的转换用过滤程序及文字过滤程序产生header page.过滤程序可以让使用者及机器的参数产生合适的header page.这个方法的缺点就是即使使用者以lpr -h 的方式送出工作,它们仍然会得到header pages.让我们来试试这个方法。下面的script 可以接收三个参数(使用者名称、机器名称以及工作名称)并产生PostScript 打印机能打印的header page:

#!/bin/sh

#

# make-ps-header - make a PostScript header page on stdout

# Installed in /usr/local/libexec/make-ps-header

#

#

# These are PostScript units (72 to the inch). Modify for A4 or

# whatever size paper you are using:

#

page_width=612

page_height=792

border=72

#

第43 页if [ $# -ne 3 ]; then

exit 1

fi

#

#

user=$1

host=$2

job=$3

date=‘date‘

#

#

exec cat

%!PS

%

%

save

%

%

$border $border moveto

FreeBSD 使用手册

echo “Usage: ‘basename $0‘ ” 1&2

# Save these, mostly for readability in the PostScript, below.

# Send the PostScript code to stdout.

% Make sure we do not interfere with user’s job that will follow

% Make a thick, unpleasant border around the edge of the paper.

$page_width $border 2 mul sub 0 rlineto

0 $page_height $border 2 mul sub rlineto

第44 页%

%

($user) show

%

%

/y 200 def

[ (Job:) (Host:) (Date:) ] {

forall

/y 200 def

[ ($job) ($host) ($date) ] {

FreeBSD 使用手册

currentscreen 3 -1 roll pop 100 3 1 roll setscreen

$border 2 mul $page_width sub 0 rlineto closepath

0.8 setgray 10 setlinewidth stroke 0 setgray

% Display user’s login name, nice and large and prominent

/Helvetica-Bold findfont 64 scalefont setfont

$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto

% Now show the boring particulars

/Helvetica findfont 14 scalefont setfont

200 y moveto show /y y 18 sub def }

/Helvetica-Bold findfont 14 scalefont s

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有