J'ai un problème étrange qui semble être spécifique aux ordinateurs Mac. J'ai un prog qui imprime le contenu d'une surface de dessin AWT sur une feuille de papier A3. Sur les machines Linux et Windows, la sortie est OK. Impression à partir d'un Mac Je reçois la même boîte de dialogue avec les mêmes paramètres prédéfinis, l'imprimante imprime sur une feuille de papier A3 comme prévu, mais pour une raison quelconque, l'image est mise à l'échelle pour s'adapter à une zone A4. Ci-dessous sont les sections pertinentes de code:Impression Java A3 sur Mac sortant à l'échelle A4
public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
PageFormat format = new PageFormat();
format.setOrientation(PageFormat.LANDSCAPE);
double margin = 18; // quarter inch
double m2 = margin * 2;
Paper paper = format.getPaper();
paper.setSize(16.54 * 72, 11.69 * 72); // A3 Landscape
paper.setImageableArea(margin, margin, paper.getWidth()-m2, paper.getHeight()-m2);
format.setPaper(paper);
printJob.setPrintable(this, format);
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
attributes.add(MediaSizeName.ISO_A3);
attributes.add(OrientationRequested.LANDSCAPE);
attributes.add(new MediaPrintableArea((int)margin, (int)margin,
(int)(paper.getWidth()-m2), (int)(paper.getHeight()-m2),
MediaPrintableArea.INCH));
if(printJob.printDialog(attributes)){
try {
printJob.print(attributes);
} catch(PrinterException pe) {
pe.printStackTrace();
}
}
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
if(this.componentToBePrinted instanceof PlannerView){
setScale(g2d);
}
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
}
public void setScale(Graphics2D g2d){
PlannerView planner = (PlannerView)this.componentToBePrinted;
planner.resetZoom();
double scale = 1.0/planner.getRowLength();
scale *= 4.0;
g2d.scale(scale, scale);
}
Est-ce que quelqu'un sait ce qui pourrait causer cela?
Cheers.
Peut-être: https://issues.apache.org/jira/browse/PDFBOX-3453 – tresf