2016-04-11 4 views
1

Ich versuche, einige Ergebnisse mit Java Print/Printdialog zu exportieren. Ich möchte mehrere Zeilen drucken (mit "\ n"), aber mein Export ist eine einfache Zeile. Wie kann ich diesen Grund beheben?Wie exportiere ich mehrzeiligen Text mit printdialog in Java?

hier ist mein Codebeispiel:

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.print.PageFormat; 
import java.awt.print.Printable; 
import java.awt.print.PrinterException; 
import java.awt.print.PrinterJob; 

public class PrintableDemo1 implements Printable { 

    public int print(Graphics g, PageFormat pf, int pageIndex) { 


    StringBuilder builder = new StringBuilder(); 
    builder.append("Test Result:").append("\n") 
    .append("First Line").append("\n") 
      .append("Second Line").append("\n") 
      .append("Third Line").append("\n") 
      .append("Fourth Line").append("\n") 
      .append("Last Line"); 


    if (pageIndex != 0) 
     return NO_SUCH_PAGE; 

    Graphics2D g2 = (Graphics2D) g; 
    g2.setFont(new Font("Serif", Font.PLAIN, 12)); 
    g2.setPaint(Color.black); 
    g2.drawString(builder.toString(), 144, 144); 
    return PAGE_EXISTS; 
    } 

    public static void main(String[] args) { 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setPrintable(new PrintableDemo1()); 

    try { 
     pj.print(); 
    } catch (PrinterException e) { 
     e.printStackTrace(); 
    } 

    } 

} 
+0

* „Ich möchte Multi Linien drucken (bei der Verwendung von‚\ n‘)“ * - Sie können nicht, das ist nicht, wie 'drawString' funktioniert, müssen Sie jede Zeile zeichnen einzeln – MadProgrammer

+0

[Zeichnung Multiple Textzeilen] (http://docs.oracle.com/javase/tutorial/2d/text/drawmulstring.html) könnte komplizierter sein als du brauchst, aber es ist eine gute Referenz;) – MadProgrammer

+0

Wenn du wirklich tapfer bist [ Hier ist ein Beispiel] (http://stackoverflow.com/questions/14007041/awt-eventqueue-0-java-lang-nullpointerexception/14007091#14007091) – MadProgrammer

Antwort

0

Dank @MadProgrammer ich irgendeine Lösung gefunden, und meinen Code zu aktualisieren.

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.print.PageFormat; 
import java.awt.print.Printable; 
import java.awt.print.PrinterException; 
import java.awt.print.PrinterJob; 

public class PrintableDemo1 implements Printable { 

    public int print(Graphics g, PageFormat pf, int pageIndex) { 

    StringBuilder builder = new StringBuilder(); 
    builder.append("Test Result:").append("\n") 
    .append("First Line").append("\n") 
      .append("Second Line").append("\n") 
      .append("Third Line").append("\n") 
      .append("Fourth Line").append("\n") 
      .append("Last Line"); 

    if (pageIndex != 0) 
     return NO_SUCH_PAGE; 

    Graphics2D g2 = (Graphics2D) g; 
    g2.setFont(new Font("Serif", Font.PLAIN, 12)); 
    g2.setPaint(Color.black); 
    myDrawString(g2, builder.toString(), 100, 100); 

    return PAGE_EXISTS; 
    } 

    private void myDrawString(Graphics g, String text, int x, int y) { 
     for (String line : text.split("\n")) 
     g.drawString(line, x, y += g.getFontMetrics().getHeight()); 
    } 

    public static void main(String[] args) { 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setPrintable(new PrintableDemo1()); 

    try { 
     pj.print(); 
    } catch (PrinterException e) { 
     e.printStackTrace(); 
    } 

    } 

}