Conversões de documentos com Collabora Online, JODConverter e unoconv

JODConverter (para Java OpenDocument Converter) é uma ferramenta amplamente utilizada para automatização conversões de documentos. unoconv é uma ferramenta Python com um propósito semelhante. Leia aqui detalhes sobre por que você deve considerar mudar para o backend Collabora Online da JODConverter ou fale conosco sobre Collabora Online. Os formatos suportados por estas ferramentas incluem OpenDocument, PDF, HTML, formatos do Microsoft Office (DOC/DOCX/RTF, XLS/XLSX, PPT/PPTX) e muitos outros. Eles podem ser usados como uma biblioteca Java/Python, como uma ferramenta de linha de comandos ou como um aplicativo web. As versões mais recentes têm um backend JODConverter que usa Collabora Online em vez de LibreOffice diretamente.

Quais são os benefícios de usar o Collabora Online para conversão de documentos?

  • Desempenho melhorado em comparação com a abordagem de inicialização-conversão-desligamento.
  • A API REST é mais confiável do que iniciar o LibreOffice no modo servidor e se comunicar via UNO remoto
  • Mais seguro porque a conversão acontece em um ambiente isolado e essa abordagem em camadas protege sua infraestrutura (de camadas externas para internas):
    • É fácil executá-lo em uma máquina virtual / contentor do Docker
    • Isolamento de dados de documentos em chroots por documento
    • Seccomp-bpf: dentro desse chroot (quase) nenhuma chamada do sistema é permitida
    • Sistema de arquivos extremamente esparso dentro do chroot: sem shell etc.

Benefit JODConverter unoconv Collabora Online
Muitos formatos de arquivos Sim Yes Sim
Custo de inicialização único Não No Sim
API REST padrão Não Não Sim
Isolamento fácil em VM / docker Não Não Sim
Isolamento de documentos Não Não Sim
Filtro de syscall No Não Sim
Sparse filesystem Não Não Sim
Isso significa que você tem melhor desempenho e melhor segurança ao converter documentos com o Collabora Online.

Desempenho

O primeiro gráfico mostra como o Collabora Online se sai em comparação com o backend e o unoconv do JODConverter quando consideramos o threading e medimos o número de documentos convertidos durante um segundo:

Quer experimentar e configurar o CODE? Pegue aqui!
Você pode ver que o Collabora Online não só tem um desempenho superior de início, mas também escala melhor à medida que você usa mais threads. (Comparamos invocações curl para Collabora Online com invocações de linha de comando Java de JODConverter e invocações de linha de comando Python de unoconv.)

Construção

Se você quiser experimentar o JODConverter com seu backend Collabora Online:

git clone https://github.com/sbraconnier/jodconverter
cd jodconverter
sh gradlew build -x integTest distZip
cd build/distributions
unzip jodconverter-cli-*.zip
cd jodconverter-cli-*/

Execução

  • Exemplo: bin/jodconverter-cli -c https://localhost:9980/ -f pdf README.txt
  • O formato de entrada é detetado automaticamente, -f determina o formato de saída.
  • O URL é o URL do seu servidor Collabora Online, é o valor https:// do guia de instalação.

Usando diretamente a API REST do Collabora Online

  • Caso você ainda não esteja utilizando JODConverter, pode usar a API REST diretamente. Por exemplo: curl -F "data=@test.txt" https://localhost:9980/lool/convert-to/pdf > out.pdf curl -F "data=@test.txt" https://localhost:9980/lool/convert-to/png > out.png
  • Em alternativa, você pode usar formulários HTML para especificar o formato. Por exemplo: curl -F "data=@test.txt" -F "format=pdf" https://localhost:9980/lool/convert-to > out.pdf

Formatos suportados

Formatos de entarda suportados:

