A document automation platform with a visual template designer, expression engine, and multi-format export/import, built on .NET 10 and React/TypeScript. Current validation and rollout gates are tracked in the rename checklist.
| Name | Meaning |
|---|---|
| PVADE | Platform, website and Designer display name |
| PVAD | Technical identity for APIs, packages, namespaces, CLI and configuration |
| PVADP / PVADS | PDF / Spreadsheet product names; native formats .pvadp / .pvads |
PXA / PXA.* |
Previous identity, retained only for documented compatibility and historical evidence |
- Drag-and-drop canvas with pixel-precise positioning and resize handles
- Element library: Text, RichText, Image, Table, Barcode, QR Code, Signature, Field, Checkbox, Shape (Rect, Circle, Line), Repeater, Chart, Note
- Word/DOCX-specific elements: Footnote, Endnote, Bookmark, Comment, Content Control
- Inspector panels per element type; layer ordering; multi-select
- Real-time data-binding preview with JSON payloads
- Multi-language text — per-element language tag (BCP-47) and LTR/RTL direction; canvas preview uses native browser shaping; PDF export embeds Noto fonts
- Document localization — active language tabs per document;
{{KEY}}template variables with Global (all languages, each fills own value) or Own (single-language) scope; Export Code panel shows language-specific JSON and C# code; multi-language ZIP export
{{ expression }}data binding with JSON-path resolution and fallbacks- Safe JavaScript expression evaluation (sandboxed)
- Conditional show/hide per element
- Repeater loops for tables and sections
- Value formatters: currency, date, number, text, custom
| Format | Notes |
|---|---|
Custom .NET renderer, no external library. Per-element: embedded Noto fonts (Arabic, Hebrew, CJK, Devanagari, Thai, Cyrillic), UTF-16BE encoding, RTL visual order. Document-level: {{KEY}} substitution with Global/Own property scopes; single-language or multi-language ZIP export |
|
| DOCX | Full OOXML: styles, footnotes, endnotes, bookmarks, comments, content controls, track changes, protection, digital signature |
| ODT | ODF 1.3 ZIP with draw frames for pixel-accurate layout |
| XLSX | Excel via ClosedXML |
| HTML | Inline-styled |
| CSV | Flat table export |
| Markdown | Text-based |
| PNG / JPEG / TIFF | Page-by-page image export; multi-page TIFF for print/archival |
| Format | Notes |
|---|---|
| PVAD importer/editable PDF model - page tree, text, paths, inline images, XObject images, marked content, clipping, colors, fonts, shading operators; bridge regeneration currently covers text, vector paths, JPEG/Flate XObject images, soft masks, and resource-preserved shading cases | |
| DOCX | OpenXML SDK — paragraphs, tables, inline images, typography |
| DOC | Pure C# CFBF parser — reads WordDocument stream via FIB offsets |
| ODT | System.IO.Compression + LINQ to XML — paragraphs, styles, draw:frame images |
| SVG | Dedicated SVG importer for vector-oriented PVAD designs |
| PPTX | PowerPoint slide import into PVAD pages/elements |
| Images | Raster image import plus image-analysis/OCR conversion paths |
- Find & Replace — plain-text, case-sensitive, whole-word, regex modes
- Clone — deep copy with fresh IDs and optional new name
- Extract Pages — subset of pages into a new document
- Digital Signing — OOXML XML-DSig (RSA-SHA256) with X.509/PFX certificate
- Track Changes / Revisions — per-element revision metadata +
<w:ins>/<w:del> - Document Protection — readOnly / comments / trackedChanges / formFields modes + password hash
- Named Styles — paragraph, character, list, table styles with inheritance (
basedOn/nextStyle) - Custom Document Properties — key/value pairs for DMS integration
- Footnotes & Endnotes, Bookmarks, Word-native Comments, Content Controls, Auto-Hyphenation
- Node.js 22+
- .NET 10 SDK
cd pvad-designer
npm install
npm run devOpens at http://localhost:5173
cd PVAD.WebApi
dotnet runAPI at http://localhost:5086 - Swagger UI at http://localhost:5086/swagger
POST /api/export # Export design to PDF/DOCX/ODT/XLSX/HTML/CSV/Markdown/PNG/JPEG/TIFF
GET /api/export/formats # List supported export formats
POST /api/document/find-replace # Find and replace across all text elements
POST /api/document/clone # Deep-clone a design with a new ID
POST /api/document/extract-pages # Extract a page subset into a new design
POST /api/document/sign-docx # Apply X.509 digital signature to a DOCX
POST /api/document/import-pdf-engine # Import PDF -> DesignExportDto through the PVAD importer facade
POST /api/document/debug-pdf-engine # Debug PDF importer output
POST /api/document/import-docx # Import DOCX → DesignExportDto
POST /api/document/import-doc # Import DOC (Word 97-2003) → DesignExportDto
POST /api/document/import-odt # Import ODT → DesignExportDto
POST /api/document/import-svg # Import SVG -> DesignExportDto
POST /api/document/import-pptx # Import PPTX -> DesignExportDto
POST /api/document/import-image # Import raster image -> DesignExportDto
POST /api/document/import-image-analysis # Import raster image through analysis pipeline
POST /api/document/convert-image-to-pdf # Convert raster image to PDF
GET /api/pvad/v1/migrations/catalog # Discover PDF, Spreadsheet, and Report providers
GET /api/pvad/v1/migrations/{domain}/{kind}/{provider} # Read one provider contract
GET /api/pvad/v1/migrations/{domain}/{kind}/{provider}/examples # Load backend-owned examples when available
POST /api/pvad/v1/migrations/{domain}/{kind}/{provider}/convert # Convert to typed migration artifacts
POST /api/pvad/v1/migrations/{domain}/{kind}/{provider}/preview # Preview providers that support it
# Compatibility adapters retained for one major release:
GET /api/migration/frameworks
POST /api/migration/convert
POST /api/migration/report-to-design
POST /api/migration/preview
GET /api/templates # List templates
POST /api/templates # Create template
GET /api/templates/{id} # Get template
POST /api/templates/render # Render template with data
POST /api/templates/render/async# Async render job
POST /api/templates/validate # Validate template
POST /api/templates/render-design # Render raw DesignExportDto
POST /api/templates/csharp-code-to-pdf # Compile C# → PDF
POST /api/templates/csharp-to-json # Compile C# → DesignExportDto JSON
POST /api/templates/csharp-code-to-json # Compile raw C# → JSON
POST /api/auth/login
POST /api/auth/logout
GET /api/auth/me
PVAD.WebApi ← ASP.NET Core presentation layer with stable API routes and PXA aliases
↓
PVAD.Application ← Use-case orchestration
↓
PVAD.Core ← Contracts, DTOs, abstractions
↑ (all infrastructure projects implement PVAD.Core contracts)
PVAD.Pdf ← Imperative PDF engine
PVAD.Infrastructure.Pdf ← Custom PDF renderer/services
PVAD.Importer ← Editable PDF parsing/model/rewrite/regeneration internals
PVAD.Infrastructure.Word ← DOCX exporter/importer, signing, style/footnote/comment services
PVAD.Infrastructure.Spreadsheet ← XLSX/CSV spreadsheet services
PVAD.Infrastructure.Converters ← ODT, HTML, CSV, Markdown, Image, TIFF exporters
PVAD.Domain ← Template/domain models
Frontend (pvad-designer/):
src/
components/
Editor/ ← SimplePvadSurface, ExportModal, FindReplaceModal, inspector panels
Gallery/ ← TemplatePage, CategoryFilter, TemplateCard
services/ ← ExportService (export, import, sign, find-replace, clone, extract)
hooks/ ← useTemplateLoader (loadTemplate, loadBlank, loadFromFile)
store.ts ← Zustand store with undo/redo and bulkReplaceContent
types.ts ← SimpleElement, Page, PageSettings, NamedStyle, CustomProperty, …
pages/ ← TemplatePage, EditorPage, HomePage
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Zustand, react-icons |
| Backend | .NET 10, ASP.NET Core |
| PDF export | Custom .NET renderer (no iTextSharp/PDFsharp) |
| PDF edit/regenerate | PVAD importer and PVAD.Pdf regeneration bridge |
| DOCX export/import | DocumentFormat.OpenXml 3.5.1 |
| DOCX signing | System.Security.Cryptography.Xml 10.0.8 (RSA-SHA256 XML-DSig) |
| Excel | ClosedXML |
| PDF import | PVAD importer low-level parser/object graph/editor pipeline |
| DOC import | Pure C# CFBF parser |
| ODT import/export | System.IO.Compression + LINQ to XML (ODF 1.3) |
| Image export | System.Drawing / SkiaSharp |
# Backend
dotnet test PVAD.sln
# Frontend
cd pvad-designer && npm testTest projects include PVAD.Core.Tests, PVAD.Application.Tests, PVAD.Infrastructure.Pdf.Tests, PVAD.Export.Tests, and PVAD.Api.Tests.
# Frontend production build
cd pvad-designer && npm run build
# Backend publish
cd PVAD.WebApi && dotnet publish -c Release
# Docker
docker build -f PVAD.WebApi/Dockerfile -t pvad-api:local .
# Retain the existing Compose project name and physical volumes.
node tools/configuration/pvad-compose.mjs up -dTo enable non-Latin PDF export, place Noto font files in the fonts/ directory next to the published assembly (or configure Pdf:FontsDirectory in appsettings.json). See fonts/README.md for the full list and download instructions.
| Document | Description |
|---|---|
ARCHITECTURE.md |
Project layer diagram and responsibilities |
PROJECT_SUMMARY.md |
Compact project inventory, endpoints, project groups, and test groups |
docs/index.md |
PVAD PDF engine quick start and API reference entry point |
pvad-designer/MULTILANGUAGE.md |
UI guide for per-element language and RTL controls |
fonts/README.md |
Noto font download and deployment instructions |
CONTRIBUTING_RENDERERS.md |
How to add renderers, importers, migrations, and report converters |
TESTING.md |
Test structure and conventions |
checklists/Documentation-Audit.md |
Documentation ownership map and update tracker |
checklists/PvadPdf-Provider-Feature-Gaps.md |
PVAD-compatible PDF feature gaps compared with major PDF providers |
| Topic | Start here |
|---|---|
| Architecture and boundaries | ARCHITECTURE.md |
| Product/project inventory | PROJECT_SUMMARY.md |
| PDF engine API | docs/index.md, docs/api/index.md, and docs/csharp-cookbook.md |
| Renderer/importer/migration contributions | CONTRIBUTING_RENDERERS.md |
| Test commands and project groups | TESTING.md |
| PDF provider migration status | checklists/Code-Migrations.md |
| Report migration status | checklists/Code-Migration-DevExpressReport.md, checklists/Code-Migration-SyncfusionRdl.md, checklists/Code-Migration-ActiveReportsRpx.md |
| PDF encryption | checklists/Pdf-Encryption.md |
| Importer roadmap | checklists/UI-Importer-Features.md, checklists/Importer-New-Featuers.md, checklists/PDF-Importer.md |
| UI and localization | pvad-designer/MULTILANGUAGE.md, checklists/UI-Improvements-2026.md, checklists/multi-languages.md |