Como usar sendToPrinter com o protocolo SharedPrinter

Problema

O componente sendToPrinter suporta os seguintes protocolos:

  • CUPS
  • DirectIP
  • LPD
  • SharedPrinter
  • CIFS

No caso de SharedPrinter, o URI do servidor não é usado e apenas o Nome da Impressora é usado. No entanto, o valor para o Nome da Impressora pode ser difícil de localizar, uma vez que pode ser diferente do UNC. 

Solução

O código a seguir pode ser usado em uma operação executeScript para listar as impressoras compartilhadas disponíveis no servidor:

import javax.print.*;

PrintServiceLookup.lookupPrintServices(null, null);

Inicie-----");

for(PrintService svc:svcs){

if(svc!=null){

"+svc.getName());

}

}

System.out.println("PrintServices Log

Fim-----");

 

Isso resulta na seguinte saída no arquivo de log do servidor:

[06/05/16

13:17:15:746 BST] 0000026d SystemOut O PrintServices Log Start-----

[06/05/16
13:17:15:762 BST] 0000026d SystemOut O PrintSvc : ZDesigner S4M-300dpi ZPL

[06/05/16
13:17:15:762 BST] 0000026d SystemOut O PrintSvc : server

[06/05/16
13:17:15:762 BST] 0000026d SystemOut O PrintSvc : Send To OneNote 2013

[06/05/16
13:17:15:762 BST] 0000026d SystemOut O PrintSvc : Microsoft XPS Document Writer

[06/05/16
13:17:15:763 BST] 0000026d SystemOut O PrintSvc : LPT1

[06/05/16
13:17:15:763 BST] 0000026d SystemOut O PrintSvc : Fax

[06/05/16
13:17:15:763 BST] 0000026d SystemOut O PrintSvc : Epson ESC/P-R

[06/05/16
13:17:15:763 BST] 0000026d SystemOut O PrintSvc : Adobe PDF

[06/05/16

13:17:15:763 BST] 0000026d SystemOut O PrintSvc : \\EDINBURGH-PRINT\Canon EDI-COE

[06/05/16

13:17:15:763 BST] 0000026d SystemOut O PrintServices Log End-----

Você pode usar essa saída para configurar a operação sendToPrinter:

KB-Capture