Skip to content
silentdevcorePublic

About

Canvas: PDF importer and scene graph editing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

593 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PVADE - Document Automation Platform

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.


Naming Glossary

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

Features

Visual Template Designer

  • 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

Template Engine

  • {{ 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

Export Formats

Format Notes
PDF 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

Import Formats

Format Notes
PDF 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

Document Operations (API)

  • 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

Document Features

  • 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

Quick Start

Prerequisites

  • Node.js 22+
  • .NET 10 SDK

Frontend

cd pvad-designer
npm install
npm run dev

Opens at http://localhost:5173

Backend

cd PVAD.WebApi
dotnet run

API at http://localhost:5086 - Swagger UI at http://localhost:5086/swagger


API Reference

Export

POST /api/export                  # Export design to PDF/DOCX/ODT/XLSX/HTML/CSV/Markdown/PNG/JPEG/TIFF
GET  /api/export/formats          # List supported export formats

Document Operations

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

Migrations

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

Templates

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

Auth

POST /api/auth/login
POST /api/auth/logout
GET  /api/auth/me

Architecture

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

Technology Stack

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

Testing

# Backend
dotnet test PVAD.sln

# Frontend
cd pvad-designer && npm test

Test projects include PVAD.Core.Tests, PVAD.Application.Tests, PVAD.Infrastructure.Pdf.Tests, PVAD.Export.Tests, and PVAD.Api.Tests.


Deployment

# 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 -d

Multi-Language PDF — Font Files

To 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.


Further Documentation

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

Documentation Map

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

About

Canvas: PDF importer and scene graph editing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages