2011-11-24 67 views
1

我想建立一个Java小程序打印PDF文件,并将其发送到标签打印机而不是默认的。我探讨了desktop.print,但无法确定如何指定打印机。的Java Applet PDF打印

这是我的代码,我试图寻找解决方案,但已经结束卡住。我已签署的小程序,它给了我它的错误只是说应用程序错误0

import java.io.*; 
import java.net.*; 
import javax.swing.*; 
import java.awt.print.*; 
import javax.print.*; 
import javax.print.attribute.*; 
import javax.print.attribute.standard.*; 


public class printPDF extends JApplet { 

    public void init(){ 
      String uri = System.getProperty("user.home") + "\\jobbase\\print.pdf"; 

      DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF; 


      PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
      aset.add(new PrinterName("label", null)); 
      aset.add(new Copies(1)); 


      PrintService[] pservices = 
        PrintServiceLookup.lookupPrintServices(flavor, aset); 

      if (pservices.length > 0) { 

        DocPrintJob printJob = pservices[0].createPrintJob(); 

        try{ 
         FileInputStream fis = new FileInputStream(uri); 
         Doc doc = new SimpleDoc(fis, flavor, null); 


         try { 
          printJob.print(doc, aset); 
         } catch (PrintException e) { 
          System.err.println(e); 
         } 

         } catch(IOException ioe){ 
          ioe.printStackTrace(System.out); 
        } 
      } else { 
        System.err.println("No suitable printers"); 
      } 
    } 
} 

回答

-1

如果你知道你可以做到这一点的打印机的名称。在一个客户端,我需要静音打印:如果一个名为appprinter打印机存在,我用它,如果不是我用默认的尝试。这工作得很好。

对于印刷我用ICEPDF

凯特:感谢您的建议,说实话IcePDF是相当直接的,这个例子是包含在源代码中,你可以从上面的链接下载。为了获得所需的PrinterService(aka打印机),您可以删除键盘所请求的所有用户输入,并只使用具有所需名称的用户输入。

所以,在版本5.0.5:[安装文件夹] /examples/printservices/PrintService.java的PrintService的

  1. 删除用户的选择:线106至155
  2. 添加代替:

    PrintService selectedService=null; 
    for (int j=0;j<services.length;j++) { 
        if ("myprintername".equalsIgnoreCase(services[j].getName())) { 
         selectedService=aux[j]; 
        } 
    } 
    

现在希望它更有用。

此致敬礼。

+0

显示代码,使这个有用的答案。就目前而言,你可以说它可以完成,但并未显示如何。 –