2010-12-04 26 views
1

J'ai un JTextComponent (JTextArea). J'essaie d'imprimer son contenu en utilisant la nouvelle fonctionnalité 1.6 .print(). Cela fonctionne bien. Je fais aussi cela dans un mode sans tête/non-interactif en utilisant la signature de la méthode suivante:Comment changer les paramètres d'impression lors de l'utilisation de new java 1.6 JTextComponent print()

boolean print(MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintService service, PrintRequestAttributeSet attributes, boolean interactive);

Encore une fois ce imprime mon contenu.

CEPENDANT ... Je voudrais mettre mes propres paramètres d'impression (à savoir la taille de la marge et la taille du papier) .. Les miens sont personnalisés/non-standard comme cela est pour une imprimante de reçus -

Est-il possible définir/configurer ces informations lors de l'utilisation de ce mode d'impression? Le problème que j'éprouve maintenant est d'essayer d'adapter mon contenu à la zone imprimable - et j'adorerais avoir plus de contrôle - j'imagine que j'utiliserais PrintJob et Document, ce serait disponible via l'objet PageFormat - Mais je ne sais pas Je sais comment faire la même chose en utilisant la méthode d'impression en convience ci-dessus.

Merci à l'avance -A-

Répondre

2

Vous devez utiliser les attributs PrintRequestAttributeSet pour spécifier les attributs de la tâche d'impression.

Vous créez une nouvelle instance de la PrintRequestAttributeSet

PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); 

Vous devez ensuite ajouter les attributs de votre demande à cet ensemble. Take a look here pour tous les différents attributs que vous pouvez utiliser.

Je pense que vous aurez besoin MediaSize et MediaPrintableArea

+0

Encore une fois - je veux utiliser un MediaSize personnalisé - pas l'un des standards. J'ai supposé que cela pourrait être aussi simple que ci-dessus. Toutefois, lorsque j'appelle ce qui suit: attributes.add (new MediaSize (80, 3000, Size2DSyntax.MM)); Je reçois une exception de classe cast de verifyAttributeValue interne ... ce qui semble étrange – a1o1

+0

En fait, c'était mon problème - je me concentrais sur MediaSize. Je viens d'essayer un MediaPrintableArea personnalisé et il semble beaucoup mieux! – a1o1

+0

Heureux que cela a fonctionné pour vous. – Codemwnci