jira-adf/html-to-adf

Convert HTML, Markdown, and Plain Text to Atlassian Document Format (ADF)

Installs: 330

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 2

Open Issues: 0

pkg:composer/jira-adf/html-to-adf

dev-main 2025-07-27 13:33 UTC

This package is auto-updated.

Last update: 2025-12-27 14:26:20 UTC


README

A PHP library to convert HTML, Markdown, and Plain Text into Atlassian Document Format (ADF) — compatible with Jira & Confluence.

Features

  • Recursive HTML parsing via DOM
  • Headings, Paragraphs, Emphasis, Strong, Links, Lists, Code Blocks, Tables, Images
  • Markdown-to-ADF using league/commonmark
  • Plain text support
  • Pluggable converter architecture
  • Composer-based install
  • Testable, extensible & PSR-compliant

Installation

composer require your-vendor/html-to-adf

Usage

Initialize ConverterManager and register converters

use HtmlToAdf\ConverterManager;
use HtmlToAdf\Converters\HtmlConverter;
use HtmlToAdf\Converters\MarkdownConverter;
use HtmlToAdf\Converters\PlainTextConverter;

$manager = new ConverterManager();
$manager->registerConverter(new HtmlConverter());
$manager->registerConverter(new MarkdownConverter());
$manager->registerConverter(new PlainTextConverter());

Convert HTML

$html = '<h2>Hello</h2><p>This is a <strong>test</strong>.</p>';
$adf = $manager->convert('html', $html);

print_r($adf);

Convert Markdown

$markdown = "## Hello\nThis is a **test**.";
$adf = $manager->convert('markdown', $markdown);

print_r($adf);

Convert Plain Text

$text = "Just a simple paragraph.";
$adf = $manager->convert('text', $text);

print_r($adf);

ADF Output Example

Input:

<p>Hello <strong>world</strong>!</p>

Output:

{
  "version": 1,
  "type": "doc",
  "content": [
    {
      "type": "paragraph",
      "content": [
        { "type": "text", "text": "Hello " },
        {
          "type": "text",
          "text": "world",
          "marks": [{ "type": "strong" }]
        },
        { "type": "text", "text": "!" }
      ]
    }
  ]
}

Architecture

Component Description
ConverterManager Manages format dispatching to converters
ConverterInterface Interface for pluggable format converters
HtmlConverter Parses DOM and builds ADF recursively
MarkdownConverter Uses CommonMark, then delegates to HTML
PlainTextConverter Wraps text in paragraph ADF structure
AdfNodeBuilder (Optional) Helps build consistent ADF output

Author

Cem Açar
cemacar03@gmail.com

License

Licensed under the MIT License.