Ayuda para imprimir en JAVA

23 de Junio del 2006
Necesito imprimir un texto y con los saltos de linea 'n' y no lo consigo, alguien podría ayudarme por favor.

El código que tengo es este:
package com.pruebas;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextLayout;
import java.awt.geom.Point2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;

public class PrintText implements Printable {
* The text to be printed.
private static final String mText =
"Four score and n seven years ago our fathers brought forth on this "
+ "government n of the people, by the people, for the people shall "
+'n'+ "not perish from the earth.";

* Our text in a form for which we can obtain a
* AttributedCharacterIterator.
private static final AttributedString mStyledText = new AttributedString(mText);
* Print a single page containing some sample text.
static public void main(String args[]) {
/* Get the representation of the current printer and
* the current print job.
PrinterJob printerJob = PrinterJob.getPrinterJob();
/* Build a book containing pairs of page painters (Printables)
* and PageFormats. This example has a single page containing
* text.
Book book = new Book();
book.append(new PrintText(), new PageFormat());
/* Set the object to be printed (the Book) into the PrinterJob.
* Doing this before bringing up the print dialog allows the
* print dialog to correctly display the page range to be printed
* and to dissallow any print settings not appropriate for the
* pages to be printed.

/* Show the print dialog to the user. This is an optional step
* and need not be done if the application wants to perform
* 'quiet' printing. If the user cancels the print dialog then false
* is returned. If true is returned we go ahead and print.
boolean doPrint = printerJob.printDialog();
if (doPrint) {

try {
} catch (PrinterException exception) {
System.err.println("Printing error: " + exception);
* Print a page of text.
public int print(Graphics g, PageFormat format, int pageIndex) {
/* We'll assume that Jav2D is available.
Graphics2D g2d = (Graphics2D) g;
/* Move the origin from the corner of the Paper to the corner
* of the imageable area.
g2d.translate(format.getImageableX(), format.getImageableY());
/* Set the text color.
/* Use a LineBreakMeasurer instance to break our text into
* lines that fit the imageable area of the page.
Point2D.Float pen = new Point2D.Float();
AttributedCharacterIterator charIterator = mStyledText.getIterator();
LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator, g2d.getFontRenderContext());
float wrappingWidth = (float) format.getImageableWidth();

while (measurer.getPosition() < charIterator.getEndIndex()) {
TextLayout layout = measurer.nextLayout(wrappingWidth);
pen.y += layout.getAscent();
float dx = layout.isLeftToRight()? 0 : (wrappingWidth - layout.getAdvance());
layout.draw(g2d, pen.x + dx, pen.y);
pen.y += layout.getDescent() + layout.getLeading();
return Printable.PAGE_EXISTS;


Muchas gracias