淘先锋技术网

首页 1 2 3 4 5 6 7

这一个条普通的打印命令:

gs -sDEVICE=ijs -sIjsServer=ijsgutenprint -dIjsUseOutputFD -sDeviceManufacturer="Canon" -sDeviceModel="bjc-MULTIPASS-MX420" -r600x600 -dNOPAUSE -dSAFER -sOutputFile="/dev/usb/lp0" /system/usr/share/ghostscript/examples/tiger.ps -c quit

在PC上看打印图片就比打印普通文档多了一步设置纸张类型,想来命令行也很简单,不过这差点成了压倒我的最后一根稻草。

第一个打印图片的例子是在这里找到的《hpijs_readme》:

$ gs -sDEVICE=ijs -sIjsServer=hpijs -dIjsUseOutputFD -sDeviceManufacturer="HEWLETT-PACKARD" \
  -sDeviceModel="DESKJET 990" -r300 -dNOPAUSE -dSAFER -sOutputFile="/dev/lp0" \
  -dDEVICEWIDTHPOINTS=288 -dDEVICEHEIGHTPOINTS=432 photo.ps -c quit

这让我学会了调整真实的纸张大小,在

重点是关于纸张类型这一步,hpijs给出的例子是这样确定的:

 -sIjsParams="Quality:Quality=n,Quality:ColorMode=n,Quality:MediaType=n,

               Quality:PenSet=n,Quality:FullBleed=n,PS:MediaPosition=n"

关于MediaType如下:

MediaType equals: 0=plain (default), 1=premium, 2=photo

很快验证是不可行的,测试前还没有抱多大希望,毕竟一个是hpijs一个ijsgutenprint,多少会有差异的。


下面就开始疯狂的Google关于ijsgutenprint如何设置纸张类型,在《blcmdl1_ijsgimpprint.》(gimpprint是gutenprint的前辈)找到这样一个例子:

gs -sDEVICE=ijs -sIjsServer=/usr/bin/ijsgimpprint 

-sDeviceManufacturer=EPSON -sDeviceModel=escp2-870 

-sOutputFile=/dev/lp0 

-sIjsParams='Quality=1440x720hq,MediaType=GlossyPhoto,Density=0.8,ImageType=2'

foo.ps


兴奋过后就是失望,无论如何测试输出的都是:

DEBUG: ijsgutenprint: Settings: Model bjc-MULTIPASS-MX420

DEBUG: ijsgutenprint: Settings: PageSize Letter

DEBUG: ijsgutenprint: Settings: MediaType Plain

DEBUG: ijsgutenprint: Settings: InputSlot Rear

DEBUG: ijsgutenprint: Settings: CDOuterDiameter 329

DEBUG: ijsgutenprint: Settings: CDInnerDiameter 121

DEBUG: ijsgutenprint: Settings: CDXAdjustment 0

DEBUG: ijsgutenprint: Settings: CDYAdjustment 0


后边的参数还用了ppd文件中的glossygold,glossypaper都没有任何效果。且一再尝试是否是在IjsParams设置的参数,依旧没有任何效果。倒是找到这些个文档《blcmdl7_gimpprint-mediatypes》文中详细叙述了Canon打印机支持的MediaType。再补充一点,还尝试了用cups打印,然后查看/var/log/cups/error_log文件看命令会是什么:

hostscript command line: 

gs -dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE -sDEVICE=cups -sstdout=%stderr -sOutputFile=%stdout -sMediaClass=Rear -sMediaType=GlossyPaper -r600x600 -dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842 -dcupsBitsPerColor=8 -dcupsColorOrder=0 -dcupsColorSpace=1 -dcupsRowFeed=2 -scupsPageSizeName=A4 -I/usr/share/cups/fonts -c -f -_


照做也没有任何的效果。

 

一整天疯狂的Google,尝试各种关键词,在我几乎绝望的时候我Google了这样的关键词《sIjsServer=ijsgutenprint GlossyPaper canon》,在google的仅有的一条搜索结果中《gimp-print-devel - SourceForge》找到了当初还并不确信的结果:

-dDEVICEWIDTHPOINTS=3D595 -dDEVICEHEIGHTPOINTS=3D842 -r360x360

-sProcessColorModel=3DDeviceRGB

-sIjsParams=3D"STP_VERSION=3D5.0.0-rc2,STP_InputSlot=3DStandard,STP_MediaTy=

pe=3DInkjet,STP_Brightness=3D1.000000,STP_Saturation=3D1.000000,STP_Contras=

t=3D1.000000,STP_Density=3D1.000000,STP_BlackDensity=3D1.000000,STP_CyanDen=

注明一点:gutenprint-ijs.5.2-stp_mediatype.xml文件名字。

我的最终结果是:-sIjsParams="STP_MediaType=GlossyPaper"

完全打印一个4x6寸照片的完整命令:

# mx428打印照片

 gs -sDEVICE=ijs -sIjsServer=ijsgutenprint -dIjsUseOutputFD -sDeviceManufacturer="Canon" -sDeviceModel="bjc-MULTIPASS-MX420" -r600x600 -sIjsParams="STP_MediaType=GlossyPaper" -dNOPAUSE -dSAFER -sOutputFile="/dev/usb/lp0" -dDEVICEWIDTHPOINTS=288 -dDEVICEHEIGHTPOINTS=432  photo.ps -c quit

Ijsgutenprint的输出信息也正常了:

DEBUG: ijsgutenprint: about to print

DEBUG: ijsgutenprint: Settings: Model bjc-MULTIPASS-MX420

DEBUG: ijsgutenprint: Settings: PageSize w288h432

DEBUG: ijsgutenprint: Settings: MediaType GlossyPaper

DEBUG: ijsgutenprint: Settings: InputSlot Rear

其它额外收获:《cropping-a-pdf-using-ghostscript-9-01》。

回头想想,如果早一点对gutenprint进行RTFC,也许问题也就没有那么难了。一直有一个思想就是遇到问题先找巨人,然后我站他肩膀上,这事就算ok了。这样做的结果是这一次成功的很快,但是到时候遇到相邻的一点新问题就有可能造成要找新的巨人。

这个问题至此结束。