ich habe einen String, in dem ich HTML Code habe.
Nun möchte ich diesen gerne auf eine Seite (z.B. DIN A4) drucken.
Wie kann ich das machen?
Danke für jede Hilfe.
Ok, danke
Ich habe mir das nun mal zusammen programmiert.
Leider habe ich das große Problem, dass der Drucker (ein Bon Drucker - Epson TM-T20 II) mir nur Byte Code ausdruckt. Im Moment habe ich leider keine Ahnung wo ich suchen soll.
Hier mein bisheriger Code:
Java:
packagecom.gixxbooth.installer;importjava.awt.print.PrinterJob;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Locale;importjavax.print.Doc;importjavax.print.DocFlavor;importjavax.print.DocPrintJob;importjavax.print.PrintException;importjavax.print.PrintService;importjavax.print.PrintServiceLookup;importjavax.print.SimpleDoc;importjavax.print.attribute.DocAttributeSet;importjavax.print.attribute.HashDocAttributeSet;importjavax.print.attribute.HashPrintRequestAttributeSet;importjavax.print.attribute.PrintRequestAttributeSet;importjavax.print.attribute.standard.DocumentName;importorg.xhtmlrenderer.pdf.ITextRenderer;importcom.lowagie.text.DocumentException;publicclassInstallation{publicstaticvoidmain(String[] args)throwsIOException,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 =newFile("C:\\myfile.html");
PDF ="C:\\myPDF.pdf";FileWriter fileWriter =newFileWriter(file);
fileWriter.write(htmlCode);
fileWriter.flush();
fileWriter.close();String HTML = file.getAbsolutePath();String url =newFile(HTML).toURI().toURL().toString();OutputStream os =newFileOutputStream(PDF);ITextRenderer renderer =newITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();// Den eingestellten Drucker holenPrintService pss =findPrintService("EPSON TM-T20II Receipt");// Docname (damit nicht "Java Printing beim Ausdruck steht")DocAttributeSet das =newHashDocAttributeSet();
das.add(newDocumentName("Test",Locale.getDefault()));DocFlavor formatSTREAM =DocFlavor.INPUT_STREAM.AUTOSENSE;DocPrintJob docJob = pss.createPrintJob();InputStream inputStream =newFileInputStream(PDF);Doc document =newSimpleDoc(inputStream, formatSTREAM, das);PrintRequestAttributeSet pras =newHashPrintRequestAttributeSet();
docJob.print(document, pras);}publicstaticPrintServicefindPrintService(String printerName){if(printerName ==null){// Standard DruckerPrintService defaultPrintService =PrintServiceLookup.lookupDefaultPrintService();return defaultPrintService;}
printerName = printerName.toLowerCase();PrintService service =null;// Get array of all print servicesPrintService[] services =PrinterJob.lookupPrintServices();// Retrieve a print service from the arrayfor(int index =0; service ==null&& index < services.length; index++){if(services[index].getName().toLowerCase().indexOf(printerName)>=0){
service = services[index];}}// Return the print servicereturn service;}}