Collabora Online, JODConverter ve unoconv ile belge dönüştürme

JODConverter (Java OpenDocument Converter); belge dönüşümlerini otomatikleştiren, yaygın olarak kullanılan bir araçtır. unoconv, benzer amaca sahip bir Python aracıdır. Neden JODConverter’ın Collabora Online arka ucuna (backend) ya da doğrudan Collabora Online’a geçmeniz gerektiği hakkındaki ayrıntıları bu sayfada bulabilirsiniz.

Bu araçların desteklenen biçimleri arasında OpenDocument, PDF, HTML, Microsoft Office biçimleri (DOC/DOCX/RTF, XLS/XLSX, PPT/PPTX) ve çok daha fazlası bulunur. Bunlar bir Java/Python kütüphanesi, komut satırı aracı ya da web uygulaması olarak kullanılabilirler. Daha yeni sürümlerde, doğrudan LibreOffice yerine Collabora Online kullanan bir JODConverter arka ucu bulunur.

Belge dönüştürme için Collabora Online kullanmanın faydaları nelerdir?

  • Aç-dönüştür-kapat yaklaşımına göre daha yüksek performans
  • REST API, LibreOffice’i sunucu kipinde başlatıp uzaktan UNO yoluyla iletişimden daha güvenilirdir
  • Daha güvenlidir çünkü dönüştürme işlemi yalıtılmış bir ortamda gerçekleşir ve bu katmanlı yaklaşım da altyapınızı (dış katmanlardan iç katmanlara doğru) korur:
    • Sanal Makine / Docker Konteyneri içinde çalıştırmak daha kolaydır
    • Her belge için ayrı chroot’lar ile belge verileri yalıtılır
    • Seccomp-bpf: bu chroot’lar içinde (neredeyse) hiçbir sistem çağrısına izin verilmez
    • chroot içinde aşırı seyrek dosya sistemi : shell vb. yok

