您的打印机(即打印机驱动程序)和打印子系统(例如 Linux 中的 CUPS )必须支持并通常定义自定义介质尺寸。您可能想要检查您的媒体大小是否配置正确(请参见下面的代码)。
更重要的是- Java 打印 API需要以纵向方向定义和处理媒体!您在横向 ( )中错误地输入了可打印区域。实际打印的方向稍后width > height
由打印请求属性控制。OrientationRequested
如果要检查 Java 打印 API 识别的打印机和支持的介质尺寸,可以使用以下代码:
public class MediaTest {
public static void main(String[] args) {
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(
DocFlavor.SERVICE_FORMATTED.PRINTABLE, null);
for (PrintService printService : printServices) {
System.out.println(printService.getName());
Media[] supportedMedia = (Media[]) printService.getSupportedAttributeValues(
Media.class, DocFlavor.SERVICE_FORMATTED.PRINTABLE, null);
for (Media media : supportedMedia) {
if (media instanceof MediaSizeName) {
handleMediaSizeName((MediaSizeName) media);
}
}
}
}
private static void handleMediaSizeName(MediaSizeName mediaSizeName) {
StringBuilder builder = new StringBuilder(" " + mediaSizeName.toString());
MediaSize mediaSize = MediaSize.getMediaSizeForName(mediaSizeName);
if (mediaSize != null) {
float[] size = mediaSize.getSize(MediaSize.MM);
builder.append(" - ").append(size[0]).append("x").append(size[1]).append("mm");
}
System.out.println(builder.toString());
}
}