一台惠普MFP 1136w,使用了官网下载的linux驱动(没有使用IPP Anywhere默认配置的驱动,因为IPP的驱动只有300dpi,并且不能修改),并正确配置了其ppd。在cups网页中已经设置好了默认纸张尺寸为A4,但是实际打印总是打不满A4的幅面,下面空了1厘米多。排查了很久,终于从lpoptions中看出了端倪
# lpoptions -p HP_Laser_MFP_1136-1139_1188 -l
ColorModel/Color Mode: *Gray
Quality/Quality: *600dpi 1200dpi
secBrightness/Brightness Level: 0 10 20 30 40 *50 60 70 80 90 100
secContrast/Contrast Level: 0 10 20 30 40 *50 60 70 80 90 100
InputSlot/Paper Source: *Auto Manual
TonerSaveMode/Toner Save: Save *Standard
PageSize/Page Size: Letter Legal A4 Executive Folio JB5 B5-ISO A5 COM10 Monarch DL C5 Oficio_S PCard4x6
MediaType/Paper Type: *None Plain Thick Thin Bond Color Card Labels Preprinted Cotton Archive Recycled Envelope
JCLSkipBlankPages/Skip Blank Pages: *False True
JCLEdgeEnhance/Edge Enhancement: Off *Normal Maximum
这里PageSize一项,没有任何值打上了*,也就是说还没有设置默认值。如果在使用lp命令进行打印时,加上-o PageSize=A4,打印就正常了。同样,如果使用 lpoptions -o PageSize=A4 先配置好,再使用lp命令打印也是正常的。那么问题的根源就是在于,为什么cups网页配置的纸张尺寸,没有反映到 lptoptions 中?
通过搜索,得知 lpoptions 更改的配置项,会保存在 /etc/cups/lpoptions。而网页修改的配置项,会保存到 /etc/cups/ppd/打印机.ppd 。lpoptions 的设置直接影响了 lp 命令的打印效果。而网页中的配置项也可以在命令行通过 lpadmin 修改。
https://unix.stackexchange.com/questions/339205/setting-cups-defaults-with-lpoptions-vs-web-interface
继续在网上搜索时,得知了有 cupstestppd 这个命令可以检查ppd文件,并且设置纸张尺寸需要在PageSize、PageRegion、ImageableArea 、PaperDimension 四个地方均做配置
https://stackoverflow.com/questions/1028891/whats-the-easiest-way-to-add-custom-page-sizes-to-a-ppd
用 cupstestppd 检查hp提供的ppd,发现了如下的警告
# cupstestppd HP_Laser_1003_1008.ppd
HP_Laser_1003_1008.ppd: PASS
WARN Size "Folio" should be the Adobe standard name "FanFoldGermanLegal".
WARN Size "JB5" should be the Adobe standard name "B5".
WARN Size "B5-ISO" should be the Adobe standard name "ISOB5".
WARN Size "COM10" should be the Adobe standard name "Env10".
WARN Size "Monarch" should be the Adobe standard name "EnvMonarch".
WARN Size "DL" should be the Adobe standard name "EnvDL".
WARN Size "C5" should be the Adobe standard name "EnvC5".
WARN Size "Oficio_S" should be the Adobe standard name "8.5x13.5".
WARN Size "PCard4x6" should be the Adobe standard name "4x6".
WARN DefaultCompression has no corresponding options.
ppd中的几个尺寸名称不符合Adobe标准。反正正常只用A4,就把ppd中几个不规范名称的尺寸都删掉了。然后用修改后的ppd重新配置一次打印机,lpoptions中的PageSize就可以和网页中的配置同步了