package com.gixxbooth.installer;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Locale;
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;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.DocumentName;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.DocumentException;
public class Installation {
public static void main(String[] args) throws IOException, PrintException, DocumentException {
String htmlCode = null;
File file = null;
String PDF = null;
htmlCode = "<HTML><HEAD><TITLE>A Small Hello</TITLE></HEAD><BODY><H1>Hi</H1>"+
"<P>This is very minimal \"hello world\" HTML document.</P></BODY></HTML>";
file = new File(
"C:\\myfile.html");
PDF = "C:\\myPDF.pdf";
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(htmlCode);
fileWriter.flush();
fileWriter.close();
String HTML = file.getAbsolutePath();
String url = new File(HTML).toURI().toURL().toString();
OutputStream os = new FileOutputStream(PDF);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();
// Den eingestellten Drucker holen
PrintService pss = findPrintService("EPSON TM-T20II Receipt");
// Docname (damit nicht "Java Printing beim Ausdruck steht")
DocAttributeSet das = new HashDocAttributeSet();
das.add(new DocumentName("Test", Locale.getDefault()));
DocFlavor formatSTREAM = DocFlavor.INPUT_STREAM.AUTOSENSE;
DocPrintJob docJob = pss.createPrintJob();
InputStream inputStream = new FileInputStream(PDF);
Doc document = new SimpleDoc(inputStream, formatSTREAM, das);
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
docJob.print(document, pras);
}
public static PrintService findPrintService(String printerName) {
if (printerName == null) {
// Standard Drucker
PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService();
return defaultPrintService;
}
printerName = printerName.toLowerCase();
PrintService service = null;
// Get array of all print services
PrintService[] services = PrinterJob.lookupPrintServices();
// Retrieve a print service from the array
for (int index = 0; service == null && index < services.length; index++) {
if (services[index].getName().toLowerCase().indexOf(printerName) >= 0) {
service = services[index];
}
}
// Return the print service
return service;
}
}