Ghostscript
是个对 Linux 列印有著极大意义的程序. 大部份在 Unix 下列印的程序都会产生
PostScript, 而印表机的 PostScript 处理能力通常是价值 100 美元的选购配备.
但是 ghostscript 却是免费的, 而且它能将 PostScript 转成你的印表机所用的语言.
当它和你的 lpd
input filter 结合之后, 你就有了一部虚拟的 PostScript
印表机, 而且能够大幅简化你的生活.
Ghostscript 有两个版本. 商业版称为 Aladdin Ghostscript, 个人可以自由使用, 但是不能随著商业用的 Linux 发行版本散布. Aladdin Ghostscript 通常比免费的 ghostscript 领先一年左右; 举例来说, 它支持许多免费版尚未支持的彩色喷墨机.
免费版的 ghostscript 为 GNU Ghostscript, 其实就是较旧版的 Aladdin Ghostscript. (Aladdin 的这种安排值得我们赞赏; 应该有更多无法完全以 GPL 来散布原始码的软件厂商以这种方式支持自由软件 (free software).
无论你用
gs
做什么,
记得不要让它能够存取文档 (用 -dSAFER
选项). PostScript
是个具有完整功能的语言, 而一个恶意的 PostScript 程序可以让你吃足苦头.
再谈到 PDF, Adobe 的 Portable Document Format 实际上就是把 PostScript 更组织化, 加上一些扩充功能, 经过压缩的文档格式. Ghostscript 可以像处理 PostScript 般地处理 PDF. 所以你可能是你周遭第一个拥有具有处理 PDF 能力的印表机的人.
典型的作法是在你的 magic filter(假如你的厂商没有提供一个适合你用的, 我建议 apsfilter) 中使用 ghostscript, 但是如果为了除错, 直接执行通常会比较方便些.
gs -help
会简短地列出有用的选项以及所提供的驱动程序.
(注意这儿所列出的仅是编译进去的驱动程序, 而并非所有的驱动程序).
你可以用下面的方式执行 gs 来测试:
gs options -q -dSAFER -sOutputFile=/dev/lp1 test.ps
.
假如 gs 的输出不能让人满意, 还有一些办法.(事实上, 你可以做任何事, 因为你可以取得原始码).
位置, 大小, 还有影像在页面上的视觉比例是由 ghostscript 中的印表机驱动程序所控制的. 如果你发现列印出来太短, 太长或是大了两倍, 你可能会想要看一下驱动程序的原始模块并且调整任何所能想到的参数. 不幸的是每一个驱动程序都有不同的方式, 所以我也无法告诉你如何调整, 还好大部份的驱动程序都有还算清楚的注解.
大部份的非雷射印表机因为列印的点比较大, 故会导致印出来的图案太黑. 假使你遇到这个问题, 你应该使用自己的转换函数. 只要在 ghostscript 的 lib-dir 下建立如下的文档, 并在呼叫 gs 的时候将这个档名加在要列印的文档之前就可以了. 你可能会需要调整一下实际的值才能适合你的印表机. 较小的值会导致较亮的列印效果. 特别是当你的印表机使用 Floyd-Steinberg 演算法来混色 ( rasterize color ) 可能是比较好的选择.
---8<---- gamma.ps ----8<---
%!
%transfer functions for cyan magenta yellow black
{0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
---8<------------------8<---
你也可以调整这些值来补救印表机颜色上的问题. 假如你要这么做, 建议你可以用 ghostscript 内附的 colorcir.ps ( 在 examples/ 目录下 ) 做为测试页.
很多较新型的彩色喷墨印表机的驱动程序具备命令列选项, 或是有不同的 upp 驱动程序档来实做 gamma 及其它改变以让印表机适应不同类型的纸张. 在你用 Postscript 来修正问题之前, 应该先从这方面著手.