2009-09-17 96 views
1

我已經編寫了以Java編程方式運行打印機的代碼。我必須設置docflavor的值來打印.txt文件。當我將它設置爲INPUT_STREAM.TEXT_PLAIN_UTF_8並運行我的程序在Linux上,它打印文本文件。但是當我運行相同的代碼windows.It不能打印文本文件。它只打印jpeg格式文件。我正在使用HP Deskjet F735打印機。以下是我的代碼。如何在Java中爲PrintService設置DocFlavor

  DocFlavor docflavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_8; 

      PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet(); 

      attr_set.add(new Copies(2)); 

    PrintService[] service = PrintServiceLookup.lookupPrintServices(docflavor, attr_set); 

      if (service.length==0) { 
        JOptionPane.showMessageDialog(null, "No Printer Selected"); 
       } 

      else if (service.length > 0) { 
       System.out.println("Selected printer is " + service[0].getName()); 

        DocPrintJob pj = service[0].createPrintJob(); 
        { 
         PrintService ps = pj.getPrintService(); 
         FileInputStream fis = null; 
         try { 
          File file = new File("/home/ignu/Desktop/newfile"); 
          fis = new FileInputStream(file); 
          Doc doc = new SimpleDoc(fis, docflavor, null); 
          pj.print(doc, attr_set); 

回答

0

PrintService.getSupportedDocFlavors對您有何幫助?也許UTF-8不受支持?

編輯:

「text/plain的;字符集= UTF-8」 似乎是不受支持的。嘗試

DocFlavor docflavor = new DocFlavor.INPUT_STREAM ("application/octet-stream") 

代替。

+0

屬性:顏色支持 屬性:打印機被接受的作業 屬性:排隊的作業數 屬性:打印機名稱 味:圖像/ GIF; class =「[B」 flavor:image/gif; class =「java.io.InputStream」 flavor:image/gif; class =「java.net.URL」 flavor:image/jpeg; class =「[B」 flavor:image/jpeg; class =「java.io.InputStream」 flavor:image/jpeg; class =「java.net.URL」 flavor:application/octet-stream; class =「[B」 flavor:application/octet-stream; class =「java.net.URL」 flavor:application/octet-stream; class =「java.io.InputStream」 – 2009-09-17 11:46:32

+0

不工作,我改變了你的建議,但仍然沒有打印活動。 – 2009-09-17 13:33:45

+0

在Linux上看到相同的輸出會很高興。據我瞭解你的Windows打印機不能打印文本文件。 – kaboom 2009-09-17 13:48:33

相關問題