Witam,

Od kilku godzin poszukuję w Sieci sposobu jak wydrukować plik PDF, z oknem dialogowym - tak, aby użytkownik mógł wybrać z której drukarki chce skorzystać. Wyświetlenie okna umożliwia klasa odpowiedzialna za drukowanie PrinterJob, metodą printDialog(), lecz nie potrafię przekazać obiektowi tej klasy pliku PDF. Bez okna dialogowego sprawa jest banalna przy użyciu klasy DocPrintJob, lecz nie można wtedy kontrolować, do której drukarki pójdzie zadanie(tzn idzie zawsze to tej, która jest ustawiona domyślnie w systemie. Udało mi się rozwiązać problem za pomocą biblioteki PDFGenerator, lecz miałem jedynie wersję trialową(pełna jest płatna), która dodawała do wydruku swoją reklamę, więc to rozwiązanie odpada. Inna biblioteka - PDFRenderer również umożliwia wykonanie tego czego potrzebuję, ale nie wiedzieć czemu drukuje mi dokument jedynie na 1/4 strony, w lewym górnym rogu. Tutaj kod:

File f = new File(g.getSciezkaZap()+"/"+data[0]+"_"+data[1]+"_"+data[2]+"/"+data[0]+"_"+data[1]+"_"+data[2]+".pdf");
		FileInputStream fis = new FileInputStream(f);
		FileChannel fc = fis.getChannel();
		ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
		PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page
		PDFPrintPage pages = new PDFPrintPage(pdfFile);
		PrinterJob pjob = PrinterJob.getPrinterJob();
		PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
		
		pjob.setJobName(f.getName());
		Book book = new Book();
		book.append(pages, pf, pdfFile.getNumPages());
		pjob.setPageable(book);
		if (pjob.printDialog()) {
		      try {pjob.print();}
		      catch (PrinterException exc) {
		            System.out.println(exc);
		      }
		} 

Ta funkcjonalność to ostatni element większej aplikacji, która została mi do zaimplementowania. Do deadline'u jeszcze trochę, ale jestem niesamowicie zdesperowany żeby jak najszybciej to skończyć, dlatego bardzo proszę wszystkich, którzy są w stanie mi pomóc w jakikolwiek sposób na odpowiedź. Ewentualnie o propozycję jak przekazać plik pdf obiektowi klasy PrinterJob. Z góry dziękuję :)