2012-06-11 19 views
7

Tengo el siguiente código que muestra un diálogo de impresión nativa en mi aplicación Java.Cómo detectar el 'Guardar como PDF ...' fue seleccionado de un AWT PrinterJob en OS X

PrinterJob job = PrinterJob.getPrinterJob(); 
PrintRequestAttributeSet atts = new HashPrintRequestAttributeSet(); 
atts.add(DialogTypeSelection.NATIVE); 

if (job.printDialog(atts)) 
{ 
    PrintService newlyUsedService = job.getPrintService(); 
    DocPrintJob docJob = newlyUsedService.createPrintJob(); 
    // print the passed javax.print.SimpleDoc object. 
    docJob.print(simpleDoc, atts); 
} 

Este código funciona bien cuando se selecciona una impresora y se hace clic en el botón de impresión, pero no funciona cuando el usuario selecciona cualquier opción del menú “PDF” en la parte inferior izquierda. El método getPrintService devuelve la última impresora seleccionada (Lillith de la captura de pantalla) cuando se selecciona una de las opciones en el menú "PDF".

Screenshot of OS X print dialog

Podría alguien sugerir lo que debe hacerse para detectar cuando “Guardar como PDF ...” fue seleccionado en el diálogo de impresión y responder en consecuencia.

+0

¿Qué hace el programa cuando se pone la impresora real, sino que selecciona "Guardar como PDF ..."? – millimoose

+0

Obtengo las páginas impresas en la impresora y no se guarda ningún archivo pdf o postscript. –

+0

@trashgod ¿Dónde se imprime ese ejemplo? – millimoose

Respuesta

0

¿Ha intentado agregar un Oyente de trabajos de impresión? Basta con leer para arriba en él ahora, espero que será de alguna ayuda:

Print Job Listener

Cuestiones relacionadas