Printer is not accepting job

MetroAffe

Mitglied
javax.print.PrintException: Printer is not accepting job.

Die Exception kommt immer wenn während des Druckens eines Auftrags ein weiterer gesendet wird ...

Wie geht man da nun vor bzw was macht man dagegen?
 
Wie druckst du genau ein bißchen mehr info wäre hilfreich. Bei mir tritt so eine Exception nicht auf vielleicht kann ich helfen wenn ich des Problem nachstellen kann.
Aber mal so nach 10 sekunden googlen:
Removing and adding the printer fixes the problem as mentioned in the bug as a workaround. It worked for me.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6525150

Wenn es der Fehler ist...
 
Zuletzt bearbeitet:
Java:
	String path;
	String printName;
	int copies;

[....]

PdfDecoder decodePdf = new PdfDecoder(true);

				try {
					decodePdf.openPdfFile(path);
					FontMappings.setFontReplacements();
				} catch (Exception e) {
					e.printStackTrace();
				}

				PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
				JobName jobName = new JobName(printName, null);
				attributeSet.add(jobName);
				attributeSet.add(new Copies(copies));
				System.out.println(anzahl);

				decodePdf.setPrintAutoRotateAndCenter(true);
				decodePdf.setPrintPageScalingMode(PrinterOptions.PAGE_SCALING_NONE);

				try {
					decodePdf.setPagePrintRange(1, decodePdf.getPageCount());
				} catch (PdfException e) {
					e.printStackTrace();
				}

				PrintService[] services = PrintServiceLookup.lookupPrintServices(DocFlavor.SERVICE_FORMATTED.PAGEABLE, attributeSet);

				for (PrintService s : services) {
					System.out.println(s.getName());
				}

				PrintService printingDevice = null;
				for (PrintService s : services) {
					if (s.getName().equals("Canon MP560 series Printer")) {
						printingDevice = s;
					}
				}

				PdfBook pdfBook = new PdfBook(decodePdf, printingDevice, attributeSet);
				SimpleDoc doc = new SimpleDoc(pdfBook, DocFlavor.SERVICE_FORMATTED.PAGEABLE, null);

				DocPrintJob printJob = printingDevice.createPrintJob();

				try {
					//printJob.addPrintJobListener(new PDFPrintJobListener());
					printJob.print(doc, attributeSet);

				} catch (PrintException e) {
					e.printStackTrace();
				}
[....]
 
Bin grad nochmal alles durchgegangen und habe festgestellt, das die Druckaufträge die gesendet werden eine Größe von ca 50 MB haben. Kann es sein das der Drucker dann beim Drucken zusätzlich seinen Speicher beansprucht und somit das was dann noch an Druckaufträgen reinkommt blockiert ... weil halt kein Speicher mehr zur Verfügung steht****?

Kann aber natürlich auch sein das Windows immer erst den nächsten Auftrag sendet wenn der alte abgeschlossen ist ... das weiß ich nicht
 
Vielleicht wäre es eine Möglichkeit wenn du die Exeption fängst einen Sleep machst und für eine Sekunde wartest überprüfst ob er wieder die Exeption schmeißt des ganze dann rekursiv solange ausführen bis er den Job akzeptiert des ganze natürlich ausgelagert in einem eigenem Thread.

50 MB ist natürlich schon sehr viel gut möglich das da der Speicher voll läuft und der Drucker deshalb den Job nicht aktzeptiert
 
Hast du auch noch ne andere Idee/Lösung die evtl. etwas mehr auf Performance aus ist?

Also an der Dateigröße kann es schon mal nicht liegen - habe es jetzt nämlich auch mit einer Leeren Seite Versucht (wenige Bytes) .... LEIDER das selbe Problem. Ich weiß einfach nicht warum - das ist so sinnlos ;(
 
Also hab es jetzt mal mit einem "offiziellen" Code versucht - immer noch das selbe Problem

Wenn es vlt mal jemand ausprobieren könnte ... dann könnte ich nämlich Sichergehen das es an meinem Drucker/Druckertreiber liegt

http://files.idrsolutions.com/samplecode/org/jpedal/examples/printing/SilentPrint.java.html

Einfach "debugCode" auf true und den Anweisungen folgen (bzw. mit 2 Argumenten starten)

Wenn ich es 5 mal in einem Abstand von 2 Sekunden Drucke gibt es zwar keine Exception allerdings Druckt er es nur 1 mal ... eben das vom ersten Auftrag - der Rest wird vermutlich nicht aktzepiert
 
Kannst du mal den gesamten Stacktrace angehängen? Der cause alleine ist nicht hilfreich. Schon einmal versucht zu debuggen?
 
Java:
javax.print.PrintException: Printer is not accepting job.
	at sun.print.Win32PrintJob.print(Unknown Source)
	at de.Lucas.Rechnung.SilentPrint.printPages(SilentPrint.java:222)
	at de.Lucas.Rechnung.SilentPrint.decodeAndPrintFile(SilentPrint.java:177)
	at de.Lucas.Rechnung.SilentPrint.<init>(SilentPrint.java:78)
	at de.Lucas.Rechnung.SilentPrint.main(SilentPrint.java:418)

Die stelle an der die Exception geworfen wird

Java:
        try {
            printJob.print(doc, attributes);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
 
Auch das ist nicht hilfreich :D. Damit seh ich im Stacktrace an welcher Stelle die Exception in deinem Code auftritt. Viel wichtiger ist wo tritt die Exception in der "print" Methode auf. Also viel tiefer.
 
Zurück