Blz ?
Galera eu tenho este método para impressão (usando PDFRenderer):
[code]public static void printByName(InputStream inputStream, String printerName, String jobName) throws Exception{
byte[] pdfContent = Util.getBytesFromInputStream(inputStream);
ByteBuffer buffer = ByteBuffer.wrap(pdfContent);
final PDFFile pdfFile = new PDFFile(buffer);
Printable printable = new Printable() {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex >= pdfFile.getNumPages()) {
return NO_SUCH_PAGE;
}
Graphics2D graphics2D = (Graphics2D) graphics;
PDFPage page = pdfFile.getPage(pageIndex + 1);
// log("pageFormat.getImageableX(): " + pageFormat.getImageableX());
// log("pageFormat.getImageableY(): " + pageFormat.getImageableY());
// log("pageFormat.getImageableWidth(): " + pageFormat.getImageableWidth());
// log("pageFormat.getImageableHeight(): " + pageFormat.getImageableHeight());
Rectangle imageArea = new Rectangle(
(int) pageFormat.getImageableX(),
(int) pageFormat.getImageableY(),
(int) pageFormat.getImageableWidth(),
(int) pageFormat.getImageableHeight());
graphics2D.translate(0, 0);
PDFRenderer pdfRenderer = new PDFRenderer(page, graphics2D, imageArea, null, null);
try {
page.waitForFinish();
pdfRenderer.run();
} catch (InterruptedException e) {
throw new PrintException("Problemas na tentativa de imprimir o pdf.", e);
}
log("pagina existe");
return PAGE_EXISTS;
}
};
PrinterJob printJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = printJob.defaultPage();
printJob.setJobName(jobName);
Book book = new Book();
book.append(printable, pageFormat, pdfFile.getNumPages());
printJob.setPageable(book);
Paper paper = new Paper();
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
pageFormat.setPaper(paper);
PrintService printService = createPrintService(printerName);
printJob.setPrintService(printService);
printJob.print();
}[/code]
Ele imprime como eu quero, mas tbm saem folhas em branco.
Uma coisa que reparei é que o metodo print esta sendo chamado 4 vezes para um pdf de uma página. E o parametro pageIndex sempre igual a zero.
Obrigado!
Deu certo! O código esta em anexo.