Java打印:为我的打印机选择哪个DocFlavor?

Java打印:为我的打印机选择哪个DocFlavor?,java,printing,Java,Printing,我正在尝试在我的打印机佳能MB5000上用java打印打印文本文件。 它可以在Linux上工作,但不能在Windows上工作。 在windows上,支持以下文档样式: for (DocFlavor f : printService.getSupportedDocFlavors()){ System.out.println("media type : "+f.getMediaType()); System.out.println("m

我正在尝试在我的打印机佳能MB5000上用java打印打印文本文件。 它可以在Linux上工作,但不能在Windows上工作。 在windows上,支持以下文档样式:

for (DocFlavor f : printService.getSupportedDocFlavors()){
                System.out.println("media type : "+f.getMediaType());
                System.out.println("mime type : "+f.getMimeType());
            }
我得到:

media type : image
mime type : image/gif
media type : image
mime type : image/gif
media type : image
mime type : image/gif
media type : image
mime type : image/jpeg
media type : image
mime type : image/jpeg
media type : image
mime type : image/jpeg
media type : image
mime type : image/png
media type : image
mime type : image/png
media type : image
mime type : image/png
media type : application
mime type : application/x-java-jvm-local-objectref
media type : application
mime type : application/x-java-jvm-local-objectref
media type : application
mime type : application/octet-stream
media type : application
mime type : application/octet-stream
media type : application
mime type : application/octet-stream
我已尝试使用八位字节流打印:

    if (service != null){
        FileInputStream fis = new FileInputStream("c:/mytxt.txt");
        Doc pdfDoc = new SimpleDoc(fis, new DocFlavor.INPUT_STREAM ("application/octet-stream"), null);
        DocPrintJob printJob = service.createPrintJob();
        printJob.print(pdfDoc, new HashPrintRequestAttributeSet());
        fis.close();
    }
没有指纹。 如果我使用新的DocFlavor.INPUT\u流(“图像/jpeg”),并且如果我打印jpeg图像,它会工作。

为了能够打印文本文件(或PDF文件),我应该做些什么?

不确定,但我想可以通过application/x-java-jvm-local-objectref;class=“java.awt.print.Pageable”或
application/x-java-jvm-local-objectref;class=“java.awt.print.Printable”。也许对于pdf来说可以是类似重用的东西,或者如果不想添加外部依赖项,那么创建实现可打印和可分页接口的UDT。。。希望这能有所帮助。

您有没有碰巧看一下这本书?有很多预定义的DocFlavors以静态常量的形式出现,包括您提到的每种类型的常量,以及AUTOSENSE。是的,但我已经尝试过AUTOSENSE,它应该与八位字节流一起工作,但没有任何内容与AUTOSENSE一起打印,其他的呢?DocFlavor.INPUT\u STREAM.JPEG、DocFlavor.INPUT\u STREAM.PDF、DocFlavor.INPUT\u STREAM.TEXT\u PLAIN\u HOST?我也有同样的问题。你找到解决办法了吗?