我正在使用VMware 9.0运行虚拟机。我通过VM中的“设置”选项卡添加了打印机。为了看到我的打印机在我的虚拟机上可用,我写了一个小程序:
import java.io.PrintStream;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
public class ShowPrinter {
public static void main(String[] args) {
PrintService lookupDefaultPrintService = PrintServiceLookup.lookupDefaultPrintService();
if (lookupDefaultPrintService != null)
System.out.println("default: " + lookupDefaultPrintService.getName());
else {
System.out.println("default: null");
}
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService service : services)
if (service != null)
System.out.println("- " + service.getName());
else
System.out.println("- null");
}
}
这很好用,我列出了一些打印机(包括我想要使用的打印机)。我写了一个小程序,应该打印一些东西:
package virtualMachinePrinter;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocFlavor.INPUT_STREAM;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
public class MyPrinter {
public static void main(String[] args) throws IOException {
File file = new File("C:/temp/printtest.txt");
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
DocPrintJob job = service.createPrintJob();
Doc doc = new SimpleDoc(inputStream, flavor, null);
try {
job.print(doc, null);
} catch (PrintException e) {
e.printStackTrace();
}
inputStream.close();
System.out.println("Printing done...");
}
}
在我的本地机器上运行良好,如果我更改默认打印机,它会打印到它。在虚拟机上,这不符合预期。 XPS文档编写器甚至没有启动。如果我尝试使用pdf-printer,页面设置至少打开(但没有打印)。如果我在Tomcat 7上的Web应用程序中启动上面的小程序,它不会打印任何内容。与使用哪个默认打印机无关。在这两种情况下,打印顺序都会添加到打印队列中。但只有在Tomcat之外才会打印出来。在Tomcat里面什么都没打印出来。我在Tomcat中没有使用安全管理器。
答案 0 :(得分:0)
两个动作解决了这个问题: 1.我不得不使用32位版本的Java。这解决了使用XPS文档编写器打印的问题。 我不得不更新我的打印机驱动程序。这解决了使用打印机打印的问题。