2011-11-24 65 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

顯示代碼,使這個有用的答案。就目前而言,你可以說它可以完成,但並未顯示如何。 –