Problemas com RTextPrinter (java4less)


#1

Olá,

Após configurar a impressão de Notas Fiscais, depurei o código e descobri que está ocorrendo um ArrayOutOfBoundsException no código abaixo (linha de código printer.endJob()):

public class MDocPrint extends X_LBR_DocPrint {
...
	public void print(String PrinterType, String PrinterName, 
			          String charSet, boolean condensed,
			          int pitch,MDocPrintFormField[] fields){
		
		
        TextPrinter printer = PrinterFactory.getPrinter(PrinterType); // tipo da impressora
        FilePort port = new FilePort(PrinterName); // localização da impressora
        JobProperties job = printer.getDefaultJobProperties();
        job.cols = getlbr_NoCols(); // colunas na folha
        job.rows = getlbr_NoRows(); // linhas na folha
        		
        try {
        	printer.startJob(port, job);
        	        
    	    TextProperties prop = printer.getDefaultTextProperties();
    	    if (!(charSet == null || charSet.equals("")))
    	    	prop.characterSet = charSet;
    	    
    	    prop.condensed = condensed;
    	    prop.pitch = pitch;
    	    
    	    //COMANDOS ESCP - linespacing = 1/8
    	    //String ESCP = "eC6e0";
    	    //printer.printString(ESCP,0,0,prop);

    	    int lenght = fields.length;
    	    for (int i=0;i<lenght;i++){
    	  
    	    	printer.printString(fields[i].getValue(), fields[i].getLocationY(), fields[i].getLocationX(), prop);
    		}
    	    
    	    //Finish Job
            printer.endJob(); // <<<<<<<<<<<<<<<<<< O ERRO OCORRE AQUI <<<<
        }
        catch (TextPrinterException ex) {
        	ex.printStackTrace();
    	}
    	        
    }

O erro ocorre mais precisamente na classe TextPrinter, linha 615, mas não tenho o código para depurar.
Alguém sabe o que pode estar causando isso?

Obrigado,

Petterson


#2

o problema deve ser na tela impressão de documentos, vc não deve ter preenchido os valores dos campos número de linhas e colunas…

provavelmente o código esta tentando atribuir a alguma coluna ou linha fora do tamanho do formulário, causando o indexoutofbounds


#3

Olá Mario,

Obrigado, era exatamente isso.