ddn.odf

ddn.odf provides read/write support for the OpenDocument format (ODF).

This umbrella module is the primary import for users. The public API is split into focused submodules which are re-exported here.

Supported document types

All major ODF document families are supported for open, create, and save:

Text family:

  • .odt -- Text documents
  • .ott -- Text templates
  • .odm -- Master documents
  • .oth -- Web text
  • .fodt -- Flat XML text

Spreadsheet family:

  • .ods -- Spreadsheets
  • .ots -- Spreadsheet templates
  • .fods -- Flat XML spreadsheets

Presentation family:

  • .odp -- Presentations
  • .otp -- Presentation templates

Drawing family:

  • .odg -- Drawings
  • .otg -- Drawing templates

Other families:

  • .odc -- Charts
  • .odf -- Formulas (MathML)
  • .odi -- Images
  • .odb -- Databases (preservation-first)

Public submodules

  • ddn.odf.document -- Document types, family facades, open/create/save functions for all families
  • ddn.odf.mimetype -- MIME type handling and detection
  • ddn.odf.manifest -- ODF manifest (META-INF/manifest.xml) support
  • ddn.odf.metadata -- Document metadata (title, author, dates, etc.)
  • ddn.odf.content -- Content body parsing and serialisation
  • ddn.odf.style -- Style parsing, typed accessors (chart, presentation, section, ruby, graphic, drawing page, table, text, paragraph)
  • ddn.odf.text -- .odt text body model, 21 node kinds, builder functions
  • ddn.odf.table -- .ods spreadsheet model, 8 cell types, formulas, builders
  • ddn.odf.draw -- .odg drawing model, 20 shape kinds, pages, layers, connectors
  • ddn.odf.presentation -- .odp slide model, transitions, animations, placeholders
  • ddn.odf.chart -- .odc chart model, 14 chart types, axes, series, legends
  • ddn.odf.math -- .odf formula model, MathML preservation
  • ddn.odf.image -- .odi image document model
  • ddn.odf.database -- .odb database package model (preservation-first)
  • ddn.odf.embedded -- Cross-family embedded object scanning
  • ddn.odf.validation -- Structural validation and diagnostics
  • ddn.odf.compat -- Version detection, generator identification, compatibility handling
  • ddn.odf.flat -- Flat XML ODF (.fodt/.fods) read/write support

Internal submodules (not re-exported)

  • ddn.odf.common -- Shared errors, options, diagnostics
  • ddn.odf.container -- ZIP package adapter (wraps ddn.archive.zip)
  • ddn.odf.xml -- XML adapter (wraps ddn.data.xml)

Examples

Open a text document and extract text

--- import ddn.odf.document;

auto doc = openOdfTextDocument("report.odt"); string text = doc.plainText(); ---

Create a text document from scratch

--- import ddn.odf.document; import ddn.odf.text;

auto doc = createTextDocument( paragraph("Hello, World!"), heading("Title", 1) ); doc.save("output.odt"); ---

Open and read a spreadsheet

--- import ddn.odf.document;

auto doc = openOdfSpreadsheetDocument("data.ods"); auto cell = doc.body.sheets0.rows0.cells0; ---

Create a spreadsheet

--- import ddn.odf.document; import ddn.odf.table;

auto doc = createSpreadsheetDocument( sheet("Data", row(stringCell("Name"), floatCell("42"))) ); doc.save("data.ods"); ---

Create a drawing document

--- import ddn.odf.document; import ddn.odf.draw;

auto page = drawPage("Page1", rectangle("1cm", "1cm", "5cm", "3cm"), ellipse("7cm", "2cm", "3cm", "3cm") ); auto doc = createDrawingDocument(page); doc.save("drawing.odg"); ---

Create a presentation with transitions

--- import ddn.odf.document; import ddn.odf.presentation; import ddn.odf.draw;

auto s1 = slide("Title Slide", rectangle("1cm", "1cm", "8cm", "5cm")); s1 = withTransition(s1, "automatic", "fade-from-left", "fast");

auto doc = createPresentationDocument(s1); doc.save("slides.odp"); ---

Create a chart document

--- import ddn.odf.document; import ddn.odf.chart;

auto x = chartAxis("x"); auto y = chartAxis("y"); auto s = dataSeries("Sheet1.A2:A10"); auto body = barChart(x, y, s);

auto doc = createChartDocument(body); doc.save("chart.odc"); ---

No exported symbols.