MediaSizeName.ISO_A4 nao funciona

0 respostas
montano

Bom dia,

Estou tendo dificuldade para imprimir um PDF. O tamanho da imagem sai menor e algumas letras falhadas

Segue abaixo minha classe.

public void printPDF(String caminhoArquivo, int nCopias, boolean retrato, String impressora) {
		
		FileInputStream psStream = null;  
        try {  
            File f = new File(caminhoArquivo);  
            psStream = new FileInputStream(f);                
            FileChannel fc = psStream.getChannel();  
            ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());  
            PDFFile pdfFile = new PDFFile(bb);  
            PDFPrintPage pages = new PDFPrintPage(pdfFile);            
            
            /* Seta configuracoes */
            PrintRequestAttributeSet aset = this.config(nCopias, retrato);
            
            /* PrinterJob */
            PrinterJob pj = PrinterJob.getPrinterJob();
            
            /* Configura qual impressora sera usada */            
            if (impressora == null) {
            	pj.setPrintService(PrintServiceLookup.lookupDefaultPrintService());
            } else {
	            PrintService[] ps = PrinterJob.lookupPrintServices();              
	            for(int i=0; i<ps.length; i++){  
	                if(ps[i].toString().equals(impressora)){                	
	                	pj.setPrintService(ps[i]);    
	                	break;
	                }
	            }
            }
            
            PageFormat pf = pj.getPageFormat(aset);
            pj.setJobName(f.getName());
            pj.setCopies(nCopias);                
            Book book = new Book();
            book.append(pages, pf, pdfFile.getNumPages());
            pj.setPageable(book);
            pj.print();
        } catch (Exception ex) {
        	this.setError("Ocorreu um erro: " + ex.getMessage());        	
        }         	        
	}
	
	/**
	 * @param nCopias
	 * @param retrato
	 * @return
	 */
	private PrintRequestAttributeSet config(int nCopias, boolean retrato) {
		PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();     
        aset.add(new Copies(nCopias));   
        aset.add(MediaSizeName.ISO_A4);  
        if (retrato) {
        	aset.add(OrientationRequested.PORTRAIT);
        } else {
        	aset.add(OrientationRequested.LANDSCAPE);
        }
        aset.add(Sides.TUMBLE);
        return aset;
	}

Obrigado pela ajuda

Criado 11 de agosto de 2010
Respostas 0
Participantes 1