# Configuração do Print Server

## Introdução

Esse manual descreve a configuração dos componentes do lado do servidor da aplicação *GBS Print*.

O procedimento de configuração deve ser realizado somente após a etapa de instalação. Para mais informações, consulte o [Manual de Instalação do GBS Apps](/componentes-web/gbsappssetup.md).

## Configuração

Os passos para configuração são:

1. [Configure o Tomcat](#configuracao-do-tomcat);
2. [Configure os certificados](#configuracao-de-certificados);
3. [Gere a senha criptografada](#criptografia-da-senha-do-banco-de-dados);
4. [Configure outras propriedades no arquivo config.properties](#arquivo-de-configuracao-da-aplicacao);
5. [Instale e configure os sistemas de impressão](#sistemas-de-impressao);
6. [Instale as fontes](#instalacao-de-fontes);

Todos os passos estão descritos abaixo. Um exemplo do arquivo `config.properties` pode ser encontrado na seção [Exemplo do Arquivo de Configuração](#exemplo-do-arquivo-de-configuracao).

{% hint style="danger" %}
Todas as linhas devem estar presentes no arquivo de configuração. Comentar ou deletar linhas pode causar comportamentos inesperados. Para informações adicionais, contate o Time de Suporte da Griaule.
{% endhint %}

### Configuração do Tomcat

Edite o arquivo de configuração do Tomcat para configurar os certificados e a porta que a aplicação usará.

```sh
vi /var/lib/tomcats/print/conf/server.xml
```

Para mudar a porta, procure por `Connector port=`. Essa é a porta para operações backend.

A porta padrão do GBS Print é `8127`.

### Configuração de Certificados

Para habilitar autenticação SSL, procure por `Connector port=` no arquivo `/conf/server.xml`.

Há várias entradas. Procure pela que define um *SSL HTTP/1.1 Connector*. Se necessário, remova os delimitadores de comentário `<!--` e `-->`. Em seguida, ajuste as seguintes configurações:

```properties
port="58194"
keystoreFile="/home/griaule/keystore"
keystorePass="password"
keyAlias="1"
clientAuth="true"
truststoreFile="/home/griaule/keystore"
truststorePass="password"
```

O parâmetro `port` deve ser a porta de rede desejada para a aplicação.

Mude o caminho de `keystoreFile` e `truststoreFile` para os valores corretos. Faça o mesmo para `keystorePass` e `truststorePass`.

O parâmetro `clientAuth="true"` irá requerer autenticação do servidor para o cliente e do cliente para o servidor. Isso significa que o cliente necessitará importar o certificado no navegador para poder acessar a aplicação.

{% hint style="warning" %}
Quando `clientAuth` está definido como `true`, o administrador do sistema deve fornecer o arquivo `certificate.pfx` para os usuários finais.
{% endhint %}

### Criptografia da senha do Banco de Dados

No arquivo `config.properties`, o parâmetro `jdbc.password` é uma senha criptografada. Para gerar a senha criptografada, siga os passos abaixo:

1. Vá para o seguinte diretório:

   ```sh
   cd /var/lib/tomcats/print/webapps/gbs-print-server/WEB-INF/lib
   ```
2. Execute o comando:

   ```sh
   java -cp gbs-common-db-<version>.jar com.griaule.commons.util.EncryptUtil <desiredPassword>
   ```
3. A senha criptografada aparecerá depois da mensagem: *"Encrypted password is:"*

{% hint style="info" %}
Guarde a senha criptografada. Ela será usada no próximo passo.
{% endhint %}

### Arquivo de Configuração da Aplicação

Para configurar o arquivo, abra-o com:

```sh
vi /var/lib/tomcats/print/conf/config.properties
```

As mudanças mais importantes nesse arquivo são os parâmetros `jdbc.url`, `jdbc.username`, `jdbc.password` e `gbds.url`. Configure-os de acordo com seu ambiente.

O arquivo de configuração completo é mostrado na seção [Exemplo do Arquivo de Configuração](#exemplo-do-arquivo-de-configuracao).

{% hint style="info" %}
Lembre-se de substituir a senha criptografada gerada na seção [Criptografia da senha do Banco de Dados](#criptografia-da-senha-do-banco-de-dados) neste arquivo.
{% endhint %}

#### Configurações do Print

O último passo é configurar o IP e a porta da aplicação que o usuário final irá acessar. Ele deve ser o mesmo IP e porta configurado na seção [Configuração do Tomcat](#configuracao-do-tomcat).

```properties
print.ip=<ip>
print.port=<port>
print.protocol=<protocol>
```

{% hint style="warning" %}
Certifique-se de que os parâmetros de configuração `print.ip`, `print.port` e `print.protocol` estejam corretamente especificados no arquivo `config.properties`. Em diversos casos, o IP será o mesmo para diversas aplicações. Contudo, cada aplicação possuirá uma porta **diferente e única**.
{% endhint %}

{% hint style="warning" %}
Certifique-se de que o parâmetro de configuração `resizeFloat=0.3` esteja presente no arquivo de configuração (`config.properties`). Ela determina a porcentagem de compressão da imagem do documento a ser salva no banco de dados ao final do processo. O valor padrão é `0.3` (30% de compressão).
{% endhint %}

### Sistemas de Impressão

#### Instalação do CUPS

O *Common UNIX Printing System (CUPS)* é um sistema de impressão para sistemas operacionais baseados em UNIX. Ele permite que um computador atue como um servidor de impressão, recebendo trabalhos de impressão de computadores clientes e enviando-os para a impressora apropriada. Para instalar o CUPS, siga os seguintes passos:

Instale o CUPS:

```sh
sudo yum install cups -y
```

Habilite e inicie o serviço CUPS:

```sh
sudo systemctl enable cups
sudo systemctl start cups
```

Então, instale a interface gráfica para o CUPS:

```sh
sudo yum install system-config-printer -y
```

{% hint style="success" %}
Se o comando de instalação falhar, tente limpar o cache do *yum*:

```sh
sudo yum clean all
```

{% endhint %}

#### Configuração do CUPS

Para configurar o CUPS, edite o arquivo de configuração:

```sh
sudo vim /etc/cups/cupsd.conf
```

Para permitir acesso de outros computadores ao servidor CUPS, altere a seguinte linha, de:

```properties
Listen localhost:631
```

Para:

```properties
Listen 0.0.0.0:631
```

Então, para permitir acesso ao servidor, adicione a permissão `Allow from all` para `<Location />`. Para fazer isso, procure pelas seguintes linhas e mude-as da seguinte forma:

```apacheconf
# Restrict access to the server...
<Location />
   Order allow,deny
   Allow from all
</Location>
```

Além disso, para permitir acesso às páginas de administração, adicione a permissão `Allow from all` para `<Location /admin>`. Para fazer isso, procure pelas seguintes linhas e mude-as da seguinte forma:

```apacheconf
# Restrict access to the admin pages...
<Location /admin>
   Order allow,deny
   Allow from all
</Location>
```

Então, salve e feche o arquivo de configuração.

Finalmente, para aplicar as mudanças, reinicie o serviço CUPS:

```sh
sudo systemctl restart cups
```

#### Instalação do HPLIP (Driver de Impressoras HP)

O *HP Linux Imaging and Printing (HPLIP)* é uma solução gratuita e de código aberto desenvolvida pela HP para impressão no Linux usando impressoras HP. Para instalar o HPLIP, execute:

```sh
sudo yum install hplip -y
```

Então, crie um grupo para administração de impressoras:

```sh
sudo groupadd lpadmin
```

Finalmente, adicione o usuário `root` ao grupo `lpadmin`:

```sh
sudo usermod -a -G lpadmin root
```

#### Configuração de Impressoras

Primeiro, inicie o serviço de busca de impressoras da rede executando:

```sh
sudo systemctl enable cups-browsed.service
sudo systemctl start cups-browsed.service
sudo systemctl status cups-browsed.service
```

Em seguida, acesse a interface web do CUPS em `http://<server_ip>:631` usando um navegador.

![](/files/KwievGU4MhihIDi7549d)

No menu superior, clique na aba `Administration` e depois no botão Add Printer.

![](/files/LH9t5QlkURoGuAwEX6rS)

Se uma mensagem aparecer dizendo que uma atualização é necessária, clique na URL exibida, depois no botão Advanced e em `Proceed to https://<server_ip>:631 (unsafe)`.

![](/files/tsHkE57yM6pZT0QfLc0s)

Ao retornar à interface web do CUPS, clique no botão Add Printer novamente e, se solicitado, faça login com as credenciais de usuário `root` do servidor.

![](/files/3izamLYd2uLzqiXkGTpU)

Na página **Add Printer**, na seção **Local Printers**, selecione `HP Printer (HPLIP)` e clique no botão Continue.

![](/files/LMYMvnHMJ2YyhZXpwfhG)

Em seguida, na seção **Connection**, insira `socket://<printer_IP>` e clique no botão Continue.

![](/files/DS2NGuNmsI2YWuZ6NLKw)

Então, insira um `Name`, `Description` e `Location` para a impressora, seguindo as instruções na página para cada campo, e clique no botão Continue.

![](/files/H9AiEwhpwzuYFYi4LGQI)

Na seção **Make**, selecione o fabricante da impressora e clique no botão Continue.

![](/files/ADJSwANm1eL1AOhn6Giu)

Em seguida, na seção **Model**, selecione o modelo da impressora na lista e clique no botão Add Printer.

![](/files/Q7J1idqu6r5VtWD0U1sl)

Então, verifique as configurações padrão da impressora e certifique-se de que elas se adequam ao ambiente.

{% hint style="success" %}
Certifique-se de selecionar o tamanho de papel correto na seção **General / Media Size**.
{% endhint %}

![](/files/Ulj5WzLqcMUwIw52JqHa)

Finalmente, clique no botão Set Default Options para salvar as configurações da impressora. Se tudo funcionar como esperado, uma mensagem aparecerá dizendo que a impressora foi adicionada com sucesso e você será redirecionado para a página da impressora.

![](/files/da2CN3FvPi0gke676hGo)

#### CUPS PDF (opcional)

O CUPS PDF fornece uma maneira de imprimir em um arquivo PDF. É recomendado para fins de teste.

Para instalar o CUPS PDF, execute:

```sh
sudo yum install cups-pdf -y
```

O caminho padrão para salvar os arquivos PDF é `/root`. Para mudar o caminho, edite o arquivo de configuração do CUPS PDF:

Então, edite o arquivo de configuração do CUPS PDF:

```sh
vim /etc/cups/cups-pdf.conf
```

Em `Path Settings`, mude o parâmetro `Out <path>` para o caminho desejado.

Em seguida, acesse a interface web do CUPS em `http://<server_ip>:631` usando um navegador.

No menu superior, clique na aba `Administration` e depois no botão Add Printer.

![](/files/LH9t5QlkURoGuAwEX6rS)

Na página **Add Printer**, na seção **Local Printers**, selecione `CUPS-PDF (Virtual PDF Printer)` e clique no botão Continue.

![](/files/d0P4fNC7wdFiGS7bdW10)

Então, insira um `Name`, `Description` e `Location` para a impressora, seguindo as instruções na página para cada campo, e clique no botão Continue.

![](/files/mP8vJ1XZjHBrejeN4JQT)

Em seguida, na seção **Or Provide a PPD File**, clique no botão Choose File e selecione o arquivo `Cups-PDF.ppd`. Esse arquivo `.ppd` pode ser encontrado no diretório `/etc/cups/ppd/` do servidor onde o CUPS PDF está instalado. Então, clique no botão Add Printer.

![](/files/BxqDz3XKGKTYpQtAhov3)

Verifique as configurações padrão da impressora e certifique-se de que elas se adequam ao ambiente.

{% hint style="success" %}
Certifique-se de selecionar o tamanho de papel correto na seção **General / Media Size**.
{% endhint %}

![](/files/siNOEkUMB8ItTQQS1yDU)

Finalmente, clique no botão Set Default Options para salvar as configurações da impressora. Se tudo funcionar como esperado, uma mensagem aparecerá dizendo que a impressora foi adicionada com sucesso e você será redirecionado para a página da impressora.

![](/files/Af0b58sjgqfUPkEgYi7p)

### Instalação de Fontes

A aplicação utiliza três fontes que devem ser instaladas: `Arial`, `OCR-B-10 BT` e `Tahoma Bold`.

#### Arial

Primeiro, verifique se a fonte já está instalada:

```sh
fc-list | grep arial
```

Se a fonte não estiver instalada (resultado vazio), baixe a fonte:

```sh
wget http://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm
```

Em seguida, instale-a:

```sh
rpm -Uvh msttcore-fonts-2.0-3.noarch.rpm
```

Verifique se a fonte foi instalada com sucesso:

```sh
fc-list | grep arial
```

Você pode então remover o arquivo `.rpm` baixado:

```sh
rm msttcore-fonts-2.0-3.noarch.rpm
```

#### OCR-B-10 BT

Primeiro, certifique-se de estar logado como *root*.

Em seguida, verifique se a fonte já está instalada:

```sh
fc-list | grep ocr
```

Se a fonte não estiver instalada (resultado vazio), crie um diretório `ocrb` em `/usr/share/fonts/`:

```sh
mkdir /usr/share/fonts/ocrb
```

{% hint style="warning" %}
Para os passos seguintes, você deve ter o arquivo `.ttf` da fonte `OCR-B-10 BT`. Baixe-o de uma fonte confiável ou copie-o de outra máquina.
{% endhint %}

Transfira o arquivo da fonte para o servidor e mova-o para o diretório `/usr/share/fonts/ocrb`.

Em seguida, execute:

```sh
fc-cache -f /usr/share/fonts/
```

Finalmente, verifique se a fonte foi instalada com sucesso:

```sh
fc-list | grep ocr
```

#### Tahoma Bold

Primeiro, certifique-se de estar logado como *root*.

Em seguida, verifique se a fonte já está instalada:

```sh
fc-list | grep tahoma
```

O resultado deve incluir `Tahoma:style=Bold`. Se a fonte não estiver instalada, crie um diretório `tahomabd` em `/usr/share/fonts/`:

```sh
mkdir /usr/share/fonts/tahomabd
```

{% hint style="warning" %}
Para os passos seguintes, você deve ter o arquivo `.ttf` da fonte `Tahoma Bold`. Baixe-o de uma fonte confiável ou copie-o de outra máquina.
{% endhint %}

Transfira o arquivo da fonte para o servidor e mova-o para o diretório `/usr/share/fonts/tahomabd`.

Em seguida, execute:

```sh
fc-cache -f /usr/share/fonts/
```

Finalmente, verifique se a fonte foi instalada com sucesso:

```sh
fc-list | grep tahoma
```

O resultado deve incluir `Tahoma:style=Bold`.

## Finalizando as Configurações

Após todos os passos de configuração estarem completos, retorne ao [Manual de Instalação do GBS Apps - Seção de Configuração](/componentes-web/gbsappssetup.md#configuracoes).

## Exemplo do Arquivo de Configuração

Essa seção mostra um exemplo do arquivo `config.properties`.

{% hint style="warning" %}
Os parâmetros `<rdb_ip>`, `<rdb_username>`, `<rdb_encrypted_password>`, `<gbds_ip>`, `<gbds_username>`, `<gbds_password>`, `<ldap_ip>`, `<ldap_username>`, `<ldap_password>`, `<email_password>`, `<print_ip>` e `<print_service_ip>` devem ser substituídos pelos valores corretos.
{% endhint %}

```properties
# ************************************************************
#
#        /$$$$$$$  /$$$$$$$  /$$$$$$ /$$   /$$ /$$$$$$$$
#       | $$__  $$| $$__  $$|_  $$_/| $$$ | $$|__  $$__/
#       | $$  \ $$| $$  \ $$  | $$  | $$$$| $$   | $$
#       | $$$$$$$/| $$$$$$$/  | $$  | $$ $$ $$   | $$
#       | $$____/ | $$__  $$  | $$  | $$  $$$$   | $$
#       | $$      | $$  \ $$  | $$  | $$\  $$$   | $$
#       | $$      | $$  | $$ /$$$$$$| $$ \  $$   | $$
#       |__/      |__/  |__/|______/|__/  \__/   |__/
#
# ************************************************************

# GBS Print Server

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://<rdb_ip>:3306/print
jdbc.username=<rdb_username>
jdbc.password=<rdb_encrypted_password>
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.showSql=false

locale=en_us

gbds.url=http://<gbds_ip>:8085
gbds.user=<gbds_username>
gbds.key=<gbds_password>
gbds.logLevel=INFO
gbds.additionalHeaders={}
gbds.flushDebugRequests=false
gbds.timeout=300
gbds.listExceptions.labels=

gbds.latent.search.url=null
gbds.proxy.url=null
gbds.proxy.port=0

keystore.path=null
keystore.password=null
truststore.path=null
truststore.password=null

same.user.simultaneous.login=true
fingerprint.useSDK=false
image.convert.useJnbis=false
filter.people.pguid=ALL
faceQuality.qtdeMinErrors=2

session.expirationTime.server=8h
session.expirationTime.web=8h

notification.last.timestamp=15

ldap.url=ldap://<ldap_ip>:389
ldap.user=<ldap_username>
ldap.password=<ldap_password>

codeValidTime=10
deviceTime=6

email.host=smtp.gmail.com
email.host.port=587
email.password=<email_password>
email.from=bravonotifier@gmail.com
email.python.path=python
email.use.script.python=true

# Print back on front/back layouts
ci.printBack=true

# Timeout in seconds to force a print job even if queue has not enough cis to print
queue.timeout=-1

# Station
station.initials=SEDE

batchSizes=FOUR_CI:8

defaultStation=SEDE
forceDefaultStationPrinting=true
print.service.on=true
print.mirror.page=true

#printService.url=http://<print_service_ip>:8090/gbs-print-service/service/
printService.logLevel=DEBUG
printService.timeout=300

#autoPrint=FOUR_CI:true,TWO_CF:false,ONE_CI:true,TWO_CA:false,TWO_CC:false,ONE_CS:false

print.ip=<print_ip>
print.port=8127
print.protocol=http

resizeFloat=0.3
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/componentes-web/printconfig.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
