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 familiesddn.odf.mimetype-- MIME type handling and detectionddn.odf.manifest-- ODF manifest (META-INF/manifest.xml) supportddn.odf.metadata-- Document metadata (title, author, dates, etc.)ddn.odf.content-- Content body parsing and serialisationddn.odf.style-- Style parsing, typed accessors (chart, presentation, section, ruby, graphic, drawing page, table, text, paragraph)ddn.odf.text--.odttext body model, 21 node kinds, builder functionsddn.odf.table--.odsspreadsheet model, 8 cell types, formulas, buildersddn.odf.draw--.odgdrawing model, 20 shape kinds, pages, layers, connectorsddn.odf.presentation--.odpslide model, transitions, animations, placeholdersddn.odf.chart--.odcchart model, 14 chart types, axes, series, legendsddn.odf.math--.odfformula model, MathML preservationddn.odf.image--.odiimage document modelddn.odf.database--.odbdatabase package model (preservation-first)ddn.odf.embedded-- Cross-family embedded object scanningddn.odf.validation-- Structural validation and diagnosticsddn.odf.compat-- Version detection, generator identification, compatibility handlingddn.odf.flat-- Flat XML ODF (.fodt/.fods) read/write support
Internal submodules (not re-exported)
ddn.odf.common-- Shared errors, options, diagnosticsddn.odf.container-- ZIP package adapter (wrapsddn.archive.zip)ddn.odf.xml-- XML adapter (wrapsddn.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.