我用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] 此文档不符合 Adobe 文档结构约定,可能无法正确打印!
但是相同的程序仅适用于 RHEL6.0 下的 pdf 文件。只有 txt、doc 文件不打印。
另一件事是相同的代码在 Ubuntu 12.04 和 RHEL4.7 下完美运行。但是使用 RHEL6.0 只能打印 pdf 文件。
请帮我解决问题...