通过CUPS打印收据-保持方向



我正在构建一个简单的POS系统,并有一台收据打印机。我已经基本完成了系统,但CUPS打印所有人像。这意味着,如果收据短于宽度,CUPS会将其横向发送到打印机,这看起来完全错误(并从收据的左手边夹住约60毫米(。

我的系统会创建一个PDF,然后将其发送到打印机。PDF生成正确,如何让CUPS停止旋转打印?

我看到了一些答案,比如确保文档完全符合预期的输入,但这对可变长度的收据不起作用。

我还尝试在打印时手动设置方向,并将其作为默认选项,但CUPS似乎忽略了任何旋转指令。

有问题的打印机是Seiko Instruments RP-D10。

打印机.conf

# Written by cupsd
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
NextPrinterId 2
<Printer RP-D10>
PrinterId 1
UUID urn:uuid:ec55ffd0-01c2-36cf-545c-84174ebae871
Info RP-D10
MakeModel SII RP-D10 (80mm)
DeviceURI usb://SII/RP-D10
State Idle
StateTime 1636338040
ConfigTime 1636338040
Type 53252
Accepting Yes
Shared Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
OpPolicy default
ErrorPolicy stop-printer
</Printer>

RP-D10.ppd

*FormatVersion:         "4.3"
*FileVersion:           "1.0"
*LanguageVersion:       English
*LanguageEncoding:      ISOLatin1
*PCFileName:            "sii_rpd10_80.ppd"
*Manufacturer:          "SII"
*Product:               "(RP-D10 (80mm))"
*1284DeviceID:          "MFG:SII;CMD:SII;MDL:RP-D10;CLS:PRINTER;"
*cupsVersion:           1.2
*cupsManualCopies:      True
*cupsModelNumber:       4
*cupsFilter:            "application/vnd.cups-raster 0 rastertosii"
*ModelName:             "RP-D10 (80mm)"
*ShortNickName:         "RP-D10 (80mm)"
*NickName:              "SII RP-D10 (80mm)"
*PSVersion:             "(3010.000) 550"
*LanguageLevel:         "3"
*ColorDevice:           False
*DefaultColorSpace:     Gray
*FileSystem:            False
*Throughput:            "1"
*LandscapeOrientation:  Plus90
*VariablePaperSize:     True
*TTRasterizer:          Type42

*% Print Quality
*OpenUI *PrintQuality/Print Quality: PickOne
*OrderDependency: 5 AnySetup *PrintQuality
*DefaultPrintQuality: Normal
*PrintQuality Normal/Normal mode: "<</cupsBitsPerColor 8/HWResolution [203 203]>>setpagedevice"
*PrintQuality Draft/Draft mode: "<</cupsBitsPerColor 8/HWResolution [101 101]>>setpagedevice"
*CloseUI: *PrintQuality

*OpenUI *PageSize/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageSize
*DefaultPageSize: X72MMY200MM
*PageSize X72MMY200MM/72mm * 200mm: "
<</PageSize[204 567]/ImagingBBox null>>
setpagedevice"
*PageSize X72MMY1000MM/72mm * 1000mm:   "
<</PageSize[204 2835]/ImagingBBox null>>
setpagedevice"
*PageSize A4/A4 reduced to 72mm:    "
<</HWResolution [69 69]/PageSize[595 842]/ImagingBBox null>>
setpagedevice"
*PageSize Letter/Letter reduced to 72mm:    "
<</HWResolution [67 67]/PageSize[612 792]/ImagingBBox null>>
setpagedevice"
*PageSize SELECTPAPERXXMM/Custom Paper Size(72mm * 297mm):  "
<</PageSize[204 842]/ImagingBBox null>>
setpagedevice"
*CloseUI: *PageSize

*OpenUI *PageRegion: PickOne
*OrderDependency: 10 AnySetup *PageRegion
*DefaultPageRegion: X72MMY200MM
*PageRegion X72MMY200MM/72mm * 200mm:   "
<</PageSize[204 567]/ImagingBBox null>>
setpagedevice"
*PageRegion X72MMY1000MM/72mm * 1000mm: "
<</PageSize[204 2835]/ImagingBBox null>>
setpagedevice"
*PageRegion A4/A4 reduced to 72mm:  "
<</HWResolution [69 69]/PageSize[595 842]/ImagingBBox null>>
setpagedevice"
*PageRegion Letter/Letter reduced to 72mm:  "
<</HWResolution [67 67]/PageSize[612 792]/ImagingBBox null>>
setpagedevice"
*PageRegion SELECTPAPERXXMM/Custom Paper Size(72m * 297mm): "
<</PageSize[204 842]/ImagingBBox null>>
setpagedevice"
*CloseUI: *PageRegion

*DefaultImageableArea:  X72MMY200MM
*ImageableArea X72MMY200MM:         "0.0 0.0 204.0 567.0"
*ImageableArea X72MMY1000MM:        "0.0 0.0 204.0 2835.0"
*ImageableArea A4:                  "0.0 0.0 595.0 842.0"
*ImageableArea Letter:              "0.0 0.0 612.0 792.0"
*ImageableArea SELECTPAPERXXMM: "0.0 0.0 204.0 842.0"

*DefaultPaperDimension: X72MMY200MM
*PaperDimension X72MMY200MM:        "204 567"
*PaperDimension X72MMY1000MM:       "204 2835"
*PaperDimension A4:                 "595 842"
*PaperDimension Letter:             "612 792"
*PaperDimension SELECTPAPERXXMM:    "204 842"

*MaxMediaWidth:  "204"
*MaxMediaHeight: "23219"
*HWMargins:  0 0 0 0
*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice"
*ParamCustomPageSize Width:        1 points 72 204
*ParamCustomPageSize Height:       2 points 72 23219
*ParamCustomPageSize WidthOffset:  3 points 0 0
*ParamCustomPageSize HeightOffset: 4 points 0 0
*ParamCustomPageSize Orientation:  5 int 0 0
*% Cut Mode
*OpenUI *PageCutMode/Cut Mode: PickOne
*DefaultPageCutMode: FullCutPage
*PageCutMode FullCutPage/Full Cut: ""
*PageCutMode PartialCutPage/Partial Cut: ""
*PageCutMode NoCutPage/No Cut: ""
*CloseUI: *PageCutMode
*% Print Density: PickOne
*OpenUI *PrintDensity/Print Density: PickOne
*DefaultPrintDensity: 100Percent
*PrintDensity 70Percent/70%: ""
*PrintDensity 80Percent/80%: ""
*PrintDensity 90Percent/90%: ""
*PrintDensity 100Percent/100%: ""
*PrintDensity 110Percent/110%: ""
*PrintDensity 120Percent/120%: ""
*PrintDensity 130Percent/130%: ""
*CloseUI: *PrintDensity
*% Cut Timing
*OpenUI *CutTiming/Cut Timing: PickOne
*DefaultCutTiming: Page
*CutTiming Page/Each Page: ""
*CutTiming Document/Each Document: ""
*CloseUI: *CutTiming
*% Blank Image
*OpenUI *BlankImage/Blank Image: PickOne
*OrderDependency: 10 AnySetup *BlankImage
*DefaultBlankImage: feed
*BlankImage feed/Feed: ""
*BlankImage nonfeed/Non feed: ""
*CloseUI: *BlankImage
*% Dither
*OpenUI *Dither/Dither Type: PickOne
*OrderDependency: 10 AnySetup *Dither
*DefaultDither: ditherScreen
*Dither ditherNone/None: ""
*Dither ditherScreen/Screen: ""
*Dither ditherErrDiff/Error Diffusion: ""
*CloseUI: *Dither
*% End

我遇到了完全相同的问题。cups似乎通过它的pdftopdf过滤器发送您的作业。这个过滤器然后在它认为必要的时候自动旋转页面。我找到了两种方法来解决这个问题:

  1. 使用-o nopdfAutoRotate打印选项,或者
  2. 用一个简单的shell脚本替换pdftopdf过滤器(在/usr/lib/cups/filter中(,该脚本只将stdin传递到stdout:
#!/bin/sh
cat -

最新更新