HTML aus JEditorPane drucken

Status
Nicht offen für weitere Antworten.

GRudiD

Aktives Mitglied
Hallo,

ich möchte einen automatisch generierten HTML-Quellcode als Seite (mit Tabellen, Listen etc.), wie er z.B. im IE angezeigt wird, ausdrucken lassen. Anzeigen lassen könnte ich mir das ja mit einer JEditorPane o.ä. Nur mit dem Ausdrucken des Inhalts habe ich meine Probleme. Im FAQ habe ich bereits nachgesehen, jedoch komme ich ich irgendwie mit dem dort angegebenen Quelltext nicht klar.

Mein bisheriger Stand:
Code:
DocFlavor docFlavor = DocFlavor.STRING.TEXT_HTML;
Doc doc = new SimpleDoc("<html>ajdh</html>", docFlavor, null);
// alternativ dazu:
// Doc doc = new SimpleDoc(textPane.getText(), docFlavor, null);

PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
DocPrintJob docPrintJob = PrintServiceLookup.lookupDefaultPrintService().createPrintJob();
try {
	docPrintJob.print(doc, printRequestAttributeSet);
} catch (PrintException exception) {
	exception.printStackTrace();
}

Wenn ich den docFlavor auf STRING.TEXT_HTML bzw. STRING.TEXT_PLAIN setze, erhalte ich die Exception
Code:
sun.print.PrintJobFlavorException: invalid flavor

Bei jeglichen anderen Konfigurationen
Code:
java.lang.IllegalArgumentException: data is not of declared type

Was mache ich dabei falsch bzw. wie kann ich das Problem lösen?
 

André Uhres

Top Contributor
Code:
PrintUtilities.printComponent((Component)jEditorPane, false);
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.print.*;

/** A simple utility class that lets you very simply print
 *  an arbitrary component. Just pass the component to the
 *  PrintUtilities.printComponent. The component you want to
 *  print doesn't need a print method and doesn't have to
 *  implement any interface or do anything special at all.
 *  


 *  If you are going to be printing many times, it is marginally more
 *  efficient to first do the following:
 *  <PRE>
 *    PrintUtilities printHelper = new PrintUtilities(theComponent);
 *  </PRE>
 *  then later do printHelper.print(). But this is a very tiny
 *  difference, so in most cases just do the simpler
 *  PrintUtilities.printComponent(componentToBePrinted).
 *
 *  7/99 Marty Hall, [url]http://www.apl.jhu.edu/~hall/java/[/url]
 *  May be freely used or adapted.
 */

public class PrintUtilities implements Printable {
    private Component componentToBePrinted;
    
    public static void printComponent(Component c, boolean landscape) {
        new PrintUtilities(c, landscape).print();
    }
    boolean landscape=false;
    public PrintUtilities(Component componentToBePrinted, boolean landscape) {
        this.componentToBePrinted = componentToBePrinted;
        this.landscape=landscape;
        pageFormat2 = new PageFormat();
        pageFormat2.setOrientation(PageFormat.PORTRAIT);
        if(landscape) pageFormat2.setOrientation(PageFormat.LANDSCAPE);
        paper = new Paper();
        // Set to A4 size.
        paper.setSize(594.936, 841.536);
        // Set the margins.
        paper.setImageableArea(50, 50, 494.936, 741.536);
        pageFormat2.setPaper(paper);
    }
    
    public void print() {
        PrinterJob printJob = PrinterJob.getPrinterJob();
        printJob.setPrintable(this, pageFormat2);
        if (printJob.printDialog())
            try {
                printJob.print();
            } catch(PrinterException pe) {
                System.out.println("Error printing: " + pe);
            }
    }
    
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
            return(NO_SUCH_PAGE);
        } else {
            Graphics2D g2d = (Graphics2D)g;
            g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

            disableDoubleBuffering(componentToBePrinted);
            System.out.println("Print Utility is now  painting...");
            componentToBePrinted.paint(g2d);
            enableDoubleBuffering(componentToBePrinted);
            return(PAGE_EXISTS);
        }
    }
    
    /** The speed and quality of printing suffers dramatically if
     *  any of the containers have double buffering turned on.
     *  So this turns if off globally.
     *  @see enableDoubleBuffering
     */
    public static void disableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(false);
    }
    
    /** Re-enables double buffering globally. */
    
    public static void enableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(true);
    }

    PageFormat pageFormat2=null;
    Paper paper=null;
    
}
 

