amiloM1425 Posted June 15, 2009 at 08:36 AM Report #272303 Posted June 15, 2009 at 08:36 AM Olá a todos, Estou a ter o seguinte problema, a aplicação permite imprimir relatórios, estes relatórios são documentos pdf gerados automaticamente pela aplicação utilizando o iText. O problema é que quando mando imprimir esse pdf ele é enviado para impressora como sendo do tipo Letter e não como A4, o que em impressoras mais antigas é um problema, pois é necessário ir até à impressora e autorizar a impressão do documento do tipo Letter. O método para imprimir é o seguinte: public boolean printPdf(String completeFilePath, Boolean delete) { File f = null; try { PrintService selectedPrintService = null; PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null); for (PrintService service : printServices) { if (service.getName().compareTo(confInfo.getPrinter())==0) { selectedPrintService=service; break; } } if (selectedPrintService!=null) { f = new File(completeFilePath); FileInputStream fis = new FileInputStream(f); FileChannel fc = fis.getChannel(); java.nio.ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); PDFFile pdfFile = new PDFFile(bb); PDFPrintPage pages = new PDFPrintPage(pdfFile); PrinterJob printJob = PrinterJob.getPrinterJob(); PageFormat pf = PrinterJob.getPrinterJob().defaultPage(); Paper paper = new Paper(); paper.setImageableArea(0,0,paper.getWidth(),paper.getHeight()); pf.setPaper(paper); PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(MediaSizeName.ISO_A4); printJob.setJobName(f.getName()); Book book = new Book(); book.append(pages, pf, pdfFile.getNumPages()); printJob.setPageable(book); printJob.setPrintService(selectedPrintService); printJob.print(aset); fis.close(); f.delete(); return true; } else { return false; } } catch(Exception e) { e.printStackTrace(); return false; } } Há alguma coisa de errado no código? Existe alguma outra forma para imprimir um documento pdf? Desde já agradeço a vossa atenção.
KiNgPiTo Posted June 15, 2009 at 01:41 PM Report #272402 Posted June 15, 2009 at 01:41 PM Uma altura tinha também o mesmo problema e resolvi-o por não optar pelo printer do iText... Utilizei antes a class que encontrei neste site: http://www.juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ Cumprimentos
amiloM1425 Posted June 15, 2009 at 02:33 PM Author Report #272420 Posted June 15, 2009 at 02:33 PM KiNgPiTo, obrigado pela indicação, mas a solução apresentada é quase em tudo semelhante ao que estou a fazer para imprimir o meu documento 🙂
amiloM1425 Posted June 15, 2009 at 04:53 PM Author Report #272449 Posted June 15, 2009 at 04:53 PM Problema resolvido. Defini o tamanho de uma folha A4 à mão e as impressoras mais velhas já gostaram. Paper paper = new Paper(); paper.setSize(594.936, 841.536); paper.setImageableArea(0, 0, 594.936, 841.536); pf.setPaper(paper);
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now