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

Interfaces Graphiques en Java Discussion :

Aperçu avant impression


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 199
    Points : 164
    Points
    164
    Par défaut Aperçu avant impression
    Bonjour à tous,

    Dans mon programme j'imprime des documents PDF. Lors du lancement de l'impression, je lance directement la boîte de dialogue d'impression. Ce que j'aimerais ajouter dans cette boîte de dialogue, c'est le petit aperçu avant impression comme dans la boîte de dialogue Acrobat Reader.

    En effet, quand on ouvre un PDF et qu'on fait imprimer le fichier depuis Acrobat Reader, il y a ce petit aperçu avant impression. Voici le code que je fais au lancement de l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    final PDDocument pdf = PDDocument.load(new ByteArrayInputStream(retourXML));
     
    PrinterJob job = PrinterJob.getPrinterJob();
    PrintRequestAttributeSet printRequestSet = new HashPrintRequestAttributeSet();
     
    sun.print.DialogTypeSelection dl;
    dl.printRequestSet.add(sun.print.DialogTypeSelection.COMMON);
    job.setPageable(new PDPageable(pdf, job));
    if (job.printDialog(printRequestSet)) {
       job.print();
    }
    Est ce qu'il y a une solution en modifier des properties du PrinterJob par exemple ? Ou est ce tout autre chose à faire ?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Pour un problème similaire, j'ai contourné le problème en lançant le viewer PDF par défaut de la machine. L'utilisateur a simplement à cliquer sur le bouton d'impression de son viewer par défaut pour imprimer. S'il souhaite avoir l'aperçu avant impression, le viewer le propose donc il clic sur le bouton approprié.
    Je ne réponds pas directement à ton problème mais si tu n'as aucune contrainte la dessus, c'est une solution à envisager : tu n'as rien à gérer pour tout ce qui touche à l'impression, un autre logiciel fait tout le travail.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 199
    Points : 164
    Points
    164
    Par défaut
    Merci pour te réponse.

    Est ce que le viewer propose toutes les options d'impression par défaut : c'est à dire le nombre de page, l'orientation etc...
    De plus, est ce qu'on peut accéder au propriétés de l'imprimante sélectionnée ?

    Peut tu me montrer la démarche à suivre ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    j'ai procédé également comme @dinobogan, mais en plus j'ai ajouté un javascript qui lançait automatiquement le mode impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    File file = File.createTempFile("pdfprint", ".tmp", new File("c:/temp"));
    file.deleteOnExit();
    PDDocument pdf= null;          
      try
                {
                    pdf = PDDocument.load( new ByteArrayInputStream(retourXML) );
                    PDActionJavaScript javascript = new PDActionJavaScript(
                        "this.print(true);this.closeDoc();");
                    pdf.getDocumentCatalog().setOpenAction( javascript );
     
                    pdf.save( file );
                }
                finally
                {
                    if( pdf != null )
                    {
                        pdf.close();
                    }
                }
    Runtime.getRuntime().exec("cmd /c  \"start  \"\" /b "+file.getAbsolutePath()); // sur windows! pour mac faire "open -a "+ file.getAbsolutePath()
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 199
    Points : 164
    Points
    164
    Par défaut
    Merci pour cet exemple, ça me parait pas mal du tout.

    Sinon parmi les propriétés disponibles avec PrintRequestAttributeSet, il n'y a pas moyen de faire en sorte d'avoir le petit aperçu dans la boîte de dialogue d'impression ?

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    les attributs d'impression permet de sélectionner des paramètres tels que l'orientation, le type de papier (le chargeur), le recto/verso, etc. Ils dépendent d'ailleurs de l'imprimante (voir cette page très complète sur le sujet, avec un code qui permet de récupérer les attributs gérables par les différentes imprimantes installées)..

    Un aperçu n'est pas un attribut d'impression.

    Je ne pense pas qu'il y ait un tel support dans java. On trouve pas mal d'api, gratuites ou payantes (j'ai utilisé pour ma part j2printer à l'époque ou je travaillais encore en swing), et de tuto sur le web, plus ou moins sophistiqués (simple affichage, ui évoluée avec zoom, réglage des marges etc...). Le truc c'est qu'à partir du moment ou imprimer et afficher, c'est dessiner dans un Graphics, si on sait faire l'un, on peut faire l'autre. Le problème c'est qu'en théorie un aperçu d'impression devrait être généré par l'imprimante elle même (rien qu'imprimer un doc en couleur en n&b fait intervenir des algos que seule l'imprimante connait à priori), et je n'ai jamais trouvé d'api qui fasse ça comme ça. Je ne sais même pas si c'est possible en java.

    Ce blog, me semblant assez complet, donne les clefs pour réaliser une printpreview en dessinant la preview dans une image :

    http://developeriq.in/articles/2010/...iew-from-java/
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 199
    Points : 164
    Points
    164
    Par défaut
    Salut,

    Merci beaucoup pour ces précisions.

    Sinon j'ai une autre question concernant les paramètres d'impression. Est-ce possible de mettre par défaut la valeur "Ajuster" dans les paramètres de dimensionnement et de gestion de pages ?

    Pour savoir de quoi je parle, ouvre un PDF avec Acrobat Reader et quand tu l'imprime il y a l'option donc je te parle.

    Merci d'avance.

  8. #8
    Membre à l'essai
    Homme Profil pro
    ¨¦tudiant
    Inscrit en
    Octobre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : ¨¦tudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 17
    Points : 19
    Points
    19
    Par défaut C'est quoi la variable retourXML?
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    j'ai procédé également comme @dinobogan, mais en plus j'ai ajouté un javascript qui lançait automatiquement le mode impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    File file = File.createTempFile("pdfprint", ".tmp", new File("c:/temp"));
    file.deleteOnExit();
    PDDocument pdf= null;          
      try
                {
                    pdf = PDDocument.load( new ByteArrayInputStream(retourXML) );
                    PDActionJavaScript javascript = new PDActionJavaScript(
                        "this.print(true);this.closeDoc();");
                    pdf.getDocumentCatalog().setOpenAction( javascript );
     
                    pdf.save( file );
                }
                finally
                {
                    if( pdf != null )
                    {
                        pdf.close();
                    }
                }
    Runtime.getRuntime().exec("cmd /c  \"start  \"\" /b "+file.getAbsolutePath()); // sur windows! pour mac faire "open -a "+ file.getAbsolutePath()
    Bonjour,
    J'aimerais utiliser actuellement ce code pour une application. A quoi réfère la variable retourXML??

Discussions similaires

  1. Concepteur RAVE sous DELPHI 7 : aperçu avant impression
    Par tarbala dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/06/2020, 00h37
  2. Aperçu avant impression d'un TRichEdit
    Par PoOky dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/01/2016, 23h19
  3. Réponses: 6
    Dernier message: 04/10/2005, 20h18
  4. Aperçu avant impression
    Par Zebulon777 dans le forum Access
    Réponses: 18
    Dernier message: 15/09/2005, 10h46
  5. [Débutante] Aperçu avant impression d'un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/07/2004, 09h52

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