# fahmikip/pdf-all-in-one architecture

> Architecture diagram of the GitHub repository fahmikip/pdf-all-in-one, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fahmikip/pdf-all-in-one
- Repository: https://github.com/fahmikip/pdf-all-in-one

## Overview

PDF Master is an offline Windows desktop toolkit: users select a document and operation in the PySide6 interface, then save a new local result. The README documents broad PDF editing, conversion, OCR, forms, and batch capabilities; source excerpts confirm the page-organizing implementation, background-worker behavior, OCR integrations, and update flow. Most feature-page-to-engine wiring was not sampled, so those links are intentionally omitted rather than inferred.

Main entry points: [`ui/pages`](https://github.com/fahmikip/pdf-all-in-one/tree/main/ui/pages) (Tool pages), [`ui/main_window.py`](https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/main_window.py) (Main window), [`core/jobs/worker.py`](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/jobs/worker.py) (Background worker), [`core/pdf`](https://github.com/fahmikip/pdf-all-in-one/tree/main/core/pdf) (PDF tools)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Desktop interface"]
  node_window["Main window<br/>[main_window.py]"]
  node_pages["Tool pages"]
  node_settings["Settings<br/>[settings.py]"]
  node_historyui["Operation history<br/>[history.py]"]
end

subgraph group_pdf["PDF operations"]
  node_organize["Page organization<br/>[page_manager.py]"]
  node_pdfops["PDF tools"]
  node_edit["Editing and forms"]
end

subgraph group_conversion["Conversion and OCR"]
  node_convert["File conversion<br/>[converter.py]"]
  node_office["Office conversions"]
  node_ocr["OCR engine<br/>[ocr_engine.py]"]
end

subgraph group_runtime["Runtime support"]
  node_main["Application entry<br/>[main.py]"]
  node_worker["Background worker<br/>[worker.py]"]
  node_history[("Local history<br/>[history.py]")]
  node_config[("App configuration<br/>[config.py]")]
  node_updater["Update service<br/>[updater.py]"]
end

subgraph group_integrations["External integrations"]
  node_libreoffice["LibreOffice"]
  node_tesseract["Tesseract"]
  node_ghostscript["Ghostscript"]
  node_github["GitHub releases"]
end

node_user(("Desktop user"))
node_files[("Local documents")]

node_user -->|"uses"| node_window
node_main -->|"starts"| node_window
node_window -->|"displays"| node_pages
node_window -->|"displays"| node_settings
node_window -->|"displays"| node_historyui
node_window -->|"dispatches"| node_worker
node_user -->|"selects"| node_files
node_pages -->|"reads and saves"| node_files
node_pages -->|"organizes pages"| node_organize
node_pages -->|"offers PDF tools"| node_pdfops
node_pages -->|"offers editing"| node_edit
node_pages -->|"offers conversion"| node_convert
node_pages -->|"offers Office conversion"| node_office
node_pages -->|"offers OCR"| node_ocr
node_worker -->|"runs task"| node_organize
node_worker -->|"runs task"| node_pdfops
node_worker -->|"runs task"| node_edit
node_worker -->|"runs task"| node_convert
node_worker -->|"runs task"| node_office
node_worker -->|"runs task"| node_ocr
node_pages -->|"records operations"| node_history
node_historyui -->|"reads history"| node_history
node_window -->|"loads settings"| node_config
node_settings -->|"updates settings"| node_config
node_office -.->|"converts with"| node_libreoffice
node_ocr -.->|"runs OCR with"| node_tesseract
node_pdfops -.->|"compresses with"| node_ghostscript
node_window -->|"checks updates"| node_updater
node_window -->|"requests installer"| node_updater
node_updater -->|"checks and downloads"| node_github

click node_main "https://github.com/fahmikip/pdf-all-in-one/blob/main/app/main.py"
click node_window "https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/main_window.py"
click node_pages "https://github.com/fahmikip/pdf-all-in-one/tree/main/ui/pages"
click node_settings "https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/pages/settings.py"
click node_historyui "https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/pages/history.py"
click node_worker "https://github.com/fahmikip/pdf-all-in-one/blob/main/core/jobs/worker.py"
click node_organize "https://github.com/fahmikip/pdf-all-in-one/blob/main/core/pdf/page_manager.py"
click node_pdfops "https://github.com/fahmikip/pdf-all-in-one/tree/main/core/pdf"
click node_edit "https://github.com/fahmikip/pdf-all-in-one/tree/main/core/pdf"
click node_convert "https://github.com/fahmikip/pdf-all-in-one/blob/main/core/pdf/converter.py"
click node_office "https://github.com/fahmikip/pdf-all-in-one/tree/main/core/office"
click node_ocr "https://github.com/fahmikip/pdf-all-in-one/blob/main/core/ocr/ocr_engine.py"
click node_history "https://github.com/fahmikip/pdf-all-in-one/blob/main/core/utils/history.py"
click node_config "https://github.com/fahmikip/pdf-all-in-one/blob/main/app/config.py"
click node_updater "https://github.com/fahmikip/pdf-all-in-one/blob/main/core/utils/updater.py"

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_window,node_pages,node_settings,node_historyui,node_user toneBlue
class node_organize,node_pdfops,node_edit,node_files toneAmber
class node_convert,node_office,node_ocr toneMint
class node_main,node_worker,node_history,node_config,node_updater toneRose
class node_libreoffice,node_tesseract,node_ghostscript,node_github toneIndigo
```

## Components

### Desktop interface

- [Main window](https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/main_window.py): `ui/main_window.py`
- [Tool pages](https://github.com/fahmikip/pdf-all-in-one/tree/main/ui/pages): `ui/pages`
- [Settings](https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/pages/settings.py): `ui/pages/settings.py`
- [Operation history](https://github.com/fahmikip/pdf-all-in-one/blob/main/ui/pages/history.py): `ui/pages/history.py`

### PDF operations

- [Page organization](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/pdf/page_manager.py): `core/pdf/page_manager.py`
- [PDF tools](https://github.com/fahmikip/pdf-all-in-one/tree/main/core/pdf): `core/pdf`
- [Editing and forms](https://github.com/fahmikip/pdf-all-in-one/tree/main/core/pdf): `core/pdf`

### Conversion and OCR

- [File conversion](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/pdf/converter.py): `core/pdf/converter.py`
- [Office conversions](https://github.com/fahmikip/pdf-all-in-one/tree/main/core/office): `core/office`
- [OCR engine](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/ocr/ocr_engine.py): `core/ocr/ocr_engine.py`

### Runtime support

- [Application entry](https://github.com/fahmikip/pdf-all-in-one/blob/main/app/main.py): `app/main.py`
- [Background worker](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/jobs/worker.py): `core/jobs/worker.py`
- [Local history](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/utils/history.py): `core/utils/history.py`
- [App configuration](https://github.com/fahmikip/pdf-all-in-one/blob/main/app/config.py): `app/config.py`
- [Update service](https://github.com/fahmikip/pdf-all-in-one/blob/main/core/utils/updater.py): `core/utils/updater.py`

### External integrations

- **LibreOffice**
- **Tesseract**
- **Ghostscript**
- **GitHub releases**

### Other components

- **Desktop user**
- **Local documents**

## Connections

- Desktop user → Main window: uses
- Application entry → Main window: starts
- Main window → Tool pages: displays
- Main window → Settings: displays
- Main window → Operation history: displays
- Main window → Background worker: dispatches
- Desktop user → Local documents: selects
- Tool pages → Local documents: reads and saves
- Tool pages → Page organization: organizes pages
- Tool pages → PDF tools: offers PDF tools
- Tool pages → Editing and forms: offers editing
- Tool pages → File conversion: offers conversion
- Tool pages → Office conversions: offers Office conversion
- Tool pages → OCR engine: offers OCR
- Background worker → Page organization: runs task
- Background worker → PDF tools: runs task
- Background worker → Editing and forms: runs task
- Background worker → File conversion: runs task
- Background worker → Office conversions: runs task
- Background worker → OCR engine: runs task
- Tool pages → Local history: records operations
- Operation history → Local history: reads history
- Main window → App configuration: loads settings
- Settings → App configuration: updates settings
- Office conversions → LibreOffice: converts with
- OCR engine → Tesseract: runs OCR with
- PDF tools → Ghostscript: compresses with
- Main window → Update service: checks updates
- Main window → Update service: requests installer
- Update service → GitHub releases: checks and downloads
