IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Changement de police lors de l'impression


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut Changement de police lors de l'impression
    Bonjour !

    J'essaie d'imprimer un JTextPane (qui interprète mon texte en html). J'ai donc créé une classe qui implémente Printable et dans la méthode print(), après translation et remise à l'échelle, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monJTextPane.print(leGraphicsEnParamètreDePrint)
    Mais même en changeant la fonte du graphics en amont, ce n'est pas la bonne à l'impression. Alors que si j'affiche monJTextPane dans une JFrame pendant la méthode je constate qu'il est bien construit, avec la bonne police...

    Je n'utilise que la police "générale" monospaced, c'est pas la plus dure à gérer pourtant !

    J'ai essayé en créant une image à partir du JTextPane pour la dessiner sur le graphics de l'impression mais, si la fonte est bien monospace, la qualité est exécrable genre illisible. (Ce qui est incompréhensible c'est que pour avoir l'image, je fais aussi un monJTextPane.print(g) sauf que g est lié à une BufferedImage)

    Hum... étrange... Je viens de lancer un test pour vérifier que je vous dit bien tout, que je n'ai rien loupé d'important. Je switch entre la méthode "par l'image" et la méthode "par le paint" et le résultat est : la 1ère page comme si c'était par l'image et la 2nde comme je m'y attendais (claire mais décalée à cause du changement de police). Je relance le programme sans rien changer et là le résultat est "normal". Etonnant, non ?

    Merci,

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut
    Bonjour !

    Comme personne n'a de réponse je vais synthétiser mon problème :
    Le texte html interprété par mon JTextPane s'affiche bien quand le Graphics sur lequel il est dessiné provient de lui-même (logique) ou d'une BufferedImage. Mais quand le Graphics provient d'un PrinterJob, les balises de gras sont interprétées mais pas les balises de gestion des polices (qui, je viens d'avoir une illumination, sont gérées par CSS grâce à l'objet StyleSheet).

    Est-il possible que le CSS soit géré par JTextPane seulement dans certains environnements graphiques ?

    Petite question provoquée par mes tests : pourquoi, lorsque je crée un JPanel, son Graphics est null ?

    Merci

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sinono tu ttriches, tu fais le paint sur une image, et ensuite tu balance l'image sur les graphics du printer ^^.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut
    Citation Envoyé par sinok Voir le message
    Sinono tu ttriches, tu fais le paint sur une image, et ensuite tu balance l'image sur les graphics du printer ^^.
    Déjà testé, la résolution de l'image est trop mauvaise, on ne peut rien lire... Mais si tu connais un moyen de garder la résolution de l'image dans le drawImage, la solution me convient !

    Citation Envoyé par bouye Voir le message
    Une autre possibilite pour ton probleme de CSS : il est possible que le rendu soit effectue en plusieurs passes ou differe ce qui de toute maniere semble logique pour l'utilisation d'un CSS.
    là j'ai pas tout compris ^^', c'est logique que le CSS ne donne pas toujours la même chose ? Pourquoi on l'utilise alors ?

    Citation Envoyé par bouye Voir le message
    Parce que !
    Et il ne faut pas utiliser le Graphics retourne par getGraphics()
    Bien ! Je m'en souviendrais !

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 906
    Billets dans le blog
    54
    Par défaut
    Parceque la page est chargée d'abord et le CSS est appliqué ensuite et que cet ensuite, ça peut être APRES que ta page ait été imprimée suivant comment s'enchainent tes appels pour lancer l'impression par rapport à l'EDT (mais il s'agit juste là d'une hypothèse).

    D'autres composants tels que le JSlider (ou pour être précis son UI) font une utilisation intensive de SwingUtilities.invokeLater() contrairement à d'autres composants dont la vue est modifiée intantanément. C'est pour cela qu'il est difficile d'utiliser un JSlider comme renderer / editor d'une JTable contrairement à un JLabel ou une JCheckBox par exemple.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut
    Citation Envoyé par bouye Voir le message
    Parceque la page est chargée d'abord et le CSS est appliqué ensuite et que cet ensuite, ça peut être APRES que ta page ait été imprimée suivant comment s'enchainent tes appels pour lancer l'impression par rapport à l'EDT (mais il s'agit juste là d'une hypothèse).
    Si ton hypothèse était juste, est-ce qu'un Thread.sleep() ou un Thread.yield() résoudrait le problème ?

    En attendant, je peux toujours faire les tests...

    à+

    Edit : l'ajout de Tread.yield() juste après editeur.paint(g2d) n'est pas concluant, il semblerait qu'il n'y ai pas d'autre thread en cours. A moins qu'il faille le placer ailleurs mais je ne vois pas où...

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 906
    Billets dans le blog
    54
    Par défaut
    Une autre possibilite pour ton probleme de CSS : il est possible que le rendu soit effectue en plusieurs passes ou differe ce qui de toute maniere semble logique pour l'utilisation d'un CSS.

    Citation Envoyé par Narah Voir le message
    Bonjour !
    Petite question provoquée par mes tests : pourquoi, lorsque je crée un JPanel, son Graphics est null ?
    Parce que !
    Et il ne faut pas utiliser le Graphics retourne par getGraphics()
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Problème de changement de bac lors d'une impression
    Par basic83 dans le forum AS/400
    Réponses: 4
    Dernier message: 14/03/2012, 11h16
  2. [PPT-2007] Changement de l'alignement de police lors d'insertion de slides
    Par Opatija dans le forum Powerpoint
    Réponses: 2
    Dernier message: 20/05/2011, 10h55
  3. Changement de CSS lors d'un mouseover
    Par jeff37 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 27/05/2005, 16h03
  4. Changement de FOCUS lors d'un changement d'application
    Par gmc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/02/2005, 17h57
  5. Faire disparaître menu lors de l'impression
    Par jackrabbit dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/12/2004, 20h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo