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.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"); ---