Hi,
irgendwie ist das Drucken unter Java so einfach oder kaum einer nutzt es
. Ich habe bei der Suche nur ein paar Threads zu diesem Thema gesehen.
Ich habe folgendes Problem:
Ich möchte den Inhalt einer JTextArea (also JTextArea.getText()) ausdrucken. Nach einigen rumforschen bin ich auf "javax.print" gestossen und hab mir das genauer angesehen.
Ich hab dann mit dem Wissen versucht eine Methode zu baun, mit der ich einen String auf dem Drucker ausgeben kann:
Wenn die Methode bei job.print angelangt ist meckert der Compiler:
sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Unknown Source)
Jedoch müsste ich doch eigentlich mit new DocFlavor("text/html",text2Print.getClass().getName());
den Flavor für ein String richtig eingestellt haben. Kann mir evtl wer sagen was ich da falsch gemacht habe?
Zuvor hab ich gedacht, dass man nur die Methoden von "javax.print" mit Dateien benutzen kann. Zu diesem Zweck hab ich eine temporäre Datei erstellt und den String dort reingeknallt. Als Ergebnis konnte ich den Drucker ansprechen jedoch druckte der nix. Im Systray flackerte kurz der Systray auf und das wars dann.
Der Code dazu:
Ich würd lieber den String auf den Drucker bekommen. Jedoch interessierts mich wieso im 2. Quellcode der Drucker nix macht obwohl eigentlich alles ok ist. Gibts da spezielle Möglichkeiten um den Druckerstream zu überwachen?
Bis dann
irgendwie ist das Drucken unter Java so einfach oder kaum einer nutzt es
Ich habe folgendes Problem:
Ich möchte den Inhalt einer JTextArea (also JTextArea.getText()) ausdrucken. Nach einigen rumforschen bin ich auf "javax.print" gestossen und hab mir das genauer angesehen.
Ich hab dann mit dem Wissen versucht eine Methode zu baun, mit der ich einen String auf dem Drucker ausgeben kann:
Code:
public static void printRecipe(String text2Print) {
//Datenformat erzeugen
DocFlavor format = new DocFlavor("text/html",text2Print.getClass().getName());
//Dokument erzeugen
Doc myDoc = new SimpleDoc(text2Print, format, null) ;
//Drucker suchen
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
//Druckauftrag für einen Drucker erzeugen und Dokument drucken
DocPrintJob job = service.createPrintJob() ;
try {
job.print(myDoc, null);<--- Exception
} catch(PrintException ex) {
ex.printStackTrace();
}
}
Wenn die Methode bei job.print angelangt ist meckert der Compiler:
sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Unknown Source)
Jedoch müsste ich doch eigentlich mit new DocFlavor("text/html",text2Print.getClass().getName());
den Flavor für ein String richtig eingestellt haben. Kann mir evtl wer sagen was ich da falsch gemacht habe?
Zuvor hab ich gedacht, dass man nur die Methoden von "javax.print" mit Dateien benutzen kann. Zu diesem Zweck hab ich eine temporäre Datei erstellt und den String dort reingeknallt. Als Ergebnis konnte ich den Drucker ansprechen jedoch druckte der nix. Im Systray flackerte kurz der Systray auf und das wars dann.
Der Code dazu:
Code:
public static void printRecipe(boolean WithPic, String text2Print) {
File tempFile = createTempFile(text2Print);
System.out.println("TempFile: "+tempFile.getAbsolutePath());
//Datei als Datenquelle einlesen.
FileInputStream textStream = null;
try {
textStream = new FileInputStream(tempFile.getAbsolutePath()) ;
} catch(FileNotFoundException ex) {
ex.printStackTrace();
}
//Datenformat erzeugen.
DocFlavor format = DocFlavor.INPUT_STREAM.AUTOSENSE;
//Dokument erzeugen.
Doc myDoc = new SimpleDoc(textStream, format, null) ;
//Drucker suchen
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
//Druckauftrag für einen Drucker erzeugen und Dokument drucken.
DocPrintJob job = service.createPrintJob() ;
try {
job.print(myDoc, null);
} catch(PrintException ex) {
ex.printStackTrace();
}
}
Ich würd lieber den String auf den Drucker bekommen. Jedoch interessierts mich wieso im 2. Quellcode der Drucker nix macht obwohl eigentlich alles ok ist. Gibts da spezielle Möglichkeiten um den Druckerstream zu überwachen?
Bis dann