Comment afficher la boîte de dialogue d'impression dans java fx et imprimer des documents (pas seulement des nœuds)


J'essaie d'imprimer un fichier pdf généré dans un java fx mais tous les exemples que j'ai vus sont pour l'impression de nœuds java fx. J'aurais pu utiliser l'API d'impression ordinaire, mais la boîte de dialogue d'impression qu'elle montre est basée sur swing et ressemble à une application totalement différente dans le comportement et l'apparence, ce qui peut dérouter les utilisateurs.

Je voudrais afficher une boîte de dialogue avant l'impression afin que les utilisateurs puissent choisir leur imprimante préférée et également modifier la configuration de la page si possible. Selon le jdk ouvert wiki {[5] } cela était prévu dans java 8

1) PrinterJob - la classe qui contrôle le processus d'impression et fournit un support pour
* boîtes de dialogue d'impression et de mise en page qui seront la boîte de dialogue native de la plateforme au moins sous Windows et Mac OS X.

Et connexes jira question est marqué comme fixe

Cependant, cette classe PrinterJob et le paquet d'impression javafx ont deux problèmes (pour autant que je sache):

  1. Il imprime uniquement nœud.
  2. Pas de moyen d'afficher une boîte de dialogue permettant aux utilisateurs de choisir les attributs d'impression

Alors, comment puis-je fournir une boîte de dialogue d'impression dans java fx pour aider les utilisateurs à imprimer des documents pdf?

PS: J'utilise Java 8 update 20 dans un environnement de bureau (Windows 7 64 bits)

Tous les pointeurs sont appréciés.

Author: Japheth Ongeri - inkalimeva, 2014-08-19

1 answers

Si vous utilisez Java8, vous ne pouvez imprimer que des nœuds (pour autant que je sache). Mais vous pouvez créer une ImageView qui rend une image que vous pouvez imprimer. Si vous voulez imprimer un PDF, jetez un oeil à https://www.idrsolutions.com/javafx-pdf-viewer ou tout autre visualiseur PDF javafx.

Vous pouvez rendre le pdf dans un nœud (PDF Viewer) et l'imprimer.

Mais si vous voulez une boîte de dialogue d'impression, je pense que vous devez construire la vôtre.

Mais ce n'est pas vraiment difficile.

Vous pouvez utiliser tous les Informations données à partir des classes d'imprimante par exemple:

    ObservableList<PaperSource> paperSources = FXCollections.observableArrayList();
    paperSources.add(PaperSource.AUTOMATIC);
    paperSources.add(PaperSource.BOTTOM);
    ...

    PrintQuality.values()
    PrintSides.values() 
    ...
 0
Author: Marcel, 2014-11-04 14:20:47