1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

É possível executar Shell Script utilizando Applet?

Prezados,

Possuo uma aplicação que necessita imprimir códigos ZPL em uma impressora térmica por meio de Applet Java. A única forma de impressão no linux que encontrei, sem ter que criar algum arquivo e enviá-lo para a impressora, foi utilizar o seguinte shell script:

lpr -P "Impressora Térmica" -l <<< "^XA^MNN^JMA^FS^LT120^FO160,125^ADN,20,20^FD ^FS^PQ1^XZ";

O comando funciona perfeitamente diretamente no terminal, porém, quando estou tentando utilizar pelo Applet, ele não executa.

Estou tentando realizar a impressão da seguinte maneira:

    String comandoImpressao = "lpr -P \"" + printer.getName() + "\" -l <<< \"" + zpl + "\";";
    ArrayList<String> comandos = new ArrayList<String>();
    comandos.add("/bin/bash");
    comandos.add("-c");
    comandos.add(comandoImpressao);

    ProcessBuilder p = new ProcessBuilder(comandos);
    Process pr = p.start();
    pr.waitFor();

Uma outra forma de executar essa impressão que encontrei, foi criar um arquivo e enviá-lo para a impressora, porém, segundo o que encontrei pesquisando, o Java bloqueia a edição e leitura de arquivos locais com Applet, por questão de segurança. Por esse motivo descartei essa possibilidade.

Alguém tem alguma ideia do que pode ser?

Obrigado.

  • Não tenho muito conhecimento em Java para applets, mas sobre o que acompanho desta tecnologia, isso é uma regra de segurança. Você não pode fazer o applet interagir com funções do sistema operacional. Ou seja, pelo mesmo motivo que você não consegue enviar um arquivo para a impressora, você também não consegue enviar um comando shell.

    Douglas Junior   06 de abr de 2015
  • Sim, realmente é uma regra de segurança pelo jeito. Pelo que andei pesquisando vou ter que trabalhar com assinatura tanto no Applet quanto no lado do cliente para poder executar os comandos ou ler/alterar arquivos.

    g.pigosso   06 de abr de 2015
  • Caso esteja desenvolvendo algo novo, acho que vale a pena pesquisar uma outra alternativa que não seja applet, pois existem rumores que o applet será descontinuado, lembrando também que o chrome pretende "eliminar" o plugin java do navegador: http://gizmodo.uol.com.br/chrome-plugins-npapi/

    o que invibializaria a execução do applet.

    Guilherme Topanotti   06 de abr de 2015
  • Entendi, isso realmente complica um pouco. Por se tratar de uma aplicação web, não consegui pensar em outra alternativa para a impressão, principalmente por ter que chamar a impressora direto (não podendo gerar um arquivo para o cliente simplesmente imprimir, por exemplo). Grato

    g.pigosso   06 de abr de 2015
  • Você pode olhar para o JavaFX. Existem muitas promessas para ele, inclusive como Applet. Sendo assim, se chegar a ser descontinuado, basta fazer com que o usuário baixe o JAR e execute na máquina, você não perde o código fonte.

    Douglas Junior   06 de abr de 2015
Mostrar todos os 7 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java applet ou faça a sua própria pergunta.