使用javax打印API打印到Brother QL-1100标签打印机时遇到问题。实际程序是用Kotlin编写的。
打印时出现此错误:
这是我的代码:
class Printer(private var sourceFolder : String) {
private val renderer: ImageRenderer = ImageRenderer()
private val docFlavor : DocFlavor = DocFlavor.INPUT_STREAM.PNG
private val printAtr : HashPrintRequestAttributeSet = HashPrintRequestAttributeSet()
private val printService : PrintService = PrintServiceLookup.lookupDefaultPrintService()
init {
printAtr.add(OrientationRequested.LANDSCAPE)
printAtr.add(MediaPrintableArea(0,0,100,40,MediaPrintableArea.MM))
printAtr.add(MediaSize.findMedia(102.toFloat(),40.toFloat(),MediaSize.MM))
}
fun print(guest: Guest, originalFilePath: String) {
val printableFile = createPngFromHTML(guest,originalFilePath)
val inputStream = FileInputStream(printableFile)
val docAtr : DocAttributeSet = HashDocAttributeSet()
val document : Doc = SimpleDoc(inputStream,docFlavor,docAtr) as Doc
printService.createPrintJob().print(document,printAtr)
cleanFinishedPrintFiles(printableFile)
}
}
我正在尝试将PNG文件打印到102mm宽,40mm长的标签上。
在“打印首选项”菜单中,“纸张尺寸”有许多不同的选择,但是如果我使用代码尝试获取所有受支持的尺寸,则不会获得“首选项”菜单中列出的所有尺寸。
使用代码:
val arr = printService.getSupportedAttributeValues(Media::class.java,null,null) as Array<*>
for(atr in arr) {
if(atr is MediaSizeName) {
println(atr)
}
}
输出:
17mm x 54mm
17mm x 87mm
23mm x 23mm
29mm x 42mm
29mm x 90mm
38mm x 90mm
39mm x 48mm
60mm x 86mm
62mm x 100mm
102mm x 51mm
102mm x 152mm
103mm x 164mm
12mm Dia
24mm Dia
58mm Dia
12mm
29mm
38mm
12mm x 2
12mm x 3
12mm x 4
215.9mm x 297mm
Standard Address Label
Large Address Label
Return Address Label
Shipping Label
Visitor Name Badge Label
File Folder Label
Hanging File Folder Label
Binder 1-1/4" - Spine
Binder 2" - Spine
CD/DVD Label
4.07" x 6.4" Large Shipping Label
7" Postage Label
8" Postage Label
4.07" x 8.3" Large Shipping Label
4.07" x 9.3" Large Shipping Label
有人对如何解决这个问题有任何想法吗?真的很令人沮丧吗。