2012-06-11 8 views
7

Mam następujący kod, który pokazuje okno dialogowe drukowania natywnego w mojej aplikacji java.Jak wykryć "Zapisz jako PDF ..." został wybrany z AWT PrinterJob na 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); 
} 

Ten kod działa poprawnie, gdy jest wybrana drukarka i przycisk Print kliknięciu, ale to nie działa, gdy użytkownik wybierze dowolną opcję z menu „PDF” w lewym dolnym rogu. Metoda getPrintService zwraca ostatnio wybraną drukarkę (Lillith ze zrzutu ekranu) po wybraniu jednej z opcji w menu "PDF".

Screenshot of OS X print dialog

Czy ktoś może sugerować, co należy zrobić, aby wykryć, kiedy „Zapisz jako PDF ...” został wybrany w oknie dialogowym drukowania i odpowiednio reagować.

+0

Co zrobić, gdy twój program robi prawdziwą drukarkę, ale wybierz „Zapisz jako PDF ...”? – millimoose

+0

Otrzymuję strony wydrukowane w drukarce i nie zapisano żadnego pliku pdf lub postscript. –

+0

@trashgod Gdzie ten przykład drukuje? – millimoose

Odpowiedz

0

Czy próbowałeś dodać odbiorcę zadań drukowania? Wystarczy przeczytać o tym teraz, mam nadzieję, że będzie to być pomocne:

Print Job Listener