Olá
Estou utilizando a API da SUN para impressão de um PDF diretamente a partir de um applet.
Minha necessidade é gerar o pdf e enviá-lo diretamente para a impressora, sem intervenção do usuário.
Pois bem, a API funciona muito bem mas o único problema está sendo fazer com que o resultado impresso seja o mesmo que eu estou visualizando.
Estou fazendo configurações no código meio que por tentativa e erro e eu até consegui fazer com que imprima de uma maneira correta, o único problema é que daí quando eu visualizo fica desalinhado.
O código que estou usando é o seguinte:
File f = new File("c\\temp\\teste_pdf.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();
Paper paper = new Paper();
paper.setImageableArea(0, 0, 800, 1300);
paper.setSize(800, 1300);
pf.setPaper(paper);
pjob.setJobName(f.getName());
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
pjob.print();
Estou tentando imprimir numa folha A4. A largura 800 e a altura 1300 eu consegui como disse no chute.
Há alguma forma mais precisa de definir e enquadrar o documento para que ele apareça corretamente tanto na impressão quanto na visualizaçao??