# Java Print Servce API - String mit Standarddurcker ausdrucken



## webix (1. Juni 2006)

*Java Print Service API - String mit Standarddrucker drucken*

Hallo,

ich bin auf der Suche nach einem Beispiel (Quellcode), wo gezeigt wird, wie man einen Text, der in einem String gespeichert ist, ausdrucken kann.


----------



## flashray (1. Juni 2006)

Hallo,

schau mal hier:
http://www.tutorials.de/forum/swing-awt-swt/242065-printtool.html


Vg Erdal


----------



## webix (3. Juni 2006)

Das Beispiel kenne ich bereits, gibt es jedoch keine weitere Möglichkeit, die nicht so viel Quelltext beinhaltet?

Dieser Quelltext ist verständlich geschrieben, enthält aber Fehler, die mir das Ausführen nicht erlauben. Eventuell weiß hier einer, wie es gehen könnte.


```
//Datei als Datenquelle einlesen.
FileInputStream textStream ;
try  {
	textStream = new FileInputStream("bsp.txt") ;
} catch(FileNotFoundException ex)  {;}

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

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

//Attribute anlegen.
PrintRequestAttributSet aset = new HashPrintRequestAttributeSet() ;
aset.add(new Copies(5)) ;
aset.add(MediaSizeName.ISO_A4) ;
aset.add(Sides.DUPLEX) ;

//Drucker suchen, die das Datenformat und die Attribute
 verarbeiten können.
PrintService[] services =
PrintServiceLookup.lookupPrintServices(format, aset) ;

//Druckauftrag für einen Drucker erzeugen und Dokument drucken.
if(services.length > 0)  {
	DocPrintJob job = services[0].createPrintJob() ;
	try  {
		job.print(myDoc, aset) ;
	} catch(PrintException ex)  {;}
}
```


----------



## flashray (3. Juni 2006)

Hallo webix,

wenn du eine einfachere Möglichkeit findest sag mir Bescheid  .


Vg Erdal


----------



## jeipack (19. März 2007)

Mit der Klasse org.jdesktop.jdic.desktop.Desktop und einem Umweg über eine txt Datei funktionierts ganz einfach. (JDIC muss noch separat runtergeladen werden)


```
if(Desktop.isPrintable(file)) {
                      try {
                          Desktop.print(file);
                      } catch (Exception ex) {
                          System.out.println("Fehler beim drucken des Files:\n\r"+ex);
                      }
                  }
```

Dabei wird einfach die Standardapplikation für txt Files geöffnet und diese dann dazu verleitet das Dokument auf dem Standarddrucker aus zu drucken.
Ist vielleicht ein bisschen overload um nur einen String aus zu drucken..
Damit drucke ich PDF Files aus. (Wenn du eine Möglichkeit kennst PDF auf einem anderen Drucker als dem Standarddrucker aus zu drucken sag bescheid  )


----------



## Thomas Darimont (19. März 2007)

Hallo,



> Mit der Klasse org.jdesktop.jdic.desktop.Desktop



Unter Java 6 hat man das auch unter java.awt.Desktop

Gruß Tom


----------



## Stringbuffer (23. Juli 2009)

flashray hat gesagt.:


> Hallo webix,
> 
> wenn du eine einfachere Möglichkeit findest sag mir Bescheid  .
> 
> ...




```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.PageRanges;
import javax.print.attribute.standard.PrintQuality;

public class LabelTest implements Printable {

	private PrintService[] services;
	private String artikelnr;

	public LabelTest() {
		this.services = PrinterJob.lookupPrintServices();
	}

	public static void main(String[] args) {
		LabelTest lt = new LabelTest();
		lt.printString("123");
		lt.printString("456");
		lt.printString("789");
	}

	public void printString(String _artikelnr) {

		this.artikelnr = _artikelnr;
		PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
		aset.add(new PageRanges(1, 1));
		aset.add(new Copies(1));
		PrinterJob pj = PrinterJob.getPrinterJob();
		pj.setPrintable(this);

		try {
			pj.setPrintService(services[3]); //hier der 4. drucker in der liste 
							 //der installierten drucker in 
							 //systemsteuerung oder besser über 
							 //standarddrucker laufen
			pj.print(aset);
		} catch (PrinterException pe) {
			System.err.println(pe);
		}
	}

	public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
		Graphics2D g2d = (Graphics2D) g;
		g2d.translate(pf.getImageableX(), pf.getImageableY());
		g.drawString(String.valueOf(this.artikelnr), 10, 10);
		return PAGE_EXISTS;
	}
}
```


----------

