Bom dia pessoal!!
Estou com um objetivo que é converter documentos (doc, rtf, jpg, etc) para pdf.
Requisitos:
-
Rodar nos servidores Linux que temos aqui;
-
Via linha de comando, pois será um processamento em lote disparado por uma classe java.
Já estou há uma semana batendo a cabeça nesse problema. Comecei baixando impressoras virtuais para o windows para ver se tinha uma luz e nada veio. Todas abriam uma janela para entrada de parâmetros, não oferecendo as mesmas opções via linha de comando.
No bom e velho Linux, testei o Cups-pdf. Também não deu certo. Dava muito problema da conversão de formatos do Tio Bill.
Foi quando me veio uma luz essa semana. O OpenOffice exporta para pdf qualquer formato que ele suporte e é feito em java. Foi quando tentei encontrar um jeito de usar as classes dele para gerar o tão esperado PDF.
Encontrei a API UNO. Parecia ser a solução, e no windows realmente foi. Via linha de comando iniciava um serviço utilizando o soffice que fica ouvindo em uma porta especificada por mim. Daí minha classe java faz a conexão e BELEZA TENHO MEU PDF.
Quando cheguei no Linux, decepção. Como é um servidor não tenho o X instalado nele. Mas esse problema, aparentemente foi fácil de resolver, instalei o Xvfb. Inicio o serviço, ele aparece na lista de processos, mas no netstat ele não está ouvindo. Minha classe java que estava funcionando belezinha, agora só exibe o erro “Connection Refused”.
Pesquisei em dezenas de sites o que poderia estar acontecendo. E descobri que a partir do OpenOffice 2.0 ele não ficava mais no modo listening no linux daquela forma (outra decepção, achava que o OpenOffice era multiplataforma mesmo). Dai então encontrei o que seria um exemplo que seria a forma correta de se chamar um serviço do OpenOffice. Mais uma vez só funcionou no Windows. No linux, mais uma vez, não gerar erro algum e a minha classe java aparece na lista de processos com um Sl+.
Alguém tem alguma idéia do que pode ser!?