[table width =”50%” style =”” responsive =”false”]
[table_head]
[th_column]Fayda[/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]Birçok dosya biçimi[/row_column]
[row_column]Evet[/row_column]
[row_column]Evet[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[table_row]
[table_row]
[row_column]Tek başlangıç maliyeti[/row_column]
[row_column]Hayır[/row_column]
[row_column]Hayır[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[table_row]
[row_column]Standart REST API[/row_column]
[row_column]Hayır[/row_column]
[row_column]Hayır[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[table_row]
[row_column]VM / docker ile kolay yalıtım[/row_column]
[row_column]Hayır[/row_column]
[row_column]Hayır[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[table_row]
[row_column]Belge yalıtımı[/row_column]
[row_column]Hayır[/row_column]
[row_column]Hayır[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[table_row]
[row_column]Sistem çağrısı (syscall) süzgeci[/row_column]
[row_column]Hayır[/row_column]
[row_column]Hayır[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[table_row]
[row_column]Seyrek dosya sistemi[/row_column]
[row_column]Hayır[/row_column]
[row_column]Hayır[/row_column]
[row_column]Evet[/row_column]
[/table_row]
[/table_body]
[/table]

Bu, Collabora Online ile belgeleri dönüştürürken hem daha yüksek performans hem de daha iyi güvenlik elde edeceğiniz anlamına gelir.

Performans

İlk grafik, bir saniye içinde dönüştürülen belge sayısı ölçülüp çok kanallı çalışma dikkate alındığında Collabora Online’ın, JODConverter’ın LibreOffice arka ucu ve unoconv’a göre nasıl bir performans sergilediğini gösterir:
[row]
[column lg=”9″ md=”9″ sm=”9″ xs=”12″ ]

[/column]
[column lg=”3″ md=”3″ sm=”3″ xs=”12″ ]
[well type=”well-sm”]
CODE’u kurup denemek ister misiniz?

Hemen indirin![/well]
[/column]
[/row]

Collabora Online’ın yalnızca üstün başlangıç performansına sahip olmakla kalmayıp aynı zamanda daha çok iş kanalı (thread) kullanıldıkça daha iyi ölçeklendiği de grafikte görülmektedir. (Collabora Online için curl çağrıları, JODConverter’ın java komut satırı çağrıları ve unoconv’un python komut satırı çağrıları ile karşılaştırılmıştır.)

Derleme

Eğer JODConverter’ı Collabora Online arka ucu ile denemek isterseniz:

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

Çalıştırma

  • Örnek:
    bin/jodconverter-cli -c https://localhost:9980/ -f pdf README.txt
  • Girdi dosyası biçimi otomatik olarak saptanır, çıktı biçimi -f ile belirtilir.
  • URL, Collabora Online sunucunuzun adresidir ve kurulum kılavuzundaki https:// değeridir.

Doğrudan Collabora Online REST API kullanmak

  • Eğer halen JODConverter kullanmıyorsanız, doğrudan REST API kullanabilirsiniz, örneğin:
    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
  • Alternatif olarak, biçimi belirtmek için HTML formları da kullanabilirsiniz, örneğin:
    curl -F "data=@test.txt" -F "format=pdf" https://localhost:9980/lool/convert-to > out.pdf

Desteklenen biçimler

Desteklenen girdi biçimleri:

Belgeler Girdi biçimleri
Writer belgeleri sxw (görüntüleme), odt ve fodt (düzenleme)
Calc belgeleri sxc (görüntüleme), ods ve fods (düzenleme)
Impress belgeleri sxi (görüntüleme), odp ve fodp (düzenleme)
Draw belgeleri sxd (görüntüleme), odg ve fodg (düzenleme)
Chart belgeleri odc (düzenleme)
Metin türünde ana belgeler sxg (görüntüleme), odm (düzenleme)
Metin türünde şablon belgeleri stw (görüntüleme), ott (düzenleme)
Writer ana belge şablonları otm (düzenleme)
Hesap tablosu şablon belgeleri stc (görüntüleme), ots (düzenleme)
Sunum şablonu belgeleri sti (görüntüleme), otp (düzenleme)
Çizim şablonu belgeleri std (görüntüleme), otg (düzenleme)
Base belgeleri odb (düzenleme)
Eklentiler oxt (düzenleme)
MS Word doc ve dot (düzenleme)
MS Excel xls (düzenleme)
MS PowerPoint ppt (düzenleme)
OOXML kelime işlem docx ve docm (düzenleme), dotx ve dotm (görüntüleme)
OOXML hesap tablosu xltx ve xltm (görüntüleme), xlsx, xlsb ve xlsm (düzenleme)
OOXML sunumu pptx, pptm, potx, potm (düzenleme)
Diğer wpd, pdb, hwp, wps, wri, wk1, cgm, dxf, emf, wmf, cdr, vsd, pub, vss, lrf, gnumeric, mw, numbers, p65, pdf, jpg, jpeg, gif, png, vb. (görüntüleme)
Diğer dif, slk, csv, dbf, oth, rtf, txt, vb. (düzenleme)

Writer/Calc/Impress için desteklenen çıktı biçimleri:

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

Java’da yerel Online HTTP sertifikasına güvenmek

Bu adım, yalnızca Online kurulumunuz için kendinden imzalı bir sertifika kullanmanız durumunda gerekir.

  • sertifikayı alın:
    openssl s_client -connect localhost:9980 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
  • certfile.txt adlı bir dosyaya yapıştırıp kaydedin
  • Java anahtar deposuna ekleyin (öntanımlı parola changeit‘tir):
    keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -alias mycert -file certfile.txt

$JAVA_HOME değerine bağlı olarak, keytool aracını root/Yönetici haklarıyla çalıştırmanız gerekebilir.

Sonuç

  • Zaten JODConverter kullanıyor musunuz? – daha güvenli olan Collabora Online arka ucunu kullanmaya geçmeyi değerlendirin.
  • JodConverter ya da unoconv yoluyla Collabora Online mı kullanıyorsunuz? – basit REST dönüştürme API’mize geçiş yapmayı değerlendirin (Java örnek kodu, Python örnek kodu).
  • Başka bir araç mı kullanıyorsunuz? – standart bir Collabora Online çözümünün, performans ve dönüştürme ihtiyaçlarınızı karşılayıp karşılamadığını değerlendirin.

Kendi ürününüze belge dönüştürme özelliği entegre etmek için destek ve yardıma mı ihtiyacınzı var? Bize e-posta göndermekten lütfen çekinmeyin:

Bizimle iletişime geçin!