Impressao de PDF

1 resposta
H

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?

1 Resposta

Arist_eles

Boa tarde!

Sei que já faz algum tempo, mas agora me deparei com o mesmo problema.
H4nsi_Kursch você conseguiu resolver este problema?

Abraço!

Criado 24 de julho de 2009
Ultima resposta 9 de dez. de 2009
Respostas 1
Participantes 2