se7enxweb / ezodf-ls
Documents in and out of Exponential: imports Word, OpenDocument, RTF, PDF, Markdown, HTML, spreadsheets and presentations (files, folders, ZIP archives, web addresses) and exports any item as DOCX, PDF, ODT, RTF, EPUB or text, with LibreOffice as the converter, installed and switched on from the adm
Package info
Type:ezpublish-legacy-extension
pkg:composer/se7enxweb/ezodf-ls
Fund package maintenance!
v7.0.0
2026-10-24 00:47 UTC
Requires
- php: >=8.0
- ext-dom: *
- ext-zip: *
- se7enxweb/ezpublish-legacy-installer: *
Requires (Dev)
None
Suggests
- ext-curl: Installs LibreOffice from the administration and reads web addresses
- se7enxweb/expai: AI suggestions for imported documents (a summary and keywords), applied only on request
- se7enxweb/expqueue: Runs imports, exports and the converter's work on the job queue; without it each job runs in a PHP process of its own
- se7enxweb/sqliimport: Document formats of 7x SQLI Import 2: mapping, dry run, undo and schedules for documents of uploads, ZIP archives, web addresses, feeds, WebDAV/Nextcloud, Google Drive, OneDrive and mailboxes
Provides
None
Conflicts
None
Replaces
None
README
ezodf: documents in and out of Exponential
==========================================
ezodf imports documents into Exponential and exports items as documents: Word (DOCX, DOC), OpenDocument, RTF,
PDF, Markdown, HTML, spreadsheets, presentations and the formats of OpenOffice.org 1.x and StarOffice, with
LibreOffice as the converter.
Everything is done in the administration (no command line needed):
- Setup > System > Document converter: install LibreOffice with one click (the official build, checked against
its checksum and signature, into var/, no root needed) or use the system's; a sandboxed conversion server;
test conversions; limits; a remote unoserver or Gotenberg.
- Documents > Import documents: files, a whole folder (its tree becomes folders), ZIP archives and web addresses,
converted and published by background jobs, with a live page per import and retry.
- Documents > Export documents: any item as DOCX, PDF, ODT, RTF, DOC, XHTML, EPUB or text; a folder as a ZIP.
- With 7x SQLI Import: document formats with mapping, dry run, undo and schedules (an upload or ZIP, web
addresses, feeds, WebDAV/Nextcloud, Google Drive, OneDrive, mailboxes).
The manual is in doc/index.md (German: doc/ger-de/index.md) and in the help center of the administration.
Requirements
------------
- Exponential 6. The entries in the transfer registry (the "Which import or export tool do I need?" page, an
item's Import/Export menu) need Exponential 6.0.15; older kernels ignore them.
- The extension expqueue (the job queue) is recommended for the background work, with the cron job every
installation runs (runcronjobs.php expqueue, every minute); without it each job runs in a PHP process of its own.
- PHP 8.0 to 8.5 with zip and dom; curl to install LibreOffice from the administration and to read web addresses;
proc_open allowed.
- For the converter: Linux; LibreOffice, either installed with one click from the administration (about 2 GB below
var/, no root needed) or from the system packages; bubblewrap (bwrap) for the sandbox (doc/hosting.md).
Without a converter, Word, spreadsheets, presentations, PDF, Markdown, HTML and text are still read by the
built-in readers, and OpenDocument texts import and export as before.
- No tables of its own: ezodf needs nothing on the database, on a new installation or on an upgrade.
Installation
------------
composer require se7enxweb/ezodf:^7.0
Activate ezodf in [ExtensionSettings] ActiveExtensions[] (the installation wizard activates it by default),
regenerate the autoloads (php bin/php/ezpgenerateautoloads.php -e) and clear the caches. Give editors the rights
ezodf/import and ezodf/export, and administrators ezodf/converter. Then open Setup > System > Document converter
to install LibreOffice or point to the system's.
Upgrading to 7.0
----------------
- Install 7.0 over 6.x, regenerate the autoloads and clear the caches; there is no update script and no schema
change. Roles that should open the Document converter page need the new right ezodf/converter.
Everything that changed: doc/changelogs/7.0/CHANGELOG-6.1.13-to-7.0.0.
- The 4.x conversion daemon (scripts/daemon.php, odf.ini [ODFImport] ConversionDaemon) is no longer needed.
Sites that run it keep it by leaving ConversionDaemon=enabled; otherwise the new converter is used.
- odf.ini [DocumentType] ConvertTypes[] lists every format the converter takes; a site override of it keeps
working (it narrows the formats).
- New right: ezodf/converter (the Document converter page). ezodf/import and ezodf/export keep their meaning.
- Settings changed on the Document converter page are kept in var/<site>/ezodf/settings.json, over odf.ini.
- The PHP zip extension (ext-zip) is required: uploaded documents are checked before anything is extracted.
- Tests: vendor/bin/phpunit --no-configuration --bootstrap extension/ezodf/tests/bootstrap.php extension/ezodf/tests/
Known limitations
-----------------
- Images in an imported document are created only after the import's create (or edit) check on the target node
has passed, but the right to create image objects where they are placed is not checked separately.
- While exporting, images the user may not read are left out.
- Importing a document with odf.ini [ODFImport] PlaceImagesInMedia=true does not place its images properly.
Upgrading to 6.1.10
-------------------
- Uploaded OpenDocument files are checked and extracted with ZipArchive: every entry is checked before anything is
written, only content.xml and Pictures/* are extracted, with real byte limits (64 MiB per entry, 256 MiB in all,
10000 entries).
- The OpenOffice.org client package (ooPackage/) and the server views it needed (authenticate, upload_import,
upload_export, which were already disabled) were removed.