Olá a todos,
Espero que alguém possa me ajudar em um caso bem específico.
Tenho 2 impressoras configuradas na máquina servidora de aplicação.
Segue a configuração da impressora: modo DUPLEX / 2 páginas por folha / MODO PAISAGEM.
Estas impressoras foram adicionadas via REDE criando-se portas do IP da impressora (possui PRINT SERVER / Marca: RICOH).
Quando executado a rotina de impressão pelo servidor, a impressão funciona da forma que foi configurado originalmente.
Quando executado a rotina de impressão pelo cliente (faz-se uma requisição ao servidor), a impressão funciona porém não da forma que foi configurado originalmente.
Verifiquei que quando encontrado os objetos PrintServices (via lookup e pelo nome) das impressoras pelo código via requisição cliente-servidor, as configurações de impressora são zeradas e acabam imprimindo uma página por folha só frente.
Já tentei passar parâmetros manualmente (via jasperReport) tais como:
// Parâmetro (variável já setada anteriormente)
JasperPrint impressao;
PrintService[] services = PrintServiceLookup.lookupPrintServices(null,null);
JRPrintServiceExporter exporter = new JRPrintServiceExporter();
PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
printRequestAttributeSet = new HashPrintRequestAttributeSet();
printRequestAttributeSet.add(Sides.DUPLEX);
printRequestAttributeSet.add(OrientationRequested.PORTRAIT);
printRequestAttributeSet.add(MediaSizeName.ISO_A4);
printRequestAttributeSet.add(new NumberUp(2));
exporter.setParameter(JRExporterParameter.JASPER_PRINT, impressao);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,printServiceAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET,printRequestAttributeSet);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,Boolean.FALSE);
exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,Boolean.FALSE);
exporter.exportReport();
Mesmo manualmente, a única coisa que funciona é imprimir em modo paisagem.
E sim, a impressora funciona DUPLEX e 2 PÁGINAS POR FOLHA.
Sendo assim verifiquei o seguinte.
Quando rodado o seguinte código (para verificar os atributos do objeto printService):
[code] PrintService[] printServices = PrintServiceLookup.lookupPrintServices(
null, null); // get printers
for (PrintService printService : printServices) {
System.out.println("Found print service: " + printService);
Set<Attribute> attribSet = new LinkedHashSet<Attribute>();
Class<? extends Attribute>[] supportedAttributeCategories = (Class<? extends Attribute>[]) printService
.getSupportedAttributeCategories();
for (Class<? extends Attribute> category : supportedAttributeCategories) {
DocFlavor[] flavors = printService.getSupportedDocFlavors();
String aux = "";
for (DocFlavor flavor : flavors) {
Object supportedAttributeValues = printService
.getSupportedAttributeValues(category, flavor,
printService.getAttributes());
if (supportedAttributeValues instanceof Attribute) {
Attribute attr = (Attribute) supportedAttributeValues;
if (!attr.getName().equals(aux)){
attribSet.add(attr);
aux = attr.getName();
}
} else if (supportedAttributeValues != null) {
Attribute[] attrs = (Attribute[]) supportedAttributeValues;
for (Attribute attr : attrs) {
if (!attr.getName().equals(aux)){
attribSet.add(attr);
aux = attr.getName();
}
}
}
}
}
for (Attribute attr : attribSet) {
System.out.println(attr.getName());
System.out.println(printService.getDefaultAttributeValue(attr
.getCategory()));
}
}
[/code]
Quando executado pela própria servidora máquina da aplicação, o seguinte resultado é:
Quando executado pela requisitação cliente-servidor, o seguinte resultado é:
Reparem que os atributos SITES, REQUEST-USER-NAME, ORIENTATION-REQUESTED estão diferentes.
Alguém poderia me dar alguma dica ou ajuda a respeito, por favor ?
Alguém já teve algum problema semelhante ?
Obrigado,
Abs,