# Wieder mal drucken



## catarock (13. Oktober 2004)

Hallo Leute,
habe mich jetzt schon intensiv mit dem Thema Drucken beschaeftigt, jedoch macht mir mein Programm immer noch einen Strich durch die Rechnung.
Ich will eine Textdatei ausdrucken, es erscheint in der ShortCutLeiste auch mal kurz das DruckerSymbol,aber das wars dann auch. Keine Tätigkeit des Druckers.
Wenn ich mir "service" ausgeben lasse, schreibt er: Win 32 Printer: Lexmark Z53 usw.
Das sollte doch heissen, dass er "Ihn" auch findet und anspricht, oder?
Vielleicht kann mir ja einer/-e sagen wo mein Fehler liegt. Ich dreh noch am Rad.
Vielen Dank im Vorraus!
Hier mein Code:

//Datei als Datenquelle einlesen.
   FileInputStream textStream = null;
   try  {
        textStream = new FileInputStream("c:/Mauerwerksbemessung.txt") ;
    } catch(FileNotFoundException ex)  {
           FehlerLabel.setText(ex.toString());
         }

//Datenformat erzeugen.
DocFlavor format = DocFlavor.INPUT_STREAM.AUTOSENSE;

//Dokument erzeugen.
Doc myDoc = new SimpleDoc(textStream, format, null) ;

//Drucker suchen
     PrintService service = PrintServiceLookup.lookupDefaultPrintService();
//Druckauftrag für einen Drucker erzeugen und Dokument drucken.
     DocPrintJob job = service.createPrintJob() ;
        try  {
                job.print(myDoc, null);
        } catch(PrintException ex)  {
             FehlerLabel.setText(ex.toString());
           }
}

Gruss Cata


----------



## Bernd1984 (14. Oktober 2004)

habe dein Code-Schnipsel in eine neue Klasse gesteckt und die angegebene Datei wird auf dem Standartdrucker (bei mir Laserdrucker) problemlos gedruckt.

    Der Code ist Ok.

    Ist die Datei eine reine ASCII-Textdatei?


    Bernd1984


```
/*
     * Created on 14.10.2004
     */
    package test;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    
    import javax.print.Doc;
    import javax.print.DocFlavor;
    import javax.print.DocPrintJob;
    import javax.print.PrintException;
    import javax.print.PrintService;
    import javax.print.PrintServiceLookup;
    import javax.print.SimpleDoc;
    
    public class drucken {
    
    
    	public static void main(String[] args) 
    	{
    //		Datei als Datenquelle einlesen.
    		FileInputStream textStream = null;
    		try {
    		textStream = new FileInputStream("c:/test.txt") ;
    		} catch(FileNotFoundException ex) {
    			  ex.printStackTrace();
    		}
    
    //		Datenformat erzeugen.
    		DocFlavor format = DocFlavor.INPUT_STREAM.AUTOSENSE;
    
    //		Dokument erzeugen.
    		Doc myDoc = new SimpleDoc(textStream, format, null) ;
    
    //		Drucker suchen
    		PrintService service = PrintServiceLookup.lookupDefaultPrintService();
    //		Druckauftrag für einen Drucker erzeugen und Dokument drucken.
    		DocPrintJob job = service.createPrintJob() ;
    		try {
    		job.print(myDoc, null);
    		} catch(PrintException ex) {
    			  ex.printStackTrace();
    		}
    	}
    }
```
 
  PS: Code-Beispiele sollten zur besseren Lesbarkeit in den Code-Tag ("#" über der Texteingabe) geschrieben werden.


----------



## catarock (14. Oktober 2004)

Danke erst mal fuer die Antwort und den Hinweis mit dem CodeTag, sollte wohl mal die Netiquette lesen.
Habe das ganze nicht als Klasse sondern als Methode programmiert, sollte doch eigentlich kein Problem darstellen, oder?
Und ja die auszugebende Datei ist eine reine Textdatei, die ich vorher mit einem FileWriter erstellt habe, in der ich die Bemessungsergebnisse meines Programms wahlweise auf dem Bildschirm oder Drucker ausgeben kann, sorry will.
Und wie gesagt, unten rechts, neben der Uhr, ist kurzzeitig das Druckersymbol zu sehen, jedoch tut sich ansonsten nichts. Der angschlossene Drucker ist der einzige und dementsprechend auch der Standarddrucker. Habe es auch mal an meinem Laptop probiert, selbes Ergebnis.
Bekomme noch die Krise, vieleicht findet ja jemand was und kann mir weiterhelfen.
Vielen Dank im Vorraus
Gruss Cata



```
public void Drucken()  { 
// Datei als Datenquelle einlesen.
FileInputStream textStream = null;
  try { 
      textStream = new FileInputStream("c:/Mauerwerksbemessung.txt");
  } 
  catch (FileNotFoundException ex) {
      FehlerLabel.setText(ex.toString());
  }
// Datenformat erzeugen.
  DocFlavor format = DocFlavor.INPUT_STREAM.AUTOSENSE; 
// Dokument erzeugen. 
  Doc myDoc = new SimpleDoc(textStream, format, null); 
// Default Drucker suchen.
  PrintService service = PrintServiceLookup.lookupDefaultPrintService();
// Druckauftrag für einen Drucker erzeugen und Dokument drucken. 
  DocPrintJob job = service.createPrintJob(); 
  try { 
       job.print(myDoc, null); 
  }  
  catch (PrintException ex) { 
       FehlerLabel.setText(ex.toString()); 
  } 
}
```


----------



## Bernd1984 (14. Oktober 2004)

Probier doch mal die Klasse die ich gepostet habe,  um zu sehen, ob es an deine Methode liegt oder am Rechner.


----------



## catarock (14. Oktober 2004)

wie rufe ich denn diese Klasse aus meinem Programm heraus auf. stehe wahrscheinlich wieder mal voll im Wald. Sorry fuer die Frage aber momentan qualmts nur noch im Kopf.
Gruss Cata


----------



## Bernd1984 (15. Oktober 2004)

Von deinem Programm garnicht, es ist ja ein eigenständiges Programm. Einfach die main starten, so wie du auch dein Programm startest. 

  Du musst evtl. das package anpassen, je nachdem, wo du das Programm speicherst.

    Welche Entwicklungsumgebung benutzt du denn?


----------



## catarock (15. Oktober 2004)

Danke Bernd,  erst mal fuer Deine Muehe bis jetzt. Also nachdem ich wieder zu Sinnen gekommen bin habe ich die Klasse ausprobiert, und es passiert genau das selbe wie in meinem Programm. Im Systary Icon oder so aehnlich erscheint kurz das Druckersymbol und das wars dann. Scheint also irgendwie an meiner Hardware zu liegen. Jetzt muss ich wohl mal zusehen, dass ich irgendwo mein Programm mal auf einer anderen Maschine testen kann.
Uebrigens ich benutze den JBulider X.
Gruss Cata


----------

