Impressão via usuário Cliente da aplicação - AJUDA - Desconfiguração de impressão

0 respostas
timoteosoutello

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  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):

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()));
			}
		}

Quando executado pela própria servidora máquina da aplicação, o seguinte resultado é:

Found print service: Win32 Printer : LID1

job-name=> Java Printing
requesting-user-name=> timoteo
copies-supported=> null
spool-data-destination=> file:/C:/workspace_branch/tEST/out.prn
orientation-requested=> portrait
page-ranges=> 1-[telefone removido]
media=> iso-a4
media-printable-area=> (4.233,4.233)->(201.507,288.459)mm
ipp-attribute-fidelity=> false
sheet-collate=> uncollated
sun-alternate-media=> null
chromaticity=> color
sides=> two-sided-long-edge
printer-resolution=> 60000x60000 dphi

Found print service: Win32 Printer : LID3
job-name=> Java Printing
requesting-user-name=> timoteo
copies-supported=> null
spool-data-destination=> file:/C:/workspace_branch/tEST/out.prn
orientation-requested=> portrait
page-ranges=> 1-[telefone removido]
media=> iso-a4
media-printable-area=> (4.233,4.233)->(201.507,288.459)mm
ipp-attribute-fidelity=> false
sheet-collate=> uncollated
sun-alternate-media=> null
chromaticity=> color
sides=> two-sided-long-edge
printer-resolution=> 60000x60000 dphi

Quando executado pela requisitação cliente-servidor, o seguinte resultado é:

Found print service: Win32 Printer : LID3
job-name=> Java Printing
requesting-user-name=> SYSTEM
copies-supported=> null
spool-data-destination=> file:/D:/java/out.prn
orientation-requested=> portrait
page-ranges=> 1-[telefone removido]
media=> iso-a4
media-printable-area=> (4.233,4.233)->(201.507,288.459)mm
ipp-attribute-fidelity=> false
sheet-collate=> uncollated
sun-alternate-media=> null
chromaticity=> color
sides=> one-sided
printer-resolution=> 60000x60000 dphi

Found print service: Win32 Printer : LID1
job-name=> Java Printing
requesting-user-name=> SYSTEM
copies-supported=> null
spool-data-destination=> file:/D:/java/out.prn
orientation-requested=> portrait
page-ranges=> 1-[telefone removido]
media=> iso-a4
media-printable-area=> (4.233,4.233)->(201.507,288.459)mm
ipp-attribute-fidelity=> false
sheet-collate=> uncollated
sun-alternate-media=> null
chromaticity=> color
sides=> one-sided
printer-resolution=> 60000x60000 dphi

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,

Criado 26 de outubro de 2012
Respostas 0
Participantes 1