JPDF- O fim do proxy para o ILovePDF
Eu sou bem iniciante no mundo Java. Então, estou realizando um projeto básico para trabalhar com PDFs. As principais funcionalidades que estou buscando são: Unir dois ou mais PDFs em um único documento e realizar a conversão de DOCX para PDF. Esses são problemas que enfrento na faculdade que estudo atualmente quando preciso realizar a entrega de documentos para os professores.
Problema
Basicamente, quando trabalho com outras pessoas realizando trabalho em conjunto, eu sempre gero um documento Word online para trabalharmos juntos. Nesse caso, o problema não existe, visto que a própria ferramenta utilizada disponibiliza essa função de conversão de DOCX para PDF. Contudo, quando meus amigos fazem os trabalhos deles, eles fazem em um documento offline para, só então, realizar a conversão para PDF.
Eu sei que existem um monte de sites online que realizam essas conversões de graça, como o ILovePDF. Entretanto, já virou a rotina deles me pedirem para fazer isso. Aliás, também já tentei ensinar como usar o ILovePDF, mas eles simplesmente amam me usar como Proxy para o ILovePDF. Então, decidi usar esse contexto para fazer uma ferramenta que realiza esse "trabalho" para mim.
Objetivo
O objetivo é ter uma ferramenta de linha de comando capaz de realizar tarefas básicas relacionadas a PDF e eliminar o meu trabalho de proxy. Além disso, também quero praticar um pouco de java, manejo de dependências no mundo Java e orientação a objetos.
Construção
Eu estava buscando um modo de construir essa aplicação onde a adição de novas funcionalidades relacionadas ao seu objetivo principal fosse feita de modo em que eu necessitasse alterar o código o MÍNIMO possível. Portanto, construi o meu próprio "parser" para entender os comandos da linha de comando e, com base nisso, realizei a construção de diversos "Builders" que constroem essa parte para mim.
Conceitos Aprendidos
- Sobrecarga de Métodos.
- Enhanced For.
- Nova definição de corno job feita com sucesso ao tentar manejar as dependências desse projeto sem um software gerenciador.
- HashMap
- Interfaces.
- Herança.
- Classes Abstratas.
- System.getProperty
- List
- ArrayList
- Arrays
- Manipulação de Strings
- Utilização de Bibliotecas de Terceiros.
Notas
- Para aquelas versados em Java, por favor, caso queiram e tenham tempo, analisem e digam o que pode melhorar e o que não pode. Estou totalmente aberto para críticas e sugestões de melhoria.
- Eu sei que esse problema é um problema já muito bem resolvido, mas tudo pelo aprendizado vale a pena.
Atualizações.
De ontem para hoje trabalhei em mais alguns aspectos: primeiramente, adicionei o gradle como build tool. Estava cansado de ficar fazendo as coisas na mão. Automaticamente, ganhei uma ferramenta de teste que o Intelij já coloca junto com o gradle e comecei a usá-la. Por fim, adicionei a funcionalidade de Conversão de DOCx para PDF. Agora vou terminar de construir os testes e ver no que dá!