Meaningless Drivel is fun!*
The moose likes Swing / AWT / SWT and the fly likes Printing Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Printing" Watch "Printing" New topic
Author

Printing

Talhah Mafawalla
Greenhorn

Joined: Nov 05, 2006
Posts: 24
Hi all,

I hope this is the right section to post this question. I was wandering if anyone might help me. I am trying to print a JTable and i also want to put a header on the page as well as a footer with the page number. Is there also a way to get a print dialog that asks for the printer and also i can set the page orientation.

Thanks in advance
Talhah Mafawalla
jad yuuu
Greenhorn

Joined: May 06, 2007
Posts: 8
Use the helper Class:

import java.awt.*;
import javax.swing.*;
import java.awt.print.*;

public class PrintUtilities implements Printable {
private Component componentToBePrinted;

public static void printComponent(Component c) {
new PrintUtilities(c).print();
}

public PrintUtilities(Component componentToBePrinted) {
this.componentToBePrinted = componentToBePrinted;
}

public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
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(72,80);
g2d.scale(.695,.695);
//g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
}

public static void disableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(false);
}

public static void enableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(true);
}
}


More details on http://www.gulany.com/?page_id=8
Scott Cook
Greenhorn

Joined: Aug 01, 2006
Posts: 14
Thanks Jad!

although the example doesn't do the headers and footers as requested, I found it helpful.

Here's my update to Jad's code, with the addition of automatically setting the origin and aspect ratio:

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Printing
 
Similar Threads
Printing without displaying on the browser
How to print out data from web page to printer?
how to give print option to any page?
Print a different page
print control