2010-03-26 3 views
2

Je suis à la recherche d'un bon moyen standard de générer une sortie dans mon programme RCP et de l'imprimer. Cela devrait fonctionner comme cela fonctionne sur Windows, Mac OS et Linux avec la boîte de dialogue d'impression standard. Je connais le projet Birt, mais je n'ai trouvé aucun indice sur la façon de l'implémenter dans un programme RCP et comment appeler la boîte de dialogue d'impression standard et comment transmettre le rapport généré par Birt à l'imprimante.Impression avec un programme RCP Eclipse

Heureux pour tous les conseils.

Répondre

2

Je crois que le Birt project used to use IText. (maintenant ITextPDF) L'autre solution est de integrate Apache Fop in your RCP project. (Voir Apache FOP).
Pour que cela fonctionne, it is advised to pas mettre en œuvre une renderer mais mettre en œuvre une paire IFDocumentHandler/IFPainter, dans le cadre d'un nouveau format intermédiaire (si cela a été intégré à Fop, que je ne suis pas sûr):

  • créer un nouveau projet Java, choisir un nom de package et préparer deux classes implémentant IFDocumentHandler (au niveau du document) et IFPainter (au niveau de la page).
    Ces interfaces se trouvent dans le package org.apache.fop.render.intermediate.
  • Pour enregistrer la nouvelle implémentation, vous devez définir un type MIME (voir également MimeConstants.java) et créer une classe étendue AbstractIFDocumentHandlerMaker qui sert de classe de fabrique.
  • Créez ensuite un fichier texte appelé META-INF/services/org.apache.fop.render.intermediate.IFDocumentHandler dans lequel vous écrivez le nom de classe complet de cette classe "maker". Une chose que je dois ajouter (qui manque actuellement) est une méthode setIFDocumentHandlerOverride() dans FOUserAgent, de sorte que vous pouvez configurer la sortie dans une fenêtre SWT. L'API normale est optimisée pour générer des fichiers.

Les bug 23618 (fixes sept ans plus tard!) Contient un petit exemple de faire un travail d'impression et le SWT FAQ a quelques éléments intéressants sur l'imprimante (par rapport à affichage, DPI et garniture). Ce SWT snippet est assez clair aussi.
Cependant, aucun de ces exemples n'est appelé via les commandes, même si vous pouvez define one easily) une fois que vous avez un gestionnaire (c'est-à-dire toute classe que vous avez écrite, capable d'ouvrir la boîte de dialogue d'impression). Remarque: lorsque vous appelez la boîte de dialogue Imprimer, seules les dernières versions d'Eclipse Helios 3.6 (à savoir le 3.6M5 of late January 2010) peuvent mémoriser les options sélectionnées par l'utilisateur pour tous les éditeurs textuels jusqu'à ce que le plan de travail soit arrêté. (c'est:

  • imprimante sélectionnée
  • Imprimer dans un fichier
  • préférences de l'imprimante: ce sont des options spécifiques de l'imprimante, comme la taille du papier, orientation de la page de commande, etc.)
+0

Merci, cela me semble être une très bonne réponse. Juste le lien vers mon programme RCP eclipse et la boîte de dialogue d'impression standard n'est pas clair pour moi. Et comment est la sortie "déplacé" à l'imprimante (file d'attente). – Raven

+0

Merci encore, mais il semble que nous parlons de 2 choses différentes. Je voulais comprendre comment appeler et utiliser une boîte de dialogue d'impression standard (en utilisant des commandes, pas des actions - puisque les actions devraient être utilisées), puis comment obtenir les données transmises à la file d'impression. Havent a trouvé des tutoriels à ce sujet pour le moment. – Raven

+0

@Raven: vrai, c'était une ancienne entrée FAQ basée sur des actions, ce qui est "mauvais";) J'ai mis à jour ma réponse avec quelques éléments sur le sujet, mais sans réponses définitives cependant. – VonC

Questions connexes