使用CUPS和热敏打印机打印postscript文档



我使用官方驱动程序在Ubuntu 12.04中安装了一个epson TM-T20。这是一台热敏打印机,我用的是80毫米纸。

我的问题是:当我打印图像(使用附言文档)时,它浪费了很多纸张,因为图像使用了大约5厘米,而在图像之前,打印机会发出25厘米的白纸。

我使用以下命令将文档发送到打印机:

lpr -P tm-t20 -o document.ps

打印机打印图像(200x200图像),但首先会发出大量未打印的纸张。

CUPS无法识别打印机(使用localhost:631上的web界面)。然后我使用以下程序安装它:

sudo lpadmin -p tm-t20 -E -v serial:/dev/ttyUSB0 -P /usr/share/ppd/epson-tm-t20-rastertotmt.ppd 

然后打印机出现在CUPS web界面中,我对其进行了配置(波特率、位奇偶校验等)。

当我发送一些文本时,打印机工作正常。

这是打印机的一部分ppd:

*DefaultPageRegion:RP80x297
*PageRegion RP80x297/Roll Paper 80 x 297 mm: "<</PageSize[204 841.8]/           ImagingBBox null>>setpagedevice"
*PageRegion RP58x297/Roll Paper 58 x 297 mm: "<</PageSize[141.7 841.8]/         ImagingBBox null>>setpagedevice"
*CloseUI: *PageRegion
*DefaultImageableArea: RP80x297
*ImageableArea RP80x297/Roll Paper 80 x 297 mm: "0 0 204 841.8"
*ImageableArea RP58x297/Roll Paper 58 x 297 mm: "0 0 141.7 841.8"
*DefaultPaperDimension: RP80x297
*PaperDimension RP80x297/Roll Paper 80 x 297 mm: "204 841.8"
*PaperDimension RP58x297/Roll Paper 58 x 297 mm: "141.7 841.8"

我想这种浪费纸张是因为ppd文件中出现了297毫米长的纸张。然后我尝试添加另一种配置,从297毫米改为100毫米,但问题仍然存在。

我还尝试将标记%%DocumentMedia添加到ps文件中,但同样的问题是:

%!PS-Adobe-3.0
%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
%%Title: yay.ps
%%CreationDate: Thu Sep 13 13:44:26 2012
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 14 14 215 215
%%
%%EndComments
%%DocumentMedia: Plain 72 72 0 white Plain 
%%BeginProlog
% Use own dictionary to avoid conflicts
10 dict begin
%%EndProlog
%%Page: 1 1
% Translate for offset
14.173228346456694 14.173228346456694 translate
% Translate to begin of first scanline
0 199.99999999999997 translate
199.99999999999997 -199.99999999999997 scale
% Image geometry
200 200 8
% Transformation matrix
[ 200 0 0 200 0 0 ]
% Strings to hold RGB-samples per scanline
/rstr 200 string def
/gstr 200 string def
/bstr 200 string def
{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
true 3
%%BeginData:        14759 ASCII Bytes

知道吗?

终于在经历了很多痛苦之后。我发现问题出在串行到USB的电缆上(为了将串行打印机连接到USB端口)。我尝试了两种不同的串行到USB电缆,但问题仍然存在,最后我得出结论,如果没有连接到"真正的"串行端口,打印机工作不稳定。我在带串行端口的PC上在相同的条件下测试了打印机,它工作得很完美,只需安装epson提供的驱动程序,并将chmod 777提供给/dev/ttyS0。在作业列表中,有时我会看到错误:"/usr/lib/cups/filter/pstopdf失败"。但打印机打印正常,好像没有出现错误。

为了让打印机工作,我必须使用chmod 777/dev/ttyUSB0(即使使用sudo运行命令)。

使用选项media=B8 ,我得到了可接受的结果(文本不在中心)

lp -d tm-t20 -o media=B8 document.ps

我也试过

lp -d tm-t20 -o media=Custom.80x90mm document.ps

但打印机无法打印,并且在cups网络界面上显示作业已完成。

如果我尝试

lp -d tm-t20 -o media=Custom.200x190 document.ps

打印机打印(没有正确居中,我想我需要尝试使用不同的值,直到得到所需的结果)。以点为单位的纸张尺寸在此网站中:http://paulbourke.net/dataformats/postscript/

打印机没有切纸,我不知道该怎么选择(打印并切纸)。

打印机接受的选项有:

lpoptions -p tm-t20 -l
PageSize/Media Size: *RP80x297 RP58x297 Custom.WIDTHxHEIGHT
Resolution/Resolution: *203x203dpi
TmtSpeed/Printing Speed: *Auto 1 2 3 4
TmtPaperReduction/Paper Reduction: Off Top *Bottom Both
TmtPaperSource/Paper Source: *DocFeedCut DocFeedNoCut DocNoFeedCut DocNoFeedNoCut PageFeedCut PageFeedNoCut PageNoFeedCut
TmtBuzzerControl/Buzzer: *Off Before After
TmtSoundPattern/Sound Pattern: *A B C D E
TmtBuzzerRepeat/Buzzer Repeat: *1 2 3 5
TmtDrawer1/Cash Drawer #1: *Off Before After

如何让打印机打印和切纸?我需要在控制台上完成,从自定义C++程序中使用它。如果你在Linux下对这种打印机有任何其他经验,请给我一些建议。我的目标是从C++程序中使用打印机,我没有找到快速的方法(直接向打印机发送ESC/POS命令,在Linux下没有官方文档),所以我在控制台上使用CUPS。

剪纸解决方案:

lp -d tm-t20 -o media=Custom.200x258 -o source=DocFeedCut document.ps

我不知道为什么它能工作,因为如选项所示,DocFeedCut是默认选项。

现在我将试着将文本正确居中。

相关内容

  • 没有找到相关文章

最新更新