Bom dia galera, estou com um grande problema aqui. Minha aplicação precisa de um impressão de alguns arquivos PDF, já está tudo ok, está gerando os arquivos e abrindo normalmente, no entanto na hora de imprimir não estou conseguindo fazer de forma correta. Para ficar mais claro, estava usando o Print do AWT para fazer a interação, no entando a impressão da primeira sai normal e a segunda sai de lado. Gostaria que algum dos amigos se já tiveram experiencia com isso se puderem me dar uma mãozinha.
Pra ficar bem claro, já estou pegando os PDFs, e já está imprimrindo, no entando imprime de maneira errada.
Aqui vai uma parte do código pra vocês darem uma olhada, peguei na internet uma parte, já alterei a orientação do papel, já modifiquei o tamanho do papel para A4 e continua vindo errado, já consultei o PDF também e ele está perfeito.
public void printPDF(List contratos) {
try {
for (Contrato c : contratos) {
//ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("pdfs/contratos") + "/" + aditivo.getNumeroAditivo() + ".pdf"
File file = new File(ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("pdfs/contratos/"+ c.getNumeroContrato() + ".pdf"));//document.pdf");
if (file.getAbsolutePath().endsWith("pdf")) {
// cria referencia do arquivo pdf
FileInputStream fis = new FileInputStream(file);
FileChannel fc = fis.getChannel();
//ByteBuffer bb mudou para MappedByteBuffer
//pois acusa erro de compilação
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page
PDFPrintPage pages = new PDFPrintPage(pdfFile);
// criar a funcao de imprimir
PrinterJob pjob = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
//define tamanho do papel
Paper paper = new Paper();
paper.setSize(840, 860);//ou 840, 850 talvez
paper.setImageableArea(0, 0, 840, 860);
/*A4 sem borda
paper.setSize(585, 832);
paper.setImageableArea(0, 0, 585, 832);
http://www.jpedal.org/gplSrc/org/jpedal/examples/simpleviewer/paper/PaperSizes.java.html*/
pf.setPaper(paper);
//
pjob.setJobName(file.getName());
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
// envia a impressao para a impressora padrao
pjob.print();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}