Olá
Estou utilizando a API PDF Renderer para tentar imprimir um PDF direto sem intervenção do usuário.
O que ocorre é que meu pdf tem 2 páginas. A primeira página é impressa corretamente, no tamanho que eu configurei, orientação retrato.
A segunda página, porém, é impressa em paisagem e totalmente fora de margem.
Alguém sabe o que pode ser o problema?
O código é o seguinte
try {
PageFormat pagerformat = new PageFormat();
PDFPrintPage page;
File f = new File(arquivo);
RandomAccessFile raf = new RandomAccessFile(f, MODO_LEITURA);
FileChannel fc = raf.getChannel();
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset);
PrintService printerService = null;
for (int i = 0; i < services.length; i++){
PrintService pservice = (PrintService) services[i];
String svcName = pservice.getName();
System.out.println("encontrado " + svcName);
if (svcName.equalsIgnoreCase(impressora)){
printerService = services[i];
break;
}
}
if (printerService == null){
System.out.println("Impressora " + impressora + " não foi localizada.");
return;
}
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
PDFFile pdfFile = new PDFFile(bb);
page = new PDFPrintPage(pdfFile);
PrinterJob pjob = PrinterJob.getPrinterJob();
PrintRequestAttributeSet atset = new HashPrintRequestAttributeSet();
atset.add(MediaSizeName.ISO_A4);
atset.add(Fidelity.FIDELITY_TRUE);
atset.add(OrientationRequested.PORTRAIT);
Paper paper = new Paper();
paper.setSize(MediaSize.ISO.A4.getSize(MediaSize.MM)[0] * 4,
MediaSize.ISO.A4.getSize(MediaSize.MM)[1] * 4);
double width = (double) MediaSize.ISO.A4.getSize(MediaSize.MM)[0] * 3.932;
double height = (double) MediaSize.ISO.A4.getSize(MediaSize.MM)[1] * 3.932;
paper.setImageableArea(5.0, 5.0, width , height);
pagerformat.setOrientation(PageFormat.PORTRAIT);
pagerformat.setPaper(paper);
pjob.setJobName(f.getName());
Book book = new Book();
book.append(page, pagerformat, pdfFile.getNumPages());
pjob.setPageable(book);
pjob.setPrintService(printerService);
pjob.print();
raf.close();
raf = null;
f = null;
} catch (Exception e){
System.out.println("Erro durante a impressão: " + e.getMessage());
}
System.out.println("Impressão concluída");
Tentei utilizar exemplos do jpedal que eu achei na internet mas nenhum envia para a impressora.
Alguém sabe algum exemplo que realmente funcione de JPedal?