Documentos Formatos de entrada
Documentos de Writer sxw (ver), odt e fodt (editar)
Documentos do Calc sxc (ver), ods e fods (editar)
Documentos do Impress sxi (ver), odp e fodp (editar)
Documentos do Draw sxd (ver), odg e fodg (editar)
Documentos do Chart odc (editar)
Documentos de texto master sxg (ver), odm (editar)
Documentos modelo de texto stw (ver), ott (editar)
Documentos de texto master para Writer otm (editar)
Documentos modelo de planilha stc (ver), ots (editar)
Documentos modelo de apresentação sti (ver), otp (editar)
Documentos modelo do Drawing std (ver), otg (editar)
Documentos do Base odb (editar)
Extensões oxt (editar)
MS Word doc e dot (editar)
MS Excel xls (editar)
MS PowerPoint ppt (editar)
processamento de palavras OOXML dotx e dotm (ver), docx e docm (editar)
planilha OOXML xltx e xltm (ver); xlsx, xlsb e xlsm (editar)
apresentação OOXML pptx, pptm, potx, potm (editar)
Outros wpd, pdb, hwp, wps, wri, wk1, cgm, dxf, emf, wmf, cdr, vsd, pub, vss, lrf, gnumeric, mw, numbers, p65, pdf, jpg, jpeg, gif, png, etc (ver)
Outros dif, slk, csv, dbf, oth, rtf, txt, etc (editar)

Formatos de saída suportados para Writer/Calc/Impress:

Documentos Formatos de saída
Writer doc para MS Word 97, docm para MS Word 2007 XML VBA, docx para MS Word 2007 XML, fodt for OpenDocument Text Flat XML, html para HTML (StarWriter), odt para writer8, ott para writer8_template, pdf para writer_pdf_Export, rtf para Rich Text Format, txt for Text, xhtml para XHTML Writer File, png for writer_png_Export
Calc csv for Text – txt – csv (StarCalc), fods para OpenDocument Spreadsheet Flat XML, html para HTML (StarCalc), ods para calc8, ots para calc8_template, pdf para calc_pdf_Export, xhtml para XHTML Calc File, xls para MS Excel 97, xlsm para Calc MS Excel 2007 VBA XML, xlsx para Calc MS Excel 2007 XML, png para calc_png_Export
Impress fodp para OpenDocument Presentation Flat XML, html para impress_html_Export, odg for impress8_draw, odp para impress8, otp para impress8_template, pdf para impress_pdf_Export, potm para Impress MS PowerPoint 2007 XML Template, pot para MS PowerPoint 97 Vorlage, pptm para Impress MS PowerPoint 2007 XML VBA, pptx para Impress MS PowerPoint 2007 XML, pps para MS PowerPoint 97 Autoplay, ppt para MS PowerPoint 97, svg para impress_svg_Export, swf para impress_flash_Export, xhtml para XHTML Impress File, png para impress_png_Export
Draw fodg para draw_ODG_FlatXML,html para draw_html_Export, odg para draw8, pdf para draw_pdf_Export, svg para draw_svg_Export, swf para draw_flash_Export, xhtml para XHTML Draw File, png para draw_png_Export

Confiando no certificado HTTP local online de Java

Isto só é necessário se você tiver um certificado auto-assinado para sua instalação do Online.

  • obter o certificado: openssl s_client -connect localhost:9980 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
  • cole-o em um arquivo chamado certfile.txt
  • importe-o para a loja de chaves Java (por omissão, a senha é changeit): keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -alias mycert -file certfile.txt

Dependendo do valor de $JAVA_HOME, você pode precisar executar keytool com privilégios root/administrador.

Conclusões

  • Já está usando o JODConverter? – Considere mudar para usar seu backend mais seguro, Collabora Online.
  • Usando o Collabora Online via JodConverter ou unoconv? – Considere trocar para a nossa API REST de conversão (amostra de código Java, amostra de código Python).
  • Usando outra ferramenta? – Avalie se uma solução padrão Collabora Online atende às suas necessidades de desempenho e de conversão.

Precisa de suporte e ajuda para integrar a conversão de documentos em seu produto? Sinta-se à vontade para nos enviar um e-mail:

Entre em contato conosco!