Java Print Servce API - String mit Standarddurcker ausdrucken

webix

Mitglied
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.
 
Zuletzt bearbeitet:
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.

Code:
//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)  {;}
}
 
Mit der Klasse org.jdesktop.jdic.desktop.Desktop und einem Umweg über eine txt Datei funktionierts ganz einfach. (JDIC muss noch separat runtergeladen werden)

Java:
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 :) )
 
Hallo webix,

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


Vg Erdal

Code:
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;
	}
}
 

Neue Beiträge

Zurück