# vsremoter/luxpdf architecture

> Architecture diagram of the GitHub repository vsremoter/luxpdf, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vsremoter/luxpdf
- Repository: https://github.com/vsremoter/luxpdf

## Overview

LuxPDF is a static, browser-based PDF, document, and image toolkit. A user selects a tool and local file; the shared converter UI validates input and presents tool-specific options, then conversion or editing code produces a downloadable result without uploading the file to an application server. The README documents a broad set of conversion, image, PDF organization, and security capabilities. The graph reflects those capabilities, but several tool implementations are grouped because the excerpts do not expose their individual runtime paths; unsampled relationships are not asserted.

Main entry points: [`script.js`](https://github.com/vsremoter/luxpdf/blob/main/script.js) (Script loader), [`scripts/pdf-converter-workflows.js`](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-workflows.js) (Tool workflows), [`scripts/pdf-converter-converters-a.js`](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-converters-a.js) (File conversions), [`word-to-pdf.html`](https://github.com/vsremoter/luxpdf/blob/main/word-to-pdf.html) (Tool pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experience"]
  node_tool_pages["Tool pages<br/>[word-to-pdf.html]"]
end

subgraph group_workflow["Tool workflow"]
  node_converter_ui["Converter UI"]
  node_tool_workflows["Tool workflows"]
  node_result_ui["Results UI"]
  node_downloads["Downloadable files"]
  node_loader["Script loader<br/>[script.js]"]
end

subgraph group_processing["Document processing"]
  node_conversions["File conversions"]
  node_document_formats["Document formats"]
  node_pdf_tools["PDF editing tools"]
  node_capture["DOM capture"]
  node_pptx_renderer["PPTX renderer<br/>[pptx-renderer.js]"]
  node_emf_renderer["EMF renderer<br/>[emf-renderer.js]"]
end

subgraph group_site["Site features"]
  node_related_tools["Related tools<br/>[related-tools.js]"]
  node_site_init["Site initialization"]
  node_theme["Theme controls<br/>[luxpdf-theme.js]"]
end

node_user(("User"))

node_user -->|"chooses tool"| node_tool_pages
node_tool_pages -.->|"provides interface"| node_converter_ui
node_converter_ui -.->|"configures workflow"| node_tool_workflows
node_tool_workflows -.->|"dispatches conversion"| node_conversions
node_tool_workflows -.->|"dispatches conversion"| node_document_formats
node_tool_workflows -.->|"dispatches tool"| node_pdf_tools
node_conversions -.->|"captures rendered DOM"| node_capture
node_conversions -->|"opens presentation"| node_pptx_renderer
node_pptx_renderer -.->|"renders metafiles"| node_emf_renderer
node_tool_workflows -->|"shows results"| node_result_ui
node_result_ui -.->|"offers output"| node_downloads
node_tool_pages -.->|"links related tools"| node_related_tools
node_loader -->|"loads script"| node_theme
node_loader -->|"loads script"| node_converter_ui
node_loader -->|"loads script"| node_tool_workflows
node_loader -->|"loads script"| node_capture
node_loader -->|"loads script"| node_conversions
node_loader -->|"loads script"| node_document_formats
node_loader -->|"loads script"| node_pdf_tools
node_loader -->|"loads script"| node_site_init

click node_tool_pages "https://github.com/vsremoter/luxpdf/blob/main/word-to-pdf.html"
click node_converter_ui "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-ui.js"
click node_tool_workflows "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-workflows.js"
click node_conversions "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-converters-a.js"
click node_document_formats "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-converters-b.js"
click node_pdf_tools "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-tools.js"
click node_capture "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-capture.js"
click node_pptx_renderer "https://github.com/vsremoter/luxpdf/blob/main/scripts/pptx-renderer.js"
click node_emf_renderer "https://github.com/vsremoter/luxpdf/blob/main/scripts/emf-renderer.js"
click node_result_ui "https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-workflows.js"
click node_related_tools "https://github.com/vsremoter/luxpdf/blob/main/related-tools.js"
click node_site_init "https://github.com/vsremoter/luxpdf/blob/main/scripts/luxpdf-site-init.js"
click node_theme "https://github.com/vsremoter/luxpdf/blob/main/scripts/luxpdf-theme.js"
click node_loader "https://github.com/vsremoter/luxpdf/blob/main/script.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_tool_pages,node_user toneBlue
class node_converter_ui,node_tool_workflows,node_result_ui,node_downloads,node_loader toneAmber
class node_conversions,node_document_formats,node_pdf_tools,node_capture,node_pptx_renderer,node_emf_renderer toneMint
class node_related_tools,node_site_init,node_theme toneRose
```

## Components

### Web experience

- [Tool pages](https://github.com/vsremoter/luxpdf/blob/main/word-to-pdf.html): `word-to-pdf.html`

### Tool workflow

- [Converter UI](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-ui.js): `scripts/pdf-converter-ui.js`
- [Tool workflows](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-workflows.js): `scripts/pdf-converter-workflows.js`
- [Results UI](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-workflows.js): `scripts/pdf-converter-workflows.js`
- **Downloadable files**
- [Script loader](https://github.com/vsremoter/luxpdf/blob/main/script.js): `script.js`

### Document processing

- [File conversions](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-converters-a.js): `scripts/pdf-converter-converters-a.js`
- [Document formats](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-converters-b.js): `scripts/pdf-converter-converters-b.js`
- [PDF editing tools](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-tools.js): `scripts/pdf-converter-tools.js`
- [DOM capture](https://github.com/vsremoter/luxpdf/blob/main/scripts/pdf-converter-capture.js): `scripts/pdf-converter-capture.js`
- [PPTX renderer](https://github.com/vsremoter/luxpdf/blob/main/scripts/pptx-renderer.js): `scripts/pptx-renderer.js`
- [EMF renderer](https://github.com/vsremoter/luxpdf/blob/main/scripts/emf-renderer.js): `scripts/emf-renderer.js`

### Site features

- [Related tools](https://github.com/vsremoter/luxpdf/blob/main/related-tools.js): `related-tools.js`
- [Site initialization](https://github.com/vsremoter/luxpdf/blob/main/scripts/luxpdf-site-init.js): `scripts/luxpdf-site-init.js`
- [Theme controls](https://github.com/vsremoter/luxpdf/blob/main/scripts/luxpdf-theme.js): `scripts/luxpdf-theme.js`

### Other components

- **User**

## Connections

- User → Tool pages: chooses tool (evidence: `Readme.md`)
- Tool pages → Converter UI: provides interface
- Converter UI → Tool workflows: configures workflow
- Tool workflows → File conversions: dispatches conversion
- Tool workflows → Document formats: dispatches conversion
- Tool workflows → PDF editing tools: dispatches tool
- File conversions → DOM capture: captures rendered DOM
- File conversions → PPTX renderer: opens presentation (evidence: `scripts/pdf-converter-converters-a.js`)
- PPTX renderer → EMF renderer: renders metafiles
- Tool workflows → Results UI: shows results (evidence: `scripts/pdf-converter-workflows.js`)
- Results UI → Downloadable files: offers output
- Tool pages → Related tools: links related tools
- Script loader → Theme controls: loads script (evidence: `script.js`)
- Script loader → Converter UI: loads script (evidence: `script.js`)
- Script loader → Tool workflows: loads script (evidence: `script.js`)
- Script loader → DOM capture: loads script (evidence: `script.js`)
- Script loader → File conversions: loads script (evidence: `script.js`)
- Script loader → Document formats: loads script (evidence: `script.js`)
- Script loader → PDF editing tools: loads script (evidence: `script.js`)
- Script loader → Site initialization: loads script (evidence: `script.js`)
