1

我用java编写了下面的代码来打印一个简单的文本文件,

import java.io.FileInputStream;
import java.io.IOException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
public class PrintImage {
  static public void main(String args[]) throws Exception {
    try {
      PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
      pras.add(new Copies(1));
/*      PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII.AUTOSENSE, pras);
      if (pss.length == 0)
        throw new RuntimeException("No printer services available.");*/
      PrintService ps =  PrintServiceLookup.lookupDefaultPrintService();
      System.out.println("Printing to " + ps);
      DocPrintJob job = ps.createPrintJob();
      FileInputStream fin = new FileInputStream("test.txt");
      Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII.AUTOSENSE, null);
      job.print(doc, pras);
      fin.close();
    } catch (IOException ie) {
      ie.printStackTrace();
System.out.println(ie.toString());
    } catch (PrintException pe) {
System.out.println(pe.toString());
      pe.printStackTrace();
    }
  }
}

我正在使用带有 JDK1.6.0_43 的 Red Hat Enterprise Server 6.0 作为开发平台。代码执行没有错误。而且我在 CUPS 中验证了作业在打印机队列中排队。但是打印机没有打印作业。我在 CUPS 日志中出现以下错误,

W [18/Apr/2013:15:09:24 +0530] [Job 15] 此文档不符合 Adob​​e 文档结构约定,可能无法正确打印!

但是相同的程序仅适用于 RHEL6.0 下的 pdf 文件。只有 txt、doc 文件不打印。

另一件事是相同的代码在 Ubuntu 12.04 和 RHEL4.7 下完美运行。但是使用 RHEL6.0 只能打印 pdf 文件。

请帮我解决问题...

4

0 回答 0