Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Resolution d'impression [ Archives / API ] (Dobel)

lundi 17 mai 2004 à 18:45:53 | Resolution d'impression

Dobel

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'imprimante
on 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

lundi 17 mai 2004 à 20:31:43 | Re : Resolution d'impression

Dobel

yop

ya bien une solution en utilisant le vieux PrintJob au lieu de PrinterJob, c'est à dire en laissant tomber toute l'API java.awt.print

ca donne un truc comme

int res = 360;
try {
PageAttributes pa = new PageAttributes();
pa.setPrinterResolution(res);
pa.setPrintQuality(pa.PrintQualityType.HIGH);
pa.setColor(pa.ColorType.COLOR);
if (portrait.isSelected())
pa.setOrientationRequested(pa.OrientationRequestedType.PORTRAIT);
else
pa.setOrientationRequested(pa.OrientationRequestedType.LANDSCAPE);
JobAttributes ja = new JobAttributes();
ja.setCopies(((Integer) copies.getValue()).intValue());
PrintJob prnJob = Toolkit.getDefaultToolkit().getPrintJob((Frame) this.getParent(), "JGeom", ja, pa);
Graphics pg = prnJob.getGraphics();
System.out.println(prnJob.getPageDimension());
pg.translate((int) ((margeGauche + impressionDecalageGauche)*res/72), (int) ((margeHaut + impressionDecalageHaut)*res/72));
BufferedImage image = new BufferedImage(plan.getWidth(), plan.getHeight(), BufferedImage.TYPE_INT_RGB);
plan.paintComponent(image.getGraphics());
pg.drawImage(image, 0, 0, (int) (plan.getWidth()*rapport*res/72) , (int) (plan.getHeight()*rapport*res/72), this);
prnJob.end();
}
catch (NullPointerException npe) {}
System.gc();

on peut choisir sa résolution

mais je ne sais toujours pas comment obtenir les résolutions disponibles
et ca fait un peu préhistoire comme méthode ;-p

A+

DOBELIOU

lundi 17 mai 2004 à 20:37:52 | Re : Resolution d'impression

Dobel

dans le code précédant :

- plan est le JPanel à imprimer
- rapport est un changement d'echelle indépendant
- le code est lancé depuis un JDialog d'où le
((Frame) this.getParent()
- margeHaut, impressionDecalageHaut, margeGauche, impressionDecalageGauche sont des marges indépendantes en pixels
- portrait est un JRadioButton
- copies est un JSpinner

voilou

ce code fonctionne très bien mais si qq'un sait comment régler la résolution d'impression en utilisant PrinterJob, ce serait cool
;-p

DOBELIOU

mardi 18 mai 2004 à 22:19:50 | Re : Resolution d'impression

Dobel

yep

vu la foule de réponse
j'ai du mettre le doigt sur une faille du Java peut-être?

bon, je laisse tomber l'API java.awt.print
vive PrintJob dans java.awt tout court!!!

j'efface mon code, et je recommence
hop

A+
DOBELIOU

(jespère toujours une solution avec PrinterJob, on sait jamais )



Cette discussion est classé dans : impression, taille, int, image, résolution


Répondre à ce message

Sujets en rapport avec ce message

Modifier la taille d'une image [ par AlphaSurfeur ] Je cherche à modifier la taille d'images que je dessine dans un JPanel. Pour info ce sont des ImageIcon. Si qqun sait comment faire avec les ImageIcon impression papier [ par Albator84 ] salut,je cherche le moyen d'imprimer une image (sur papier). G importé mon image avec du JAI.et je crois ke la méthode pour imprimer kon on utilise du Impression [ par tominfo ] Salut, j'ai un problème avec l'impression d'un objet Graphics2D. En effet, soit l'imprimante ne réagit pas, soit elle sort un feuille blanche.Voici mo Pb de chargement de jpg sur une BufferedImage [ par shivan ] Alors je vous explique vite fait, j'ai une classe devant gérer des images en leur rajoutant du texte et des fichiers jpg a volonté. le constructeur ch setPreferredSize avec un Panel ??? [ par eldered ] Salut a tous,J'aimerais savoir qu'elle fonction peut me permettre de réaliser un setPrerredSize sur un Panel, cette fonction n'existant pas sur les ob Petite question d'impression... [ par Youki ] Bonjour !Bon, une question d'impression cette fois :public class Navigateur extends JEditorPane implements Printable{ int nb; Navigateur(){ setEditab jlabel de la taille de l'image!! [ par kaliel ] bonjour!!!je voudrais mettre une image dans un jlabel et que le jlabel prenne les dimensions de l'image ou l'inverse l'image prenne celles du jlabel.S petit bog : comment afficher mon image? [ par Pratana ] pouvez me dire comment afficher mon image "img_col situé" dans la class "carte" de mon programme. regardez, voici mon code :---Fichier solitaire.java- Taille d'une image [ par zauz ] bonjour, j'ai un problème avec les images;Si j'utilise un fichier jpg, l'image s'affiche sans problème dans le canvas de l'appli. Par contre je n'arri probleme de raffraichissement d'image [ par Azdruyel ] Bonjour a tous!Aujourd'hui,un nouveau jour, et donc un nouveau probleme!!!Alors voila, mon truc c'est que j'affiche en fond dans un JPanel une image (


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.