Guten Tag,
ich wollte heute versuchen mittels Java ein .doc Dokument zu drucken.
Also habe ich mich durch mehrere Tutorials im Internet gewühlt und konnte mir bis jetzt auch ganz gut mit der API und verschiedenen Beiträgen in so einigen Foren helfen.
Doch nun habe ich ein Problem, wo ich einfach nicht weiter komme.
Das Dokument wird angebglich gedruckt und es wird auch keine Exception geworfen, sogar mein Drucker schaltet von dem standby Modus in den "Bereit" Modus, aber es passiert sonst nichts.
Hier mal der Quellcode von dem wichtigen Teil.
Hier nochmal der ganze Code, vlt. hilft es ja.
Hier nochmal ein Bild von der Druckerverwaltung in Windows. Hier wird das Dokument auch in der Warteschlange angeführt und später auch als "wird gedruckt".

Ich hoffe ihr findet den Fehler und könnt mir so ein wenig weiterhelfen. Falls es wichtig sein sollte ist zu erwähnen, dass der Drucker ein Netzwerkdrucker ist.
Vielen Dank für eure Mühe
MfG Noxum
EDIT:
Hey,
ich habe gerade mal den Flavor auf "JPEG" gesetzt und es klappt tadenlos, Bilder werden sofort gedruckt.
Was bedeutet denn "AUTOSENSE" und muss ich für .doc Dateien womöglich etwas anderes nehmen ?
ich wollte heute versuchen mittels Java ein .doc Dokument zu drucken.
Also habe ich mich durch mehrere Tutorials im Internet gewühlt und konnte mir bis jetzt auch ganz gut mit der API und verschiedenen Beiträgen in so einigen Foren helfen.
Doch nun habe ich ein Problem, wo ich einfach nicht weiter komme.
Das Dokument wird angebglich gedruckt und es wird auch keine Exception geworfen, sogar mein Drucker schaltet von dem standby Modus in den "Bereit" Modus, aber es passiert sonst nichts.
Hier mal der Quellcode von dem wichtigen Teil.
Java:
public void printButton_ActionPerformed(ActionEvent evt) {
for(int a=0; a < list1.getItemCount();a++)
{
try{
FileInputStream fileStream = new FileInputStream(list1.getItem(a));
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob job = service.createPrintJob();
Doc doc = new SimpleDoc(fileStream, flavor,null);
job.print(doc,null);
}
catch(Throwable t)
{
list2.add(""+t.toString());
}
}
Hier nochmal der ganze Code, vlt. hilft es ja.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.print.*;
/**
*
* Beschreibung
*
* @version 1.0 vom 02.05.2012
* @author
*/
public class Druck extends Frame {
// Anfang Attribute
private Button addButton = new Button();
private List list1 = new List();
private Button deleteButton = new Button();
private Button printButton = new Button();
private List list2 = new List();
// Ende Attribute
public Druck(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { dispose(); }
});
int frameWidth = 595;
int frameHeight = 602;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setResizable(false);
Panel cp = new Panel(null);
add(cp);
// Anfang Komponenten
addButton.setBounds(448, 24, 97, 33);
addButton.setLabel("New document");
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
addButton_ActionPerformed(evt);
}
});
cp.add(addButton);
list1.setBounds(32, 24, 385, 153);
cp.add(list1);
deleteButton.setBounds(448, 80, 99, 33);
deleteButton.setLabel("Delete");
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
deleteButton_ActionPerformed(evt);
}
});
cp.add(deleteButton);
printButton.setBounds(448, 136, 99, 33);
printButton.setLabel("Print");
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
printButton_ActionPerformed(evt);
}
});
cp.add(printButton);
list2.setBounds(56, 200, 457, 361);
list2.setBackground(Color.BLACK);
list2.setFont(new Font("Arial Narrow", Font.PLAIN, 12));
list2.setForeground(Color.RED);
cp.add(list2);
// Ende Komponenten
setVisible(true);
list2.add("Fehlerconsole gestartet!");
}
// Anfang Methoden
public void addButton_ActionPerformed(ActionEvent evt) {
JFileChooser chooser = new JFileChooser();
chooser.showDialog(null,"Öffnen");
list2.add("JFileChooser wurde geöffnet.");
File tmpFile = chooser.getSelectedFile();
list1.add(tmpFile.getAbsolutePath());
list2.add("Datei wurde in die Liste gesetzt.");
}
public void deleteButton_ActionPerformed(ActionEvent evt) {
list1.removeAll();
list2.add("Alle Daten wurden aus der Liste gelöscht.");
}
public void printButton_ActionPerformed(ActionEvent evt) {
for(int a=0; a < list1.getItemCount();a++)
{
try{
FileInputStream fileStream = new FileInputStream(list1.getItem(a));
list2.add("FileStream erstellt");
DocFlavor formatStream = DocFlavor.INPUT_STREAM.AUTOSENSE;
list2.add("FormatStream erstellt");
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
list2.add("PrintService erstellt");
list2.add("Drucker: "+service.getName());
DocFlavor[] flavors = service.getSupportedDocFlavors();
for(int i=0;i < flavors.length;i++)
list2.add("* "+flavors[i].toString());
DocPrintJob job = service.createPrintJob();
list2.add("DocPrintJob erstellt");
Doc doc = new SimpleDoc(fileStream, formatStream,null);
list2.add("Doc erstellt");
job.print(doc,null);
list2.add("Job wurde gedruckt");
}
catch(Exception t)
{
list2.add("Fehler wurden festgestellt:");
list2.add(""+t.toString());
}
}
}
// Ende Methoden
public static void main(String[] args) {
new Druck("Druck");
}
}
Hier nochmal ein Bild von der Druckerverwaltung in Windows. Hier wird das Dokument auch in der Warteschlange angeführt und später auch als "wird gedruckt".

Ich hoffe ihr findet den Fehler und könnt mir so ein wenig weiterhelfen. Falls es wichtig sein sollte ist zu erwähnen, dass der Drucker ein Netzwerkdrucker ist.
Vielen Dank für eure Mühe
MfG Noxum
EDIT:
Hey,
ich habe gerade mal den Flavor auf "JPEG" gesetzt und es klappt tadenlos, Bilder werden sofort gedruckt.
Was bedeutet denn "AUTOSENSE" und muss ich für .doc Dateien womöglich etwas anderes nehmen ?
Zuletzt bearbeitet: