Mega Code Archive

 
Categories / Java / SWT Jface Eclipse
 

Demonstrates printing images

//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.com) //Robert Harris (rbrt_harris@yahoo.com) import org.eclipse.swt.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.printing.*; import org.eclipse.swt.widgets.*; /**  * This class demonstrates printing images  */ public class ImagePrinterExample {   /**    * The application entry point    * @param args the command line arguments    */   public static void main(String[] args) {     Display display = new Display();     Shell shell = new Shell(display, SWT.NONE);     try {       // Prompt the user for an image file       FileDialog fileChooser = new FileDialog(shell, SWT.OPEN);       String fileName = fileChooser.open();       if (fileName == null) { return; }       // Load the image       ImageLoader loader = new ImageLoader();       ImageData[] imageData = loader.load(fileName);       if (imageData.length > 0) {         // Show the Choose Printer dialog         PrintDialog dialog = new PrintDialog(shell, SWT.NULL);         PrinterData printerData = dialog.open();         if (printerData != null) {           // Create the printer object           Printer printer = new Printer(printerData);              // Calculate the scale factor between the screen resolution and printer           // resolution in order to correctly size the image for the printer           Point screenDPI = display.getDPI();           Point printerDPI = printer.getDPI();           int scaleFactor = printerDPI.x / screenDPI.x;              // Determine the bounds of the entire area of the printer           Rectangle trim = printer.computeTrim(0, 0, 0, 0);           // Start the print job           if (printer.startJob(fileName)) {             if (printer.startPage()) {               GC gc = new GC(printer);               Image printerImage = new Image(printer, imageData[0]);                              // Draw the image               gc.drawImage(printerImage, 0, 0, imageData[0].width,                 imageData[0].height, -trim.x, -trim.y,                  scaleFactor * imageData[0].width,                  scaleFactor * imageData[0].height);                  // Clean up               printerImage.dispose();               gc.dispose();               printer.endPage();             }           }           // End the job and dispose the printer           printer.endJob();           printer.dispose();         }       }     } catch (Exception e) {       MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR);       messageBox.setMessage("Error printing test image");       messageBox.open();     }   } }