diff --git a/COPILOT_CONTEXT_EN.md b/COPILOT_CONTEXT_EN.md index 4eec5382..342d8ebb 100644 --- a/COPILOT_CONTEXT_EN.md +++ b/COPILOT_CONTEXT_EN.md @@ -657,6 +657,73 @@ button.style.left/top --- +## Signature Workflow in EnvelopeViewer — NEW Implementation (Session 13+) + +**IMPORTANT: iText7 NOT USED in EnvelopeViewer** +- **Reason:** GPL license incompatibility (requires source code sharing) +- **Alternative:** Client-side signature overlay system (HTML + Canvas API) +- **Export:** Signatures are visual overlays only, NOT stamped on PDF bytes +- **Future:** Consider PSPDFKit or commercial PDF library for actual PDF stamping + +### Signature Data Structure + +**Captured Signature (`_capturedSignature`):** +```csharp +record SignatureCapture( + string DataUrl, // base64 PNG: "data:image/png;base64,iVBORw0KG..." + string FullName, // Required: "Max Mustermann" + string Position, // Optional: "Geschäftsführer" + string Place // Required: "Berlin" +); +``` + +**Applied Signature (per SignatureDto):** +```javascript +{ + signatureId: 42, + dataUrl: "data:image/png;base64,iVBORw0KG...", + fullName: "Max Mustermann", + position: "Geschäftsführer", + place: "Berlin", + date: "15.01.2025", + x: 108, // PDF POINTS (already converted from INCHES) + y: 144, // PDF POINTS + width: 150, // pixels + height: 60 // pixels +} +``` + +### Workflow Steps + +**Step 1: Signature Creation Popup** +- Reuse `DxPopup` from ReportViewer.razor +- 3 tabs: Draw / Text / Image (using `receiver-signature.js`) +- Fields: Full name, Position (optional), Place +- Click "Speichern" ? `_capturedSignature` saved to state + +**Step 2: Apply Signature to Canvas** +- User clicks "Unterschreiben" button on PDF +- JavaScript creates HTML overlay (NOT Canvas drawing) +- Overlay repositions on zoom/page change +- **NO PDF byte modification** (GPL license issue) + +**Step 3: Visual Display Only** +- Signatures shown as HTML `