Conversione di documenti con Collabora Online, JODConverter e unoconv

JODConverter (for Java OpenDocument Converter) è uno strumento ampiamente utilizzato che automatizza la conversione di documenti. unoconv è uno strumento scritto in Python e ha uno scopo simile. Qui puoi leggere i dettagli del motivo per cui dovresti prendere in considerazione il passaggio al backend JODConverter di Collabora Online o addirittura considerare di passare completamente a Collabora Online..

I formati supportati da questi strumenti sono OpenDocument, PDF, HTML, Microsoft Office (DOC / DOCX / RTF, XLS / XLSX, PPT / PPTX) e molti altri. Possono essere utilizzati come libreria Java / Python, come strumento da riga di comando o come applicazione Web. Le versioni più recenti hanno un backend di JODConverter che utilizza LibreOffice Online invece di utilizzare direttamente LibreOffice.

Quali sono i vantaggi nell’utilizzare Collabora Online per la conversione dei documenti?

  • Prestazioni migliorate rispetto all’approccio startup-convert-shutdown
  • L’API REST è più affidabile che avviare LibreOffice in modalità server e comunicare tramite UNO in una chiamata di procedura remota
  • Più sicuro perché la conversione avviene in un ambiente isolato e questo approccio a più livelli protegge la tua infrastruttura (dagli strati esterni a quelli interni):
    • È facile eseguirlo in una macchina virtuale o in un contenitore Docker
    • Isolamento dei dati dei documenti in un chroot diverso per ogni documento
    • Seccomp-bpf: all’interno di un chroot (quasi) nessuna chiamata di sistema è permessa
    • Nel chroot, il file system è davvero ridotto al minimo: nessuna shell etc.

[table width =”50%” style =”” responsive =”false”]
[table_head]
[th_column]Vantaggi[/th_column]
[th_column]JODConverter[/th_column]
[th_column]unoconv[/th_column]
[th_column]Collabora Online[/th_column]
[/table_head]
[table_body]
[table_row]
[row_column]Molti formati di file[/row_column]
[row_column]Si[/row_column]
[row_column]Si[/row_column]
[row_column]Si[/row_column]
[/table_row]
[table_row]
[table_row]
[row_column]Costo iniziale[/row_column]
[row_column]No[/row_column]
[row_column]No[/row_column]
[row_column]Si[/row_column]
[/table_row]
[table_row]
[row_column]REST API standard[/row_column]
[row_column]No[/row_column]
[row_column]No[/row_column]
[row_column]Si[/row_column]
[/table_row]
[table_row]
[row_column]Facilità di isolamento tramite una VM o un Docker[/row_column]
[row_column]No[/row_column]
[row_column]No[/row_column]
[row_column]Si[/row_column]
[/table_row]
[table_row]
[row_column]Isolamento del documento[/row_column]
[row_column]No[/row_column]
[row_column]No[/row_column]
[row_column]Si[/row_column]
[/table_row]
[table_row]
[row_column]Filtro delle chiamate di sistema[/row_column]
[row_column]No[/row_column]
[row_column]No[/row_column]
[row_column]Si[/row_column]
[/table_row]
[table_row]
[row_column]Filesystem ridotto[/row_column]
[row_column]No[/row_column]
[row_column]No[/row_column]
[row_column]Si[/row_column]
[/table_row]
[/table_body]
[/table]

Ciò significa che si ottengono sia prestazioni migliorate che maggiore sicurezza durante la conversione dei documenti con Collabora Online.

Prestazioni

Il primo grafico mostra le prestazioni di Collabora Online rispetto al back-end e all’annullamento di LibreOffice di JODConverter quando consideriamo il multi-threading e misuriamo il numero di documenti convertiti in un secondo:
[row]
[column lg=”9″ md=”9″ sm=”9″ xs=”12″ ]

[/column]
[column lg=”3″ md=”3″ sm=”3″ xs=”12″ ]
[well type=”well-sm”]
Vuoi provare e configurare CODE?

Scopri qui come fare![/well]
[/column]
[/row]

Puoi vedere che Collabora Online non solo ha prestazioni inizialmente superiori, ma si ridimensiona meglio quando usi più thread. (Confrontiamo l’esecuzione di curl per Collabora Online con l’esecuzione di JODConverter dalla riga di comando di java e l’esecuzione di unoconv dalla riga di comando di python.)

Building

Per provare JODConverter con Collabora Online come backend:

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-*/

Running

  • Esempio:
    bin/jodconverter-cli -c https://localhost:9980/ -f pdf README.txt
  • Il formato in input è rilevato automaticamente, -f è usato per specificare il formato in output.
  • L’URL è quella usata per il server di Collabora Online, è l’indirizzo https:// descritto nella guida per l’installazione.

Utilizzare direttamente le Collabora Online REST API

  • Nel caso tu non stia già usando JODConverter , puoi usare direttamente le REST API, per esempio:
    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
  • È inoltre possibile utilizzare i moduli HTML per specificare il formato, ad esempio:
    curl -F "data=@test.txt" -F "format=pdf" https://localhost:9980/lool/convert-to > out.pdf

Formati Supportati

Formati di input supportati:

Documenti Formati di Input
Writer documents sxw (view), odt and fodt (edit)
Calc documents sxc (view), ods and fods (edit)
Impress documents sxi (view), odp and fodp (edit)
Draw documents sxd (view), odg and fodg (edit)
Chart documents odc (edit)
Text master documents sxg (view), odm (edit)
Text template documents stw (view), ott (edit)
Writer master document templates otm (edit)
Spreadsheet template documents stc (view), ots (edit)
Presentation template documents sti (view), otp (edit)
Drawing template documents std (view), otg (edit)
Base documents odb (edit)
Extensions oxt (edit)
MS Word doc and dot (edit)
MS Excel xls (edit)
MS PowerPoint ppt (edit)
OOXML wordprocessing docx and docm (edit), dotx and dotm (view)
OOXML spreadsheet xltx and xltm (view), xlsx and xlsb and xlsm (edit)
OOXML presentation pptx, pptm, potx, potm (edit)
Other 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 (view)
Other dif, slk, csv, dbf, oth, rtf, txt, etc (edit)

Formati di output supportati da Writer/Calc/Impress:

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

Importazione del certificato HTTP locale di Online per Java

Ciò è necessario solo se si dispone di un certificato autofirmato per l’installazione di Online.

  • Recuperare il certificato:
    openssl s_client -connect localhost:9980 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
  • Incollarlo in un file di testo chiamato certfile.txt
  • importarlo nel key store di Java (la password è changeit di default):
    keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -alias mycert -file certfile.txt

A secondo del valore di $JAVA_HOME, può essere necessario eseguire keytool con i privilegi di root/Amministratore.

Conclusioni

  • Stai già usando JODConverter ? – prendi in considerazione di utilizzare il backend di Collabora Online per maggior sicurezza.
  • Stai usando Collabora Online via JodConverter o unoconv? – considera di passare alle nostre semplici API di conversione REST (Esempio di codice Java, Esempio di codice Python).
  • Utilizzi un’altro tool ? – valuta se una soluzione standard basata su Collabora Online soddisfa le tue esigenze di prestazioni e conversione.

Hai bisogno di supporto e aiuto per integrare la conversione dei documenti nel tuo prodotto? Inviaci una e-mail:

Contattaci!