GRudiD

Aktives Mitglied
Erst einmal danke für die schnelle Antwort. Die Methode funktioniert soweit ganz gut.

Trotzdem habe ich dabei ein paar Probleme:
- leider kann ein mehrseitiger Text nicht gedruckt werden
- die Breite der Komponente muss vorher irgendwie an die Breite des Papiers angepasst werden
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JEditorPane lädt keine Schriftfarbe in HTML AWT, Swing, JavaFX & SWT 2
J JEditorPane mit HTML füllen AWT, Swing, JavaFX & SWT 2
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
H Swing JEditorPane und HTML AWT, Swing, JavaFX & SWT 3
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
S Swing HTML-Text in JEditorPane einfärben AWT, Swing, JavaFX & SWT 5
B JEditorPane - Text und Graphik in HTML speichern AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S JEditorPane soll HTML und dann Text anzeigen..? AWT, Swing, JavaFX & SWT 5
T HTML und JEditorPane AWT, Swing, JavaFX & SWT 6
W HTML-Text mit relativer URL in JEditorPane einlesen AWT, Swing, JavaFX & SWT 10
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
DeeDee0815 JEditorPane + HTML + <img src=file> + JAR = FALSE AWT, Swing, JavaFX & SWT 3
N java.awt.Color zu HTML Farbcode (JEditorPane) AWT, Swing, JavaFX & SWT 1
M jEditorPane String to html AWT, Swing, JavaFX & SWT 2
T DataFlavor für HTML-formatierten Text im JEditorPane AWT, Swing, JavaFX & SWT 8
G JEditorPane HTML-Email versenden AWT, Swing, JavaFX & SWT 2
S JEditorPane HTML-Text auslesen AWT, Swing, JavaFX & SWT 2
M JEditorPane und Bild als html? AWT, Swing, JavaFX & SWT 7
S HTML-Datei in Anwendung (JEditorPane) AWT, Swing, JavaFX & SWT 5
T HTML in JEditorPane darstellen AWT, Swing, JavaFX & SWT 5
C JEditorPane, HTML EditorKit und HTMLDocument AWT, Swing, JavaFX & SWT 8
izoards HTML Editor AWT, Swing, JavaFX & SWT 3
H setToolTipText ignoriert HTML-Formatierung des anzuzeigenden Strings AWT, Swing, JavaFX & SWT 4
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
C HTML Editor Eingabemaske kafenio Ersatz AWT, Swing, JavaFX & SWT 7
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
K Html Editor AWT, Swing, JavaFX & SWT 3
B Swing HTML in JLabels AWT, Swing, JavaFX & SWT 6
S jLabel HTML Formatierung AWT, Swing, JavaFX & SWT 2
B JavaFX Java FX Html Template AWT, Swing, JavaFX & SWT 0
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
R Swing JTable : Header der Spalten ergänzen mit caption (wie bei html-table) AWT, Swing, JavaFX & SWT 2
I LookAndFeel HTML Auflösung - Online Editor programmieren AWT, Swing, JavaFX & SWT 2
T HTML mit Java AWT, Swing, JavaFX & SWT 1
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
F Submit eines HTML-Formulars in Vaadin AWT, Swing, JavaFX & SWT 3
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
J JApplet, HTML und access denied exitVM.0 AWT, Swing, JavaFX & SWT 3
L Swing JToogleButton Vordergrundfarbe bei HTML String AWT, Swing, JavaFX & SWT 4
H Swing JApplet - HTML - ClassNotFoundException AWT, Swing, JavaFX & SWT 7
G Swing HTML Version AWT, Swing, JavaFX & SWT 11
S HTML in Java einbinden AWT, Swing, JavaFX & SWT 4
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
N Swing KomponentenHöhe an html-Inhalt anpassen AWT, Swing, JavaFX & SWT 4
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
C html browser in Application nutzen AWT, Swing, JavaFX & SWT 10
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
S HTML Syntaxhighlighting AWT, Swing, JavaFX & SWT 7
S SWT HTML-WYSIWUG-Editor AWT, Swing, JavaFX & SWT 3
R Swing Renderproblem bei HTML in einer JTextPane AWT, Swing, JavaFX & SWT 12
N Swing JTextPane zur Anzeige von HTML AWT, Swing, JavaFX & SWT 2
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
D System.out.println() gibt html-Tags mit aus AWT, Swing, JavaFX & SWT 2
P Swing HTML-Renderer AWT, Swing, JavaFX & SWT 15
G Swing JCheckBox, setEnabled(false) und HTML Text Problem AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Html in drawString() AWT, Swing, JavaFX & SWT 2
L Applet In HTML einbinden klappt einfach nicht AWT, Swing, JavaFX & SWT 5
X Frei nutzbarer HTML Editor AWT, Swing, JavaFX & SWT 13
B WYSIWYG-HTML-Editor / Validator für JAVA AWT, Swing, JavaFX & SWT 2
N JCombobox wie in HTML AWT, Swing, JavaFX & SWT 6
G Swing JEdtitorPane und HTML Image Seite AWT, Swing, JavaFX & SWT 2
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
destroflyer Wort im JLabel verlinken (per HTML) AWT, Swing, JavaFX & SWT 3
R Swing JTextComponent und HTML AWT, Swing, JavaFX & SWT 7
D Nodes eines statischen JTrees sollen auf Anker (Textmarken) in einer HTML-Datei zeigen AWT, Swing, JavaFX & SWT 8
D Darstellung in Swing wie HTML? AWT, Swing, JavaFX & SWT 2
H Mit JLabel HTML - formatierten Text anzeigen AWT, Swing, JavaFX & SWT 14
M Swing Kein update bei simulierten HTML-Link AWT, Swing, JavaFX & SWT 4
B Grafiken in JLabel mittels html AWT, Swing, JavaFX & SWT 5
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
K Alternative zu Applet mit HTML-Einbindung AWT, Swing, JavaFX & SWT 11
S Swing Text -> HTML: Caret-Koordinaten verschoben AWT, Swing, JavaFX & SWT 6
J JList & HTML AWT, Swing, JavaFX & SWT 2
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
N Performanceprobleme mit JLabel und HTML content AWT, Swing, JavaFX & SWT 5
A Oberfläche wir mit html-Frames aufbauen AWT, Swing, JavaFX & SWT 11
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
C Suche fertigen HTML editor AWT, Swing, JavaFX & SWT 2
B HTML in Swing Components (JLabel) AWT, Swing, JavaFX & SWT 7
G Hilfe beim Erstellen eines eigenen Html-Editors! AWT, Swing, JavaFX & SWT 4
S drawString für HTML-Text? AWT, Swing, JavaFX & SWT 7
G Frage zu Labels mit html AWT, Swing, JavaFX & SWT 3
P HTML darstellen mit Java AWT, Swing, JavaFX & SWT 4
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
ARadauer swing html wysiwyg componente AWT, Swing, JavaFX & SWT 6
V "Anker" wie in HTML für JScrollPane? AWT, Swing, JavaFX & SWT 2
M html im Titel von JFrame AWT, Swing, JavaFX & SWT 9
M html aus einem Stream Laden und Anzeigen AWT, Swing, JavaFX & SWT 4
T Öffnen von SWT-Dialogboxen durch HTML-Link in HTML-Code AWT, Swing, JavaFX & SWT 4
B JTextPane und Image importieren in HTML String. AWT, Swing, JavaFX & SWT 2
J Html in JTextPane anzeigen? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben