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.sheets[0].rows[0].cells[0];

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.