Skip to content

PlantUML diagrams from the Cloud plantumlcloud macro are silently dropped from the export #290

Description

@stn1slv

Description

Pages that contain diagrams from the Flowchart, PlantUML Diagrams for Confluence app export with the diagram missing entirely: no code block, no image, and no marker of any kind. The surrounding text is exported normally, so the omission is easy to miss.

docs/features.md links to this exact marketplace app and states that PlantUML is "exported as fenced PlantUML code blocks", so the documented behaviour and the actual behaviour differ.

Command:

cme pages https://company.atlassian.net/wiki/spaces/KEY/pages/123/Title

Expected: a fenced ```plantuml block per diagram, as already happens for the Server/Data Center plantuml macro.

Actual: nothing is emitted where each diagram was.

Cause

On Confluence Cloud, this app registers the macro name plantumlcloud, not plantuml. The macro_handlers map in Page.Converter.convert_div (confluence_markdown_exporter/confluence.py) dispatches plantuml only, so plantumlcloud falls through to super().convert_div(...).

It is a Connect (iframe) app, so body.view contains only an empty placeholder:

<div class="ap-container conf-macro output-block" data-macro-name="plantumlcloud" data-macro-id="...">
  <div class="ap-content"> </div>
  <script>...</script>
</div>

markdownify drops <script>, and ap-content is empty, so the fall-through converts the children to an empty string. The app also writes nothing usable to body.editor2.

The diagram source is present, but only in body.storage, in the macro's data parameter:

<ac:structured-macro ac:name="plantumlcloud" ac:macro-id="...">
  <ac:parameter ac:name="filename">diagram.svg</ac:parameter>
  <ac:parameter ac:name="data">...</ac:parameter>
  <ac:parameter ac:name="compressed">true</ac:parameter>
</ac:structured-macro>

The data value decodes with the mxgraph/draw.io pipeline: base64 decode, raw DEFLATE inflate (wbits = -15), percent-decode. When the sibling compressed parameter is absent or not true, the deflate step is skipped. Confirmed against a page holding 5 such diagrams; all 5 decoded to plain @startuml ... @enduml text.

Notes

Because the macro is unhandled rather than explicitly skipped, there is no warning and no placeholder comment, so an export can lose every diagram on a page without any signal to the user.

A fix is proposed in #289.

Version

confluence-markdown-exporter 5.3.0

Confluence Version

Confluence Cloud

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions