Produzir documentos "standard" apenas com modificação de campos

Kristian0

Power Member
Bom dia.

Gostava de automatizar um processo que é feito manualmente para a emissao de documentos de transporte.

O processo é simples, imprimeir 5 documentos.

- o primeiro é uma declaração onde vai uma tabela de material e os dados do condutor (nome, cc, carta de condução etc), destino (morada, freguesia, conselho e distrito)

- o segundo licença de transporte do condutor (ja tenho uma base de dados com todos as licenças em pdf)

- o terceiro é um documento que depende do tamanho maximo do volume maior.
(ou seja o documento para um volume de 50, 65, 76, 100, 125, 150 já esta criado é so ver qual a carga maior e imprimir o documento pois dá para todas as outras cargas.)

-O quarto é um alvara de transporte (sempre igual)

-O quinto é o seguro de transporte (sempre igual, muda a cada ano)

Neste momento tenho de meter mandar imprimir cada documento destes à mão, e as declarações tenho de fazer copy past e mudar os campos que preciso.

Queria fazer um programa que/base de dados onde pudesse unificar este processo, basicamente selecionava:
- condutor
- Destino
- Material

E automaticamente ele mandava imprimir tudo.

Tenho usado python sempre que o que quero manipular é à base de texto e ficheiros, mas o facto de o codigo ficar aberto nao me agrada (estou neste momento a tentar perceber como faço um executavel python sem grande suvesso)

Que linguagem me aconselham para fazer isto?
Terei de fazer uma base de dados?
 
ALguem me pode ajudar com isto ou simplesmente dar uma luz que tipo de linguagem posso usar?
Se não perceberem bem o que pretendo posso reformular.

Cumprimentos e obrigado deste ja.
 
Podes começar por colocar os condutores numa base de dados (nome, cc, carta conducao, etc, referencia para pdf com licença).
A parte do destino pode ou não ser colocada na base de dados. Se há destinos que são usados várias vezes, compensa colocar numa base de dados. Por outro lado, se tiveres sempre a colocar novos destinos, não vai ajudar de muito.
A parte do material tbm podes colocar numa base de dados.

Depois fazes um formulário para preencheres os dados que interessam:
1. Um dropdown/auto-complete com os nomes dos condutores (vai buscar o resto dos dados à db, inclundo a licença de transporte)
2. Um dropdown/auto-complete com as moradas (vai buscar o resto dos dados à db)
OU
Inputs para morada, freguesia, conselho e distrito (caso não coloques isto na db)
3. Uma tabela onde adicionas os materiais

No fim, um botão de submit que manda tudo para o servidor e trata do resto:
- Gerar declaração material/condutor
- "Pegar" nos ficheiros pdf necessários (nomes dos ficheiros)
- Enviar os ficheiros de volta (ou imprimir, ver abaixo)

Em termos de linguagens, penso que poderás recorrer a várias: PHP, JS (nodejs), python

A questão de gerar o PDF pode ser feito de 2 maneiras (que eu saiba):
- Gerar o pdf de "raiz". Se usares PHP tens TCPDF (exemplo)
- Converter html+css em pdf (para PHP ver aqui, para nodejs ver aqui)

A solução mais fácil parece-me ser a 2ª. Criar um template com código html e com variáveis nos sitios onde é suposto alterar dados. Quando é recebido um "submit" do formulário, os dados são substituidos nessas variáveis e é passado para o DOMPDF (se for PHP) que converte para pdf.

A parte mais dificil será imprimir automaticamente. Em PHP, pelo que andei a ler, é possivel faze-lo mas algo complicado (ver). Em nodejs pode usar isto ou usar o modulo "child_process" para invocar um software de pdf tipo FoxIt que suporta a linha de comandos (exemplo).

PS: Nunca tive de fazer isto (gerar pdf's e imprimir) por isso é possivel que hajam melhores soluções.
 
Hum está questão de por num servidor é interessante.

Não sei é se será a melhor solução tendo em conta que por vezes tenho de utilizar isso em sítios remotos com internet fraca.

Mas não deixa de ser uma boa solução, para proteger o Python.
 
Se sabes python então provavelmente terás de apostar nele. Será mais rápido do que tentar executar tudo noutras línguas.
Se fosse por mim e visto que queres que o programa seja local, então fazia as coisas com JS e tecnologia Electron. (Vantagem pois da para criar o programa para Windows, OS X e Linux de uma vez... code it once, use it everywhere...)
Estruturava o programa de seguinte forma:
1 - Criar um UI, onde haja possibilidade de emitir dados, adicionar dados ou eliminar dados da base de dados.
2 - Criava ficheiro JSON local onde estariam inseridos todos os dados e onde os pudesse atualizar.
3 - Baseado nisso no UI criava scripts em AJAX que permitissem comunicar com o ficheiro JSON e receber dados.
4 - Criava scripts para escolha de ficheiros necessarios dados a situação, principalmente para volume.
5 - Com a biblioteca jsPDF generava os ficheiros com as variáveis nos locais.

E basicamente é isso. Trabalho para 3 - 4 dias.

Caso seja uma empresa com varios utilizadores e varias pessoas a trabalhar com software, então recomendaria também meter uma base de dados online. Assim o programa ao iniciar fara tentativa de conectar-se a base de dados para confirmar se esta atualizada. Se não conseguir connectar então fica a funcionar offline, se der para conectar então atualiza os dados caso houvesse alguma alteração. Era util pois assim ao adicionar um novo funcionario a base de dados, todos terão o gajo no seu proprio software local. E como ja foi dito isso tudo so com JS.
 
Back
Topo