all2md.renderers.odp
ODP rendering from AST.
This module provides the OdpRenderer class which converts AST nodes to OpenDocument Presentation (.odp) format. The renderer uses odfpy to generate .odp files with proper slide layouts and formatting.
The rendering process splits the AST into slides using configurable strategies (separator-based or heading-based), converts each slide’s content to ODP shapes, and assembles a complete presentation.
- class all2md.renderers.odp.OdpRenderer
Bases:
NodeVisitor,BaseRendererRender AST nodes to ODP format.
This class converts an AST document into an OpenDocument Presentation using odfpy. It splits the document into slides based on configured strategy and generates proper slide layouts and content.
- Parameters:
options (OdpRendererOptions or None, default = None) – ODP rendering options
Examples
Basic usage:
>>> from all2md.options.odp import OdpRendererOptions >>> from all2md.ast import Document, Heading, Paragraph, Text >>> from all2md.renderers.odp import OdpRenderer >>> doc = Document(children=[ ... Heading(level=2, content=[Text(content="Slide 1")]), ... Paragraph(content=[Text(content="Content here")]) ... ]) >>> options = OdpRendererOptions() >>> renderer = OdpRenderer(options) >>> renderer.render(doc, "output.odp")
Initialize the ODP renderer with options.
- __init__(options: OdpRendererOptions | None = None)
Initialize the ODP renderer with options.
- render(doc: Document, output: str | Path | IO[bytes]) None
Render the AST to an ODP file.
- Parameters:
doc (Document) – AST Document node to render
output (str, Path, or IO[bytes]) – Output destination (file path or file-like object)
- Raises:
DependencyError – If odfpy is not installed
RenderingError – If ODP generation fails
- render_to_bytes(doc: Document) bytes
Render the AST to ODP bytes.
- Returns:
ODP file content as bytes
- Return type:
bytes
- visit_paragraph(node: Paragraph) None
Render a Paragraph node.
- Parameters:
node (Paragraph) – Paragraph to render
- visit_heading(node: Heading) None
Render a Heading node (non-title headings).
- Parameters:
node (Heading) – Heading to render
- visit_emphasis(node: Emphasis) None
Render an Emphasis node.
- Parameters:
node (Emphasis) – Emphasis to render
- visit_code_block(node: CodeBlock) None
Render a CodeBlock node.
- Parameters:
node (CodeBlock) – Code block to render
- visit_list_item(node: ListItem) None
Render a ListItem node.
- Parameters:
node (ListItem) – List item to render
- visit_block_quote(node: BlockQuote) None
Render block quote.
- visit_thematic_break(node: ThematicBreak) None
Render thematic break.
- visit_strikethrough(node: Strikethrough) None
Render strikethrough text.
- visit_superscript(node: Superscript) None
Render superscript text.
- visit_html_inline(node: HTMLInline) None
Skip inline HTML in ODP rendering.
- visit_footnote_reference(node: FootnoteReference) None
Render footnote reference.
- visit_footnote_definition(node: FootnoteDefinition) None
Skip footnote definitions in ODP rendering.
- visit_math_inline(node: MathInline) None
Render inline math as plain text.
- visit_definition_list(node: DefinitionList) None
Render definition list.
- visit_definition_term(node: DefinitionTerm) None
Render definition term as bold text.
- visit_definition_description(node: DefinitionDescription) None
Render definition description as indented text.
- visit_comment(node: Comment) None
Render a Comment node according to comment_mode option.
- Parameters:
node (Comment) – Comment block to render
Notes
Supports multiple rendering modes via comment_mode option: - “native”: Use ODF annotation elements (default) - “visible”: Render as visible text in slide content - “ignore”: Skip comment entirely
- visit_comment_inline(node: CommentInline) None
Render a CommentInline node according to comment_mode option.
- Parameters:
node (CommentInline) – Inline comment to render
Notes
Supports multiple rendering modes via comment_mode option: - “native”: Use ODF annotation elements (default) - “visible”: Render as visible italic text - “ignore”: Skip comment entirely