Bonjour à tous !
Je viens plus particulièrement du monde de Flash / Flex, et depuis quelques jours je regarde ce que vaut le PrinterJob de Java à coté du PrintJob de Flash.
Coté Flash
On a deux choix avec Flash pour le PrintJob.
- printasbitmap = true : On conserve la transparence des JNG, mais le rendu à l’impression est laid (tout est rasterisé avant d’être envoyé à l’impression)
- printasbitmap = false : La couche alpha des PNG est remplacée par du noir mais les textes sont envoyé en Vecto à l’impression.
Pour la correspondance entre un rendu écran et impression : Dans Flash, une police empactée va régler l’affaire.
Pour le poids et tailles des images : Flash va assez vite plier (les images supérieures à 2000px * 2000px commencent à el chatouiller sérieusement)
Qualité générale : Sur un traceur grand format de très bonne qualité, les impressions Flash donnent une impression moins fidèle que Java.
Du coté de Java …
C’est ce qui m’occupe depuis quelques jours. J’utilise une classe qui étend JPanel, implemente Printable, et je crée mes éléments sur un Graphics2D.
Là on a pas mal de d’options un peu partout pour le rendu des éléments et l’impression.
La famille setDoubleBufferingEnabled(false) : Elle nous donne un rendu similaire à rendu PrintAsBitMap true de Flash. C’est plutôt laid, même très laid donc pas vraiment exploitable.
La famille setDoubleBufferingEnabled(true) : Le rendu est propre niveau impression les textes sont en vectoriel. L’impression grand format et très propre. Mais on a deux grands problèmes :
Les textes (testé avec un Arial)
En effet les textes ne sont pas rendus exactement de la même façon sur l’écran que sur l’impression. J’ai pu faire des tests en apposant une grille sur les textes pour comparer les placements de caractères à l’écran et sur le papier, on a vraiment des écart de rendu.
L’option :
Va nous donner un rendu assez intéressant et similaire à l’écran et sur le papier SAUF lorsque que l’on définir un Font.BOLD… Là, plus rien ne correspond.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,RenderingHints.VALUE_FRACTIONALMETRICS_ON);
Première question donc, est ce que quelqu’un à déjà trouvé un réglage pour conserver à l’impression le rendu écran des textes.
Les PNG (testé avec un png avec transparence)
Bon le rendu des png est bon dans tout les cas à l’ecran mais pose un problème quand il vient recouvrir du texte à l‘impression. On a des résultats assez désagréables, surtout quand le texte en dessous est en gras.
Je vous donne quelques images :
Le visuel écran:
Le rendu imprimé:
Un florilège de truc pas trop avec les textes et les png :
Donc voilà, si vous avez des expériences là-dessus, je ne suis pas contre quelques informations, savoir si c’est possible de garder un rendu de même qualité et placé de la même façon en ecran qu’en impression.
Merci à tous et désolé pour cette tirade
Imarkahann
Partager