Impressao de Arquivo: Configuração

Bom dia, estou criando uma classe para imprimir arquivos direto em uma impressora só que tem algumas coisas que nao estao funcionando, por exemplo o tamanho da imagem e quantidade de copias.

	/**
	 * @param caminhoArquivo
	 * @param nCopias
	 * @param retrato
	 * @return 
	 */
	public void imprimir(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 */
            PrintService[] ps = PrinterJob.lookupPrintServices();              
            for(int i=0; i<ps.length; i++){  
                if(ps[i].toString().equals(impressora)){                	
                	pj.setPrintService(ps[i]);                      	
                }
            }
            
            PageFormat pf = PrinterJob.getPrinterJob().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;
	}

O setCopies(nCopias) nao funciona, ele imprimi sempre 1 copia somente. Nem o aset.add(new Copies). O MediaSizeName esta para A4, porem pdf que esta sendo impresso aparece bem pequeno na folha :S

Valeu.