2009-04-26 4 views
0

J'essaie d'utiliser l'information PageFormat pour modifier mon impression basée sur javax.swing avant de l'imprimer. Je suis perplexe quant à la façon dont je peux obtenir le PageFormat de PrintJob (qui est obtenu en utilisant getPrinterJob() et printDialog()). Je sais qu'il existe la méthode getPageFormat, mais je n'arrive pas à comprendre comment obtenir le PrintRequestAttributeSet (qui n'est pas le printJob.getPrintService(). GetPrintAttributes()). Honnêtement, tout ce que je veux vraiment savoir, c'est la largeur et la hauteur de la page. Des idées sur comment je peux faire ça? Merci.comment obtenir le PageFormat à partir d'un Java.awt.print.PrinterJob

+0

c'est le problème, je ne peux pas obtenir le PageFormat pour le travail d'impression. –

Répondre

0

Si vous avez juste besoin Je pense que la largeur de la page et la hauteur, PageFormat.getImageableWidth() et PageFormat.getImageableHeight() sont ce que vous cherchez.

Désolé, ce n'est pas ce que vous vouliez. Que diriez-vous cela pour un hack:

printable.setFakeJob(true); 
job.print(); 
printable.setFakeJob(false); 
job.print(); 

et dans votre imprimable,

public int print(Graphics graphics, PageFormat pf, int pageIndex) { 
    if (isFakeJob()) { 
     /* use passed-in PageFormat to set up whatever you need to set up */ 
     return NO_SUCH_PAGE; 
    } else { 
     /* do your actual printing */ 
    } 
} 

Pas assez, il est vrai.

+0

c'est le problème, je ne peux pas obtenir le PageFormat pour le travail d'impression. –

+0

Désolé, réussi à tromper votre question! Je comprends maintenant, je pense: vous voulez obtenir la taille de la page * avant * votre méthode Printable.print (Graphics, PageFormat, int) est rappelé. Malheureusement, je ne vois pas non plus un moyen de le faire: PrinterJob ne semble pas vous laisser accéder aux choix que l'utilisateur fait dans la boîte de dialogue d'impression sans appeler PrinterJob.print(). J'ai une idée pour un hack que je posterai comme une autre réponse. –

+0

c'est moche, mais ça marche. –

2

L'approche de l'exécution d'un travail d'impression «faux» ne fonctionne pas, au moins à long terme. Je l'ai essayé. Au début, cela a bien fonctionné ... puis certains clients ont commencé à signaler des comportements étranges.

Il s'avère, avec quelques imprimantes et certaines configurations, même les «faux» travaux provoquent une activité sur l'imprimante. Aucune page de document imprimée, mais l'activité de la file d'attente, les pages d'en-tête du travail, et parfois un peu de sortie de la poubelle (si je me souviens bien). Les entrées de file d'attente bidon étaient suffisantes pour interférer avec l'impression normale, dans certains cas, et déroutant pour l'utilisateur. Oui, obtenir le PageFormat à l'avance était une douleur.

Questions connexes