Drucken ohne Dialog

max514

Bekanntes Mitglied
Hey Leute ich hversuch gerade ein Dokument auszudrucken ohne einen Dialog ich hab jetzt den folgenden code gefunden aber jedes mal wenn ich meinen drucker übergeben will kommt die folgende Fehlermeldung und ich weiß nicht warum und hab leider auch nicht wirklich ne antwort im internet gefunden ??

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/jnlp/PrintService
at auftragsverwaltung.Drucken.findPrintService(Drucken.java:76)
at auftragsverwaltung.Drucken.printSomething(Drucken.java:32)

Java:
package auftragsverwaltung;

import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import static java.awt.print.Printable.NO_SUCH_PAGE;
import static java.awt.print.Printable.PAGE_EXISTS;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jnlp.PrintService;

/**
*
* @author xom
*/
public class Drucken implements Printable{
   
   
   
    public void printSomething(String printerName)
    {
        //find the printService of name printerName
        PrintService ps = findPrintService(printerName);                                   
        //create a printerJob
        PrinterJob job = PrinterJob.getPrinterJob();           
        try {
            //set the printService found (should be tested)
            job.setPrintService((javax.print.PrintService) ps);
        } catch (PrinterException ex) {
            Logger.getLogger(Drucken.class.getName()).log(Level.SEVERE, null, ex);
        }
        //set the printable (an object with the print method that can be called by "job.print")
        job.setPrintable(this);               
        try {
            //call je print method of the Printable object
            job.print();
        } catch (PrinterException ex) {
            Logger.getLogger(Drucken.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   
   
    @Override
    public int print(Graphics g, PageFormat pf, int page) throws PrinterException
    {
        if (page > 0) { /* We have only one page, and 'page' is zero-based */
            return NO_SUCH_PAGE;
        }

        /* User (0,0) is typically outside the imageable area, so we must
        * translate by the X and Y values in the PageFormat to avoid clipping
        */
        Graphics2D g2d = (Graphics2D)g;
        g2d.translate(pf.getImageableX(), pf.getImageableY());
        /* Now we perform our rendering */

        g.setFont(new Font("Roman", 0, 8));
        g.drawString("Hello world !", 0, 10);

        return PAGE_EXISTS;
    }
    public PrintService findPrintService(String printerName)
    {
        for (javax.print.PrintService service : PrinterJob.lookupPrintServices())
        {
            if (service.getName().equalsIgnoreCase(printerName))
                return (PrintService) service;
        }

        return null;
    }
   
   
}

das ist der code wie ich den Druckauftrag aufrufe

Java:
private void Stornieren3ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        Drucken d = new Drucken();
        d.printSomething("EPSON XP-215 217 Series");
    }                                          

    private void Ok1ActionPerformed(java.awt.event.ActionEvent evt) {                                   
        PrintService [] ps = PrinterJob.lookupPrintServices();
        for (int count = 0; count < ps.length; ++count)
        {
            System.out.println (ps [count].getName());
           
        }
    }

die zweite Methode war um rauszufinden wie der drucker genau heißt (hat auch funktioniert)
als ich dann versucht hab den code so zu ändern hat er mir one not geöffnet ?

Java:
private void Ok1ActionPerformed(java.awt.event.ActionEvent evt) {                                    
        
        Drucken d = new Drucken();
        PrintService [] ps = PrinterJob.lookupPrintServices();
        for (int count = 0; count < 1; ++count)
        {
            System.out.println (ps [count].getName());
            d.printSomething(ps [count].getName());
            
        }
    }
 
Zuletzt bearbeitet:

Zurück
Oben