encore un pb d'imression lol
mais il est serienx celui-là ;-(
j'étais en train de faire une joulie boîte pour configurer l' impression d'un JPanel : taille, centrage, apercu etc...
500 lignes plus tard, ca marche... presque
pour situer le problème :
en java, la resolution d'une image semble être obligatoirement 72 pixels par pouce
on peut contourner ce problème lors de l'impression en utilisant la méthode scale(double, double) de Graphics2D
ca donne un truc dans le genre pour la méthode print
public int print(Graphics pg, PageFormat pageFormat, int pageIndex) throws PrinterException {
BufferedImage image = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);
this.paintComponent(image.getGraphics());
if (pageIndex >=1)
return NO_SUCH_PAGE;
Graphics2D pg2 = (Graphics2D) pg;
pg2.translate((int) ((pageFormat.getImageableX() + impressionDecalageGauche)), (int) ((pageFormat.getImageableY() + impressionDecalageHaut)));
//les dimensions sont * par impressionEchelle
pg2.scale(impressionEchelle, impressionEchelle);
pg2.drawImage(image, 0, 0, this.getWidth() , this.getHeight(), this);
image = null;
System.gc();
return PAGE_EXISTS;
}
le problème, c'est que la taille de l'impression dépend de la résolution de l'imprimante (si elle est aussi en 72 px/pouce, c'est OK, mais sinon...)
(mon but, c'est de pouvoir choisir la taille de l'image quelque soit la résolution de l'imprimante)
donc la question (enfin ;-p)
Comment connaître la résolution de l'imprimanteon pourrait alors modifier les paramètres de scale pour ajuster la taille de l'image à la résolution de l'imprimante
ou sinon, comment forcer la résolution?
sans doute un rapport avec javax.print.attribute.standard.PrinterResolution
??
[si j'ai pas de réponse, j'ai plus qu'à remplacer la boîte d'impression par un enregistrement en BMP ;-p
ce serait pas très classe quand même...]
A+
DOBELIOU