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.