
package javacodebook.media.print.puretext;

import java.io.*;

/**
 * Diese Klasse gibt eine Textdatei auf dem angegebenen Drucker aus
 * Unter Windows ist dies meistens LPT1.
 * @author  Administrator
 */
public class TextSpooler {

    public static void main(String[] args) throws IOException {
        if(args.length < 2)
            printUsage();
        String filename = args[0];
        File f = new File(filename);
        if(!f.exists())
            printUsage();
        String target = args[1];
        //Datei-Eingabestrom öffnen
        BufferedReader in = new BufferedReader(new FileReader(f));
        //Ausgabestrom für den Drucker öffnen
        FileOutputStream lpt = new FileOutputStream(target);
        //Escape-Sequenz beginnen. Dies muss über einen Binär-Datenstrom erfolgen
        lpt.write(27);
        PrintWriter out = new PrintWriter(new OutputStreamWriter(lpt));
        //Zeichensatz ISO8859-1 wählen, damit Umlaute richtig gedruckt werden
        //Dieser Zeichensatz ist druckerabhängig!!! und muss im Handbuch des
        //jeweiligen Druckers nachgelesen werden
        out.print("(0N");
        //Zeilenweise ausdrucken
        String line = null;
        while(((line = in.readLine()) != null)) {
            //Bei Zeilen, die länger sind als die Breite des Papiers, kann hier
            //noch eine Aufteilung des auszugebenden Strings erfolgen.
            out.println(line);
        }
        in.close();
        out.close();
    }

    private static void printUsage() {
        System.out.println("Aufruf: javacodebook.media.print.puretext.TextSpooler datei drucker");
        System.exit(0);
    }
}
