1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| public static void printReports ( final ArrayList<Integer> reportsToPrint, final LinkedHashMap<String, String> params) {
final PrinterJob job = PrinterJob.getPrinterJob();
//ici je mets l'imprimante à la main, mais en fait elle est récupérée dans params...
String printerName = "PDF-XChange 3.0";//params.get( App.printerName);
PrintService[] printers = PrintServiceLookup.lookupPrintServices( null, null);
for (int printerId=0; printerId < printers.length; printerId++) {
if ( printers[printerId].getName().equals( printerName) ) {
try {
job.setPrintService( printers[ printerId]);
} catch (PrinterException e) {
_.info("X7.PrintReports : Error selecting printer");//affichage de l'erreur avec une routine à moi...
}
}
}
job.setJobName("Application is printing a beautiful report");
HashPrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
attributeSet.add(
//ici on passe en A4 à la main, avec une marge exprimée en mm dans App.printerStdMarginMm, qui vaut 7 dans mon exemple
//on peut remplacer App.printerStdMarginMm par une valeur de marge en mm (7 ici)
new MediaPrintableArea( (float) App.printerStdMarginMm, (float)App.printerStdMarginMm,
(float)(210 - App.printerStdMarginMm*2), (float)(297 - App.printerStdMarginMm*3),
MediaPrintableArea.MM));
attributeSet.add( MediaSizeName.ISO_A4);
attributeSet.add( OrientationRequested.PORTRAIT);
try {
job.print( attributeSet);
} catch (PrinterException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
job.setPrintable (new Printable() {
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
Graphics2D g2d = (Graphics2D)g;
g2d.translate( pageFormat.getImageableX(), pageFormat.getImageableY());
if ( pageIndex >= reportsToPrint.size() ) {
g2d.dispose();
g2d = null;
return(NO_SUCH_PAGE);
} else {
cReport curReport = new cReport( g2d, reportsToPrint.get(pageIndex));//c'est ici que j'imprime dans une classe qui gère le job
curReport=null;
g2d.dispose();
g2d = null;
return(PAGE_EXISTS);
}
}
}
);
try {
job.print();
} catch (PrinterException e) {
System.err.println(e.getMessage());
}
} |
Partager