**ODT export is now possible without LibreOffice — via odf-kit**
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 659
- Forks
- 133
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 110
Description
ODT export is now possible without LibreOffice — via odf-kit
This picks up where #102 left off.
Since Nextcloud Text is built on TipTap/ProseMirror, ODT export can now be implemented entirely in JavaScript with no server-side dependencies:
import { tiptapToOdt } from 'odf-kit'
// editor.getJSON() returns TipTap JSONContent
const bytes = await tiptapToOdt(editor.getJSON(), { pageFormat: 'A4' })
tiptapToOdt() converts TipTap/ProseMirror JSON directly to a spec-compliant .odt file. It runs entirely in the browser — no LibreOffice, no Pandoc, no external API calls. Document content never leaves the user's environment.
What's supported: headings, paragraphs, bold/italic/underline, lists (nested), tables, links, blockquotes, code blocks, horizontal rules, images (via pre-fetched bytes), custom node handler for app-specific extensions.
odf-kit is Apache 2.0, zero server-side dependencies, passes the OASIS ODF validator on every commit. There is also an odf-kit-service ExApp currently pending approval in the Nextcloud App Store, which exposes odf-kit over HTTP for server-side use cases.
Happy to help with integration if there's interest.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing editor export entry points, then compare the editor.getJSON() output with odf-kit’s tiptapToOdt() interface. The issue does not name repository files, tests, or an agreed integration scope; done would require a defined browser-side ODT export integration and acceptance criteria.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100