Olá Pessoal, tenho a necessidade de imprimir arquivos pdf através de uma aplicação em Java, o mesmo deve aceitar a configuração de alguns parâmetros como quantidade de cópias, cor (Colorido ou escala de cinza) e retrato/paisagem.
Estou realizando alguns testes com as classes ‘java.awt.print.PrinterJob’ e ‘javax.print.DocPrintJob’ para realizar a impressão. Ambas aceitam o ‘PrintRequestAttributeSet’ que me permitiria configurar os parâmetros desejados, porém nem todos funcionam.
Por exemplo: Configuro o attributeSet para um número x de cópias e o arquivo só imprime uma vez ou configuro o atributo como ‘Chromaticity.MONOCHROME’ e o mesmo continua imprimindo colorido.
Segue alguns exemplos de código:
//Só limita o range de impressão. Imprimi página 1 e 2, porém não imprime duas cópias e continua imprimindo colorido.
PDDocument pdfFile = PDDocument.load(new File("MYPATH"));
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new PDFPageable(pdfFile));
PrintRequestAttributeSet printSet = new HashPrintRequestAttributeSet();
printSet.add(new Copies(2));
printSet.add(new PageRanges(1,2));
printSet.add(Chromaticity.MONOCHROME);
job.print(printSet);
//Mesmo problema
PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob printerJob = defaultPrintService.createPrintJob();
File pdfFile = new File("MYPATH");
SimpleDoc simpleDoc = new SimpleDoc(pdfFile.toURL(), DocFlavor.URL.AUTOSENSE, null);
PrintRequestAttributeSet printSet = new HashPrintRequestAttributeSet();
printSet.add(new Copies(2));
printSet.add(Chromaticity.MONOCHROME);
printSet.add(new PageRanges(1,1));
System.out.println("teste");
try {
printerJob.print(simpleDoc, printSet);
} catch (PrintException ex) {
ex.printStackTrace();
}
Sabem informar alguma biblioteca que possa me auxiliar nesse processo, ou tutoriais??
Obrigado!