Finde kein PrintService der das Attribut PageRanges annimmt

Status
Nicht offen für weitere Antworten.

Bennsen

Mitglied
Moin,

ich habe folgendes Problem:

Ich habe ein gegebenes pdf-File, welches aus mehreren Seiten besteht. Nun möchte ich aber nur die erste Seite ausducken. Deswegen füge ich das Attribut PageRanges hinzu. Nun bekomme ich aber immer ne Exception, die mir sagt, dass kein passender PrintService gefunden wurde.

Wie kann das sein? Wenn ich einen printDialog aufrufen würde, dann würde er mir ja auch nur die eine Seite drucken. Also kann es ja nicht daran liegen, dass kein Drucker PageRanges unterstützt.

Würde mich freuen, wenn mir jemand helfen könnte. Vielleicht bin ich ja auch total auf dem Holzweg mit meinen Vorstellungen und Annahmen.

mein Code:

Code:
	PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
                aset.add(new PageRanges(1);

               DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;

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

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

		try {
			FileInputStream fis = new FileInputStream("xxl.pdf");
			
			Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.POSTSCRIPT,
					null);
		
			printJob.print(doc, aset); 
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch(PrintException e) {
			e.printStackTrace();
		}

P.S. Ich benutze Jdk1.4 und habe diverse Drucker ausprobiert
 

thE_29

Top Contributor
Ich hole mir das so zurück

Code:
pages = ( (javax.print.attribute.standard.PageRanges) pras.get(javax.print.attribute.standard.PageRanges.class)).getMembers();

Wobei pages[0] == ein int Array von der Länge 2! [0] = erste Seite, [1] = letzte Seite.
Eigentlich müsstest du das ja nur via add hinzufügen (vielleicht noch vorher mit remove rauslöschen)

pras == PrintRequestAttributeSet == bei dir also aset



Nachtrag: Vergiss das obere :D

Es gibt fast keine Drucker die PDFs oder PostScript als Typ annehmen! Von daher musst du es konvertieren oder sonstiges.

PPS: Mit dem kann man PDF drucken: http://www.pdfbox.org/
 

Bennsen

Mitglied
Danke für deine schnelle Antwort!


Ich frage mich aber, ob nicht der Sinn von:

Code:
PrintService[] ps = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.PDF, 
                                                             aset);

ist, dass ich nur PrintServices bekomme, die pdf unterstützen?

Es funktioniert ja auch ansonsten alles und wird wunderbar (und hübsch) gedruckt. Er druckt bloß leider immer alle Seiten.
 

Bennsen

Mitglied
bei folgendem Code bekomme ich eine ganze Menge an Druckern:
Code:
PrintService[] services = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.PDF, null);

Wir haben einige Printerqueues hier in der Firma, weil dass drucken mit Java halt früher nicht so einfach war.

So dass services.length zehn zurückliefert.
 

Bennsen

Mitglied
also zwei Fälle:

bei beiden gilt DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;

1.Fall aset = null:

er druckt wunderbar 2 Seiten


2. Fall aset.add(new PageRanges(1));

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0


Meiner Meinung nach kann es also nicht mit dem DocFlavor zusammenhängen, sondern kann nur daran liegen, dass ich PageRanges hinzufüge.
 

Bennsen

Mitglied
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
	at TestClass.button1(TestClass.java:89)
	at TestClass$1.actionPerformed(TestClass.java:45)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:5602)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
	at java.awt.Component.processEvent(Component.java:5367)
	at java.awt.Container.processEvent(Container.java:2010)
	at java.awt.Component.dispatchEventImpl(Component.java:4068)
	at java.awt.Container.dispatchEventImpl(Container.java:2068)
	at java.awt.Component.dispatchEvent(Component.java:3903)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
	at java.awt.Container.dispatchEventImpl(Container.java:2054)
	at java.awt.Window.dispatchEventImpl(Window.java:1791)
	at java.awt.Component.dispatchEvent(Component.java:3903)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
[/code]
 

Bennsen

Mitglied
ja richtig! Ich habe es unter Ubuntu 8.? und Mac Os X ausprobiert. Und es funktioniert bei beiden nicht.

Ist das vielleicht ein Problem von DocPrintJob, dass man nur alles oder nichts drucken kann?
 

thE_29

Top Contributor
Warum setzt du die Werte nicht erst nachher?

Code:
 PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;

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

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

      try {
         FileInputStream fis = new FileInputStream("xxl.pdf");
         
         Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.POSTSCRIPT,
               null);
        aset.add(new PageRanges(1);  //<-- erst jetzt hinzufügen
         printJob.print(doc, aset);
      }
      catch(FileNotFoundException e) {
         e.printStackTrace();
      }
      catch(PrintException e) {
         e.printStackTrace();
      }
 

Bennsen

Mitglied
habe ich auch schon probiert. Dann wird es aber wieder ignoriert und alle Seiten werden gedruckt.

P.S.:in dem Code war noch ein Fehler, bei dir Zeile 11:

sollte natürlich heißen:

Code:
Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.PDF, 
               null);

anstatt POSTSCRIPT! Macht aber auch keinen Unterschied.
 

thE_29

Top Contributor
Dh, wenn du die Seitenanzahl schon mitübergibst beim Lookup kriegste du keinen einzigen Service zurück, oder?
 

thE_29

Top Contributor
So, habs grad gefunden wie ich das habe

Code:
      int[][] pages = new int[1][2];
        pages[0][0] = 1;
        pages[0][1] = sizeCount;
        javax.print.attribute.standard.PageRanges range = new javax.print.attribute.
            standard.PageRanges(pages);
        aes.add(range);

Wobei sizeCount halt die Anzahl der zu druckenden Seiten ist.

Und wie ich sehe, habe ich den Wert erst NACH DEM Lookup hinzugefügt!
 

Bennsen

Mitglied
funzt das bei dir?

Ich habe das genauso übernommen mit pageCount=1 und bekomme trotzdem zwei Seiten ausgedruckt.

Kann das noch irgendetwas mit Druckereinstellungen zu tun haben?
 

Bennsen

Mitglied
Ich habe noch etwas interessantes in der Java-Doku gefunden:

Class PageRanges is a printing attribute class,... The attribute is associated with print-stream pages, not application-numbered pages (for example, the page numbers found in the headers and or footers for certain word processing applications).

Vielleicht ist das einfach der Schlüssel zum Misserfolg!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Swing Finde Grund für NullPointerExeption nicht. AWT, Swing, JavaFX & SWT 2
M JavaFX Wo finde ich den Scene Builder? AWT, Swing, JavaFX & SWT 3
Z Java Draw -JFrame finde nicht die Mitte & höhe, breite AWT, Swing, JavaFX & SWT 7
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
M Swing finde den fehler nicht AWT, Swing, JavaFX & SWT 9
K mehrere JTextFields - wie finde ich die Cursor-Position? AWT, Swing, JavaFX & SWT 5
S Swing DnD: Wie finde ich heraus, von welcher Zelle aus im JTable der Drag gestartet wurde? AWT, Swing, JavaFX & SWT 3
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
S Um Insets erweiteter BorderLayoutManager oder "Wo finde ich den Quellcode?" AWT, Swing, JavaFX & SWT 2
P finde den Fehler im JTable nicht AWT, Swing, JavaFX & SWT 2
G Wo finde ich Icons zum runterladen AWT, Swing, JavaFX & SWT 3
N Wie finde ich den Pfad eines ImageIcons heraus? AWT, Swing, JavaFX & SWT 8
D Wo finde ich Informationen zu Swing AWT, Swing, JavaFX & SWT 2
clemson Finde den Fehler nicht AWT, Swing, JavaFX & SWT 7
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
P kein Scrollen nach affinertransformation bei mouse dragged AWT, Swing, JavaFX & SWT 2
Fridolin111 Der KeyListener Löst kein event aus AWT, Swing, JavaFX & SWT 6
F Kein JavaFX mehr im Eclipse Wizard AWT, Swing, JavaFX & SWT 1
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
D Kein Icon beim JTabbedPane AWT, Swing, JavaFX & SWT 1
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
krgewb Kein src-Verzeichnis AWT, Swing, JavaFX & SWT 1
A Swing CardLayout - kein Wechsel möglich AWT, Swing, JavaFX & SWT 5
Wurstkopp JavaFX JavaFX KeyEvent kein Zahlencode um unbekannte Mediatasten auszuwerten? AWT, Swing, JavaFX & SWT 0
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
F Gui weicht von Designpreview ab (kein fensterrahmen, andere größe) AWT, Swing, JavaFX & SWT 13
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
Seikuassi Swing JTextField nimmt kein Einfügen (Strg+V) an AWT, Swing, JavaFX & SWT 4
T JavaFX ControlsFX-Notification öffnet nicht wenn kein JavaFX-Fenster offen. AWT, Swing, JavaFX & SWT 1
M Kein Zeichnen der Figuren auf JPanel AWT, Swing, JavaFX & SWT 4
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
S Kein DnD in allen Java Applikationen AWT, Swing, JavaFX & SWT 5
D Event Handling "Plötzlich" kein mouseMoved-Event AWT, Swing, JavaFX & SWT 2
R Bitte kein Menü bei F10 AWT, Swing, JavaFX & SWT 9
M Kein resize nach Component.setVisible() AWT, Swing, JavaFX & SWT 2
T AWT Graphics G Kein Text erscheint warum? AWT, Swing, JavaFX & SWT 12
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
H TextArea zeigt kein Text an AWT, Swing, JavaFX & SWT 6
Y Kein GantChart in einem GridLayout AWT, Swing, JavaFX & SWT 5
D Event in Fenster ausgeben + Observer + kein Plan AWT, Swing, JavaFX & SWT 2
D JTable während edit kein update machen lassen AWT, Swing, JavaFX & SWT 2
M Swing Kein update bei simulierten HTML-Link AWT, Swing, JavaFX & SWT 4
S JTable erlaubt kein Komma um Dezimazahlen einzugeben..? AWT, Swing, JavaFX & SWT 2
S Swing jTextPaine kein Zeilenumbruch nach setText() AWT, Swing, JavaFX & SWT 9
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
T Editable ComboBox / kein Weiterspringen AWT, Swing, JavaFX & SWT 12
Spin Innere Klasse : kein static? AWT, Swing, JavaFX & SWT 8
G jpanel macht kein repaint AWT, Swing, JavaFX & SWT 2
V Kein Fokus für Key Bindings auf JPanel bzw JApplet AWT, Swing, JavaFX & SWT 2
G CellEditor - Kein "Textfeld" AWT, Swing, JavaFX & SWT 6
N JCalendar - Kein Datum auswählen AWT, Swing, JavaFX & SWT 3
E Hat Netbeans unter Linux kein Designer für Swing? AWT, Swing, JavaFX & SWT 3
@ JPanel: kein paintComponent() trotz repaint() AWT, Swing, JavaFX & SWT 4
W Kein MouseKlick-Event bei Bewegung AWT, Swing, JavaFX & SWT 2
B [JTable] kein Sortieren der versteckten Columns AWT, Swing, JavaFX & SWT 9
B kein MouseEvent bei zu schneller Bewegung der Maus AWT, Swing, JavaFX & SWT 7
N Threads kein neues Fenster erzeugen lassen AWT, Swing, JavaFX & SWT 4
A Komponente entfernen. Kein neuzeichnen nach validate() AWT, Swing, JavaFX & SWT 2
technolion FileDialog/keine Multi-Selektion vs. JFileCHooser/kein LaF AWT, Swing, JavaFX & SWT 2
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
M Problem mit verschachtelten Events und kein ausweg in sicht AWT, Swing, JavaFX & SWT 3
Z kriege kein paint AWT, Swing, JavaFX & SWT 13
B Kein Repaint während eines Prozesses. AWT, Swing, JavaFX & SWT 5
O JScrollPane beinhaltet JPanel mit null Layout kein Scrollen AWT, Swing, JavaFX & SWT 3
K jTable - kein repaint? AWT, Swing, JavaFX & SWT 9
D JDialog: kein Icon nach setResizeable(false) AWT, Swing, JavaFX & SWT 5
K Kein Header in JTable ! AWT, Swing, JavaFX & SWT 8
S Mouselistener erzeugt kein Event in einem Menuitem AWT, Swing, JavaFX & SWT 2
J Tabelle zeigt kein Header AWT, Swing, JavaFX & SWT 5
A Ich kann kein JInternalFrame anzeigen ! AWT, Swing, JavaFX & SWT 7
G für showInputDialog kein eigenes Icon auswählen AWT, Swing, JavaFX & SWT 6
R JTextField - setBackground - kein Effekt AